Bonjour,

Effectivement j'ai trouvé une version AOO avec laquelle cela ne fonctionne pas. 
:(
Donc on reprend le schmilblick avec une autre approche :

Sub essaiToto3
Dim oSheet as Object, oPlage As Object, oRange As Object
    oSheet = Thiscomponent.Sheets.getByName("Feuille1")
    oPlage = oSheet.getCellRangeByName("Toto")

    IF oPlage.isMerged Then
        ' On annule la fusion des cellules et...
        ' ô miracle la sélection porte sur la plage anciennement fusionnée ;)
        oPlage.Merge(False)
        ' On récupère donc le RangeAddress
        oRange = ThisComponent.CurrentSelection.RangeAddress
        ' et on refait la fusion, autant remettre en l'état, isn't ?
        oPlage.Merge(True)
    End If

    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

Cordialement

> Date: Tue, 20 Aug 2013 09:02:39 +0200
> From: [email protected]
> To: [email protected]
> Subject: [fr-users] Re:     RE: [fr-users] Calc macro - Trouver plage 
> associée à une cellule fusionnée
> 
> Bonjour,
> 
> Merci à tous mais pour moi il n'y a que la méthode avec le dispatcher 
> qui fonctionne.
> 
> La macro de Patrice ne me renvoie que la première cellule de la plage 
> fusionnée
> 
> Claude
> 
> -------- Message original --------
> Sujet : [INTERNET]   RE: [fr-users] Calc macro - Trouver plage associée 
> à une cellule fusionnée
> De : VEDEL Patrice <[email protected]>
> Pour : Michel Rudelle <[email protected]>, 'claude' 
> <[email protected]>, 'libreoffice' 
> <[email protected]>
> Date : 13/08/2013 16:47
> > 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
> 
                                          
-- 
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 à