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


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.