En me relisant, je me dis que je ne suis pas très explicite. Donc un
bout de code (compact) pour illustrer le propos :
Sub essaiToto
Dim sPlage as String, oPlage As Object, oRange As Object
sPlage =
Thiscomponent.Sheets.getByName("Feuille1").getCellRangeByName("Toto").AbsoluteName
oPlage =
Thiscomponent.Sheets.getByName("Feuille1").getCellRangeByName(sPlage)
oRange = oPlage.RangeAddress
MsgBox "Feuille : " & oRange.Sheet & chr(10) & _
"Haut Gauche : " & oRange.StartColumn & "," &
oRange.StartRow & chr(10) & _
"Bas Droite : " & oRange.EndColumn & "," & oRange.EndRow,
64, "Index de la plage fusionnée"
End Sub
Pour l'utilisation directe de .AbsoluteName, c'est 2 splits avec
variables intermédiaires ou 3 splits en mode compact (sans variables
intermédiaires)... Version 2 splits :
Sub essaiToto2
Dim oSheet As Object, sPlage As String
oSheet = Thiscomponent.Sheets.getByName("Feuille1")
sPlage = oSheet.getCellRangeByName("Toto").AbsoluteName
Dim aInfosF() As String, aInfosCell() As String, sFeuille As String
Dim sHautGauche As String, sBasDroite As String
aInfosF = split(sPlage, ".") : sFeuille = aInfosF(0)
aInfosCell = split(aInfosF(1), ":")
sHautGauche = aInfosCell(0) : sBasDroite = aInfosCell(1)
MsgBox sFeuille & chr(10) & sHautGauche & chr(10) & sBasDroite
End Sub
Je vous laisse la version 3 splits sans variables en devoir de vacances...
^^
> From: rudelle.michel@gmail.com
> To: pref-open-office@haute-garonne.gouv.fr; users@fr.libreoffice.org
> Subject: RE: [fr-users] Calc macro - Trouver plage associée à une
cellule fusionnée
> Date: Tue, 13 Aug 2013 12:17:41 +0200
>
> … suite
>
>
>
> Voici ce que j’ai trouvé avec l’aide de l’enregistreur de macro à
partir de
> l’idée du forum OOo, pas très élégant mais ça marche, à adapter bien
sûr au
> contexte (je ne sais pas pourquoi il est dit dans le forum que ça ne
marche
> pas)
>
> Le principe : j’ai une plage fusionnée : E17:K21. J’utilise le
dispatcher
> pour me positionner sur la première cellule E17, puis en me déplaçant
> toujours grâce au dispatcher un coup en bas et un coup à droite, je
trouve
> les deux adresses des cellules adjacentes à la plage :
>
> adresseDessous = $Feuille1.$E$22
>
> adresseAdroite = $Feuille1.$L$17
>
> A partir de là, on peut aisément déduire que la dernière cellule de
la plage
> est K21
>
>
>
>
>
> Sub cherchePlage
>
>
>
> Dim document as Object, dispatcher as Object, adresseDessous As String,
> adresseAdroite As String
>
> dim args1(0) as new com.sun.star.beans.PropertyValue
>
>
>
> document = ThisComponent.CurrentController.Frame
>
> dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
>
>
>
> 'rechercher cellule dessous
>
> args1(0).Name = "ToPoint"
>
> args1(0).Value = "$E$17"
>
> dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())
>
> dispatcher.executeDispatch(document, ".uno:JumpToNextCell", "", 0,
Array())
>
>
>
> adresseDessous = thiscomponent.currentSelection.AbsoluteName
>
>
>
> 'rechercher cellule à droite
>
> args1(0).Name = "ToPoint"
>
> args1(0).Value = "$E$17"
>
> dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())
>
>
>
> dim args3(1) as new com.sun.star.beans.PropertyValue
>
> args3(0).Name = "By"
>
> args3(0).Value = 1
>
> args3(1).Name = "Sel"
>
> args3(1).Value = false
>
>
>
> dispatcher.executeDispatch(document, ".uno:GoRight", "", 0, args3())
>
>
>
> adresseAdroite = thiscomponent.currentSelection.AbsoluteName
>
>
>
> End Sub
>
>
>
>
>
> Bonne journée,
>
> Michel
>
> _____
>
> De : Michel Rudelle [mailto:rudelle.michel@gmail.com]
> Envoyé : mardi 13 août 2013 11:11
> À : 'claude'; 'libreoffice'
> Objet : RE: [fr-users] Calc macro - Trouver plage associée à une cellule
> fusionnée
>
>
>
> Bonjour,
>
> Ce n’est pas un problème de version et ma réponse était idiote :(
>
> En effet, elle contenait la réponse, car j’avais défini toto nommée
comme
> E17:K21 (cellules effectivement fusionnées)
>
> La même chose en définissant le nom toto uniquement sur la première
E17 ne
> permet pas de connaître l’étendue de la plage fusionnée et en effet,
je ne
> trouve pas de méthode.
>
> J’ai une idée qui me trotte derrière la tête, je vais essayer dans la
> journée, on ne sait jamais …
>
> Bonne journée,
>
> Michel
>
>
>
> _____
>
> De : claude [mailto:pref-open-office@haute-garonne.gouv.fr]
> Envoyé : mardi 13 août 2013 08:07
> À : Michel Rudelle
> Cc : 'claude'; 'libreoffice'
> Objet : Re: RE: [fr-users] Calc macro - Trouver plage associée à une
cellule
> fusionnée
>
>
>
> -------- Message original --------
> Sujet : [INTERNET] RE: [fr-users] Calc macro - Trouver plage associée à
> une cellule fusionnée
> De : Michel Rudelle <mailto:rudelle.michel@gmail.com>
> <rudelle.michel@gmail.com>
> Pour : 'claude' <mailto:pref-open-office@haute-garonne.gouv.fr>
> <pref-open-office@haute-garonne.gouv.fr>, 'libreoffice'
> <mailto:users@fr.libreoffice.org> <users@fr.libreoffice.org>
> Date : 12/08/2013 17:57
>
> Bonjour,
>
>
>
> De : claude [mailto:pref-open-office@haute-garonne.gouv.fr]
> Envoyé : lundi 12 août 2013 17:24
>
> Je n'arrive pas à trouver dans les propriétés d'une cellule fusionnée la
> plage associée qui me donnerait la première et la dernière cellule
> concernée par cette fusion .
> J'ai juste trouvé la propriété "merged" ou pas !!!
>
>
>
> Essai rapide:
>
> Sub essaiToto
> Dim cellule As Object, objetAdresse As Object, plage as String
> cellule =
> Thiscomponent.Sheets.getByName("Feuille1").getCellRangeByName("toto")
> objetAdresse = cellule.RangeAddress
> plage = cellule.AbsoluteName
> End Sub
>
> toto est une plage nommée fusionnée (5x7) dans ma Feuille1
> objetAdresse est l'objet qui décrit la plage
> et plage donne directement la chaîne (par ex: $Feuille1.$D$17:$J$21)
>
> Est-ce que ça répond ?
>
> Bonne soirée,
> Michel
>
>
>
> Désolée mais moi çà me donne que l'adresse de la première cellule
> Peut être un roblème de version ? Je suis en LibreOffice 3.5.7.2 MIMO
>
> Merci quand même
>
> Claude
>
>
> --
> Envoyez un mail à users+unsubscribe@fr.libreoffice.org pour savoir
comment vous désinscrire
> Les archives de la liste sont disponibles à
http://listarchives.libreoffice.org/fr/users/
> Tous les messages envoyés sur cette liste seront archivés
publiquement et ne pourront pas être supprimés
>