[Résolu][Calc] Étendre une zone nommée

Discussions et questions sur tout ce qui concerne la programmation tous langages et tous modules confondus.

Modérateur : Vilains modOOs

Règles du forum
:alerte: Balisage obligatoire dans cette section !
Aidez-nous à vous aider au mieux en balisant correctement votre question : reportez-vous sur les règles de cette section avant de poster !
Avatar de l’utilisateur
cypher.sephiroth
Membre OOrganisé
Membre OOrganisé
Messages : 90
Inscription : 09 janv. 2012 17:10
Localisation : 31

[Résolu][Calc] Étendre une zone nommée

Message par cypher.sephiroth »

Bonjour à tous,
Dans ma macro, j'ai une zone nommée que je souhaite étendre. Je ne me suis pas méfiée, j'ai allègrement utilisé addNewByName, avant de lire dans la Bible de la programmation OpenOffice que cette fonction n'est que pour créer des nouvelles zones nommées. Je suis eue !
Dans ce classeur, la macro intègre des données provenant de la feuille "DATA" sur une feuille "Trav", et je cherche à créer une zone nommée concernant uniquement les sous-section égales à 1.

Code : Tout sélectionner

	Dim docTrav As Object, lesFeuilles As Object, feuilleTrav As Object
	Dim feuilleDonnees As Object, zonesNommees As Object, cellsOrig As Object
	Dim cellsDest As Object, uneCellule As Object, zoneNommee As Object
	Dim NumLigne As Integer, NewLigne As Integer
	
	docTrav = ThisComponent
	lesFeuilles = docTrav.Sheets
	feuilleDonnees = lesFeuilles.getByName("DATA")
	feuilleTrav = lesFeuilles.getByName("Trav")
	zoneNommee = docTrav.NamedRanges
	
	NumLigne = 1
	NewLigne = 2
	
	While feuilleDonnees.getCellByPosition(0, NumLigne - 1).Type <> com.sun.star.table.CellContentType.EMPTY
		cellsOrig = feuilleDonnees.getCellRangeByName("A" & NumLigne & ":C" & NumLigne)
		cellsDest = feuilleTrav.getCellRangeByName("A" & NewLigne & ":C" & NewLigne)
		cellsDest.DataArray = cellsOrig.DataArray

		If feuilleDonnees.getCellRangeByName("C" & NewLigne).Value = 1 Then
			uneCellule = feuilleTrav.getCellRangeByName("C" & NewLigne)
			zoneNommee.addNewByName("Sous-Section égale à 1", uneCellule.AbsoluteName, uneCellule.CellAddress, 0)
		End If
		NumLigne = NumLigne + 1
		NewLigne = NewLigne + 1
	Wend
 Ajout : Enfin, si c'est pas possible, je saurais le comprendre, hein ! :) 
Vous ne pouvez pas consulter les pièces jointes insérées à ce message.
Dernière modification par cypher.sephiroth le 07 févr. 2012 15:05, modifié 1 fois.
J'utilise LibreOffice 4.3.6.2 sur Windows 7 64 bits pro
--
Et parfois, ça fait "Coin !"...
bm92
ManitOOu
ManitOOu
Messages : 2562
Inscription : 26 nov. 2005 13:42

Re: [Calc] Étendre une zone nommée

Message par bm92 »

Bonjour,
As-tu essayé de créer une zone nommée via le menu Insertion > Nom, comportant plusieurs zones ? Ce n'est pas possible.
Le contenu d'une zone nommée est documenté ainsi (interface XNamedRange, méthode getContent)
La documentation API a écrit :The content can be a reference to a cell or cell range or any formula expression.
Une cellule ou une zone ou une formule. C'est tout.
Bernard

OpenOffice.org 1.1.5 fr / Apache OpenOffice 4.1.1 / LibreOffice 5.0.5.2 (X64)
MS-Windows 7 SP1 64bits Familial
Avatar de l’utilisateur
cypher.sephiroth
Membre OOrganisé
Membre OOrganisé
Messages : 90
Inscription : 09 janv. 2012 17:10
Localisation : 31

Re: [Calc] [Résolu] Étendre une zone nommée

Message par cypher.sephiroth »

Ça peut ptet être possible en passant par des zones non-nommées que l'on baptise à la fin...
Bon, de toutes façons, j'ai fait tourner la macro d'origine (Excel), et les zones nommées ne semblent pas plus existante. Merci de toute cette peine !
J'utilise LibreOffice 4.3.6.2 sur Windows 7 64 bits pro
--
Et parfois, ça fait "Coin !"...