Date: prev next · Thread: first prev next last
2013 Archives by date, by thread · List index


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 <patvedel@hotmail.com>
Pour : Michel Rudelle <rudelle.michel@gmail.com>, 'claude' <pref-open-office@haute-garonne.gouv.fr>, 'libreoffice' <users@fr.libreoffice.org>
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: 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
>



--
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

Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.