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


Yo

Effectivement, je n'ai pas testé les références liées à de la plage nommée.
Il m'aurait semblé que le définition de la plage, même erronée le temps du unmerge/merge, serait 
restée en l'état.
Il est possible que nos codeurs aient jugé bon d'actualiser en live... Ou qu'il s'agit d'une 
"fonctionnalité non documentée". ^^

La manip sur l'étendue du merge n'implique pas nécessairement d'automatiser une redéfinition de la 
zone nommée. 
J'aurai même tendance à penser que ce n'est pas plus mal de la laisser en l'état, même si le 
premier automatisme peut se défendre.

Ce qui ramène à l'aspect pratique de l'utilisation du dispacher : on ne touche à rien = on n'a rien 
à sauvegarder pour une restauration ultérieure ==> on se contente de se déplacer.

Par contre, la perte de la référence complète du RangeAddress est à mon sens une régression.
Je ne sais pas trop où elle a commencé avec LO, si tant est de LO ait renvoyé une RangeAddress 
complet dans une version (ce qui ne fait pas partie des essais que je peux faire, croyant naïvement 
que c'est une chose bouclée qui peut difficilement évoluer en mal...)
De plus, rapidement les essais m'ont conduit à attendre patiemment la 4.1.1.  Comprendre : je ne 
teste, sur LO, que ponctuellement ^^

Les compteurs ayant commencé à défiler en 4.0.x, les 4.1.x vont "viendre"... ^^

;)


Date: Thu, 22 Aug 2013 08:21:38 +0200
From: pref-open-office@haute-garonne.gouv.fr
CC: users@fr.libreoffice.org
Subject: Re:     RE: [fr-users] Re:     RE: [fr-users] Calc macro - Trouver plage associée à une 
cellule fusionnée

Bonjour,

J'ai juste testé sur un classeur vierge. j'ai fusionné quelques 
cellules. j'ai nommé cette plage "toto" et j'ai lancé la macro.

Quant à refusionner, moi je ne fais rien puisque dans la macro, il est 
noté "et on refait la fusion, autant remettre en l'état, isn't ?
 oPlage.Merge(True)"

Et quand la macro a été exécutée une fois je me retrouve avec aucune 
cellule fusionnée et la plage "toto" fait référence à la première 
cellule de l'ancienne plage fusionnée.

Claude

-------- Message original --------
Sujet : [INTERNET]   RE: [fr-users] Re:     RE: [fr-users] Calc macro - 
Trouver plage associée à une cellule fusionnée
De : VEDEL Patrice <patvedel@hotmail.com>
Pour : claude <pref-open-office@haute-garonne.gouv.fr>, 'libreoffice' 
<users@fr.libreoffice.org>
Date : 21/08/2013 03:44
Tu me surprends un peu : [mais cela ne fonctionne qu'une fois et cela 
ne donne que la dernière ligne de fusion mais la colonne mais si on  
recommence les cellules sont dé-fusionnées]
Cela fonctionne une fois normalement ? ou à plus ou moins une fois ?
Les cellules non fusionnées, c'est AMHA moins grave : où est comment 
tu refusionnes.? Selon le cas, il suffit de resélectionner à partir de 
oRange avant de lancer la fusion.

Donc, si ton fichier n'a rien de confidentiel, ce serait bien de le 
joindre et, s'il l'est, tu peux toujours effacer les contenus 
sensibles : le truc c'est de voir ton contexte, pas le contenu du fichier.


Date: Tue, 20 Aug 2013 17:15:35 +0200
From: pref-open-office@haute-garonne.gouv.fr
To: users@fr.libreoffice.org
Subject: Re: RE: [fr-users] Re: RE: [fr-users] Calc macro - Trouver 
plage associée à une cellule fusionnée

Encore une fois, merci d'essayer mais cela ne fonctionne qu'une fois et
cela ne donne que la dernière ligne de fusion mais la colonne mais 
si on
recommence les cellules sont dé-fusionnées.

Désolée

Bonne soirée

Claude

-------- Message original --------
Sujet : [INTERNET] RE: [fr-users] Re: RE: [fr-users] Calc macro -
Trouver plage associée à une cellule fusionnée
De : VEDEL Patrice <patvedel@hotmail.com>
Pour : claude <pref-open-office@haute-garonne.gouv.fr>, 'libreoffice'
<users@fr.libreoffice.org>
Date : 20/08/2013 16:39
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: pref-open-office@haute-garonne.gouv.fr
To: users@fr.libreoffice.org
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 <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




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

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