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: [email protected]
> To: [email protected]; [email protected]
> 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:[email protected]] 
> 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:[email protected]] 
> 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:[email protected]>
> <[email protected]>
> Pour : 'claude'  <mailto:[email protected]>
> <[email protected]>, 'libreoffice'
> <mailto:[email protected]> <[email protected]>
> Date : 12/08/2013 17:57
> 
> Bonjour,
>  
>   
> 
> De : claude [mailto:[email protected]]
> 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 à [email protected] 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
> 
                                          
-- 
Envoyez un mail à [email protected] 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

Répondre à