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 comme devoir de vacances...
^^
> From: [email protected]
> To: [email protected]; [email protected]
> CC: [email protected]
> Subject: [fr-users] RE: [fr-users] Re: RE: [fr-users] Calc macro -
> Trouver plage associée à une cellule fusionnée
> Date: Tue, 13 Aug 2013 12:38:52 +0000
>
> Bonjour,
>
> La solution de Michel me semble plus élégante car :
>
> - soit on récupère une chaîne contenant le nom de la feuille et le nom des
> cellules délimitant le merge : deux split permettent d'isoler les infos,
> - soit on repart de l'objet objetAdresse (objetAdresse =
> cellule.RangeAddress) et puisque c'est un type RangeAddress :
> objetAdresse.Sheet donne l'index de la feuille,
> objetAdresse.StartColumn et objetAdresse.StartRow, les index de
> la cellule haut gauche,
> objetAdresse.EndColumn et objetAdresse.EndRow, les index de la
> cellule bas droite.
>
> Testé sous AOO et LO.
>
>
> > Date: Tue, 13 Aug 2013 08:07:24 +0200
> > From: [email protected]
> > To: [email protected]
> > CC: [email protected]; [email protected]
> > Subject: [fr-users] 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 <[email protected]>
> > Pour : 'claude' <[email protected]>, 'libreoffice'
> > <[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