Bonjour,
Cela fonctionne mais Il faudra perfectionner le code qui renvoie
l'adresse de chaque cellule contenue dans une fusion. Dans le code
ci-dessous, l'adresse de chaque cellule est renvoyée avec la zone de fusion.
Claude
option explicit
sub RenvoiAdresse()
' feuille active colonne cellule active ligne cellule active
Dim document As Object
Dim feuille_active As Object
Dim cellule_active As Object
document = ThisComponent
feuille_active = document.currentController.activeSheet
'Ne fonctionne que si la sélection en cours est une cellule
dim y as object
y = document.getCurrentSelection
if
ThisComponent.currentSelection.supportsService("com.sun.star.sheet.SheetCell")
then
Dim c as integer
cellule_active = document.getCurrentSelection
'OOo travaille avec un index commençant à 0 : on ajoute donc + 1
c = cellule_active.CellAddress.Column + 1
r = cellule_active.CellAddress.Row + 1
msgbox c &", " &r
else
if
ThisComponent.currentSelection.supportsService("com.sun.star.sheet.SheetCellRange")
then
dim x as object
dim cellule as object
dim curseur as object
dim i as double
dim j as double
x = document.getCurrentSelection.rangeaddress
msgbox "début sélection colonne" & x.startcolumn+1 & ",
ligne " & x.startrow+1 & " fin sélection colonne " & x.endcolumn+1 &
", ligne " &x.endrow+1
' traitement de chauqe cellule
for i =x.startcolumn to x.endcolumn
for j = x.startrow to x.endrow
cellule = document.sheets(0).getcellbyposition(i,j)
curseur = document.sheets(0).createCursorByRange(cellule)
curseur.collapseToMergedArea
with curseur.RangeAddress
if .StartColumn <> .EndColumn or .StartRow <>
.EndRow then
msgbox "cellule fusionnée " &
curseur.AbsoluteName & chr(13) &_
"Col deb : " & .StartColumn & chr(13) &_
"Col fin : " & .EndColumn & chr(13) &_
"Lig deb : " & .StartRow & chr(13) &_
"Lig fin : " & .EndRow
else
msgbox "cellule normale " & chr(13) &_
"Col " & .StartColumn & chr(13) &_
"Lig " & .StartRow & chr(13)
endif
end with
next j
next i
else
msgbox "non traité sélections multilples"
end if
end if
End sub
Le 14/09/2021 à 08:28, François SEGUIN a écrit :
Bonjour,
Après plusieurs essais avec la version 7.1.5 si j'ai une seule cellule
sélectionnée CellAdress fonctionne. Par contre j'ai aussi des cellules
fusionnée et c'est la que ça ne fonctionne plus alors qu'avec une
version antérieure ça marche.
Dès que j'ai du temps je vais refaire des essais avec ton code pour
voir si ça peut marcher
Merci de ton aide
Sincères salutations
*F**rançois SEGUIN
* Tél : 06-83-48-82-38
Le 13/09/2021 à 20:33, prog.amateur@free.fr a écrit :
Je viens de ré-installer la version 7.1.5. Le dernier cas pour lequel
cela ne fonctionne pas et renvoie une erreur est le cas d'une
sélection de cellules non contiguës.
A tester
/sub RenvoiAdresse()//
//
//' feuille active colonne cellule active ligne cellule active//
//Dim document As Object//
//Dim feuille_active As Object//
//Dim cellule_active As Object//
//document = ThisComponent//
//feuille_active = document.currentController.activeSheet//
//'Ne fonctionne que si la sélection en cours est une cellule //
//dim y as object//
//y = document.getCurrentSelection//
//if
ThisComponent.currentSelection.supportsService("com.sun.star.sheet.SheetCell")
then//
// Dim c as integer//
// cellule_active = document.getCurrentSelection//
// 'OOo travaille avec un index commençant à 0 : on ajoute
donc + 1//
// c = cellule_active.CellAddress.Column + 1//
// r = cellule_active.CellAddress.Row + 1//
// msgbox c &", " &r//
// else//
// if
ThisComponent.currentSelection.supportsService("com.sun.star.sheet.SheetCellRange")
then//
//
// dim x as object//
// x = document.getCurrentSelection.rangeaddress//
// msgbox "début sélection colonne" & x.startcolumn+1 & ",
ligne " & x.startrow+1 & " fin sélection colonne " & x.endcolumn+1
& ", ligne " &x.endrow+1//
// else//
// msgbox "non traité sélections multilples"//
// end if//
//end if//
//
//End sub/
Le 13/09/2021 à 17:17, prog.amateur@free.fr a écrit :
Bonjour,
Celladdress n'est valable que si la sélection est une cellule.
Sinon il faut utiliser rangeaddress
Tu peux vérifier avec ce bout de code.
Claude
/sub RenvoiAdresse()//
//
//' feuille active colonne cellule active ligne cellule active//
//Dim document As Object//
//Dim feuille_active As Object//
//Dim cellule_active As Object//
//document = ThisComponent//
//feuille_active = document.currentController.activeSheet//
//'Ne fonctionne que si la sélection en cours est une cellule //
//if
ThisComponent.currentSelection.supportsService("com.sun.star.sheet.SheetCell")
then//
// Dim c as integer//
// cellule_active = document.getCurrentSelection//
// 'OOo travaille avec un index commençant à 0 : on ajoute
donc + 1//
// c = cellule_active.CellAddress.Column + 1//
// r = cellule_active.CellAddress.Row + 1//
// msgbox c &", " &r//
// else//
// dim x as object//
// x = document.getCurrentSelection.rangeaddress//
// msgbox "début sélection colonne" & x.startcolumn+1 & ",
ligne " & x.startrow+1 & " fin sélection colonne " & x.endcolumn+1
& ", ligne " &x.endrow+1//
//
//end if//
//
//End sub/
Le 13/09/2021 à 08:41, François SEGUIN a écrit :
Bonjour,
Je viens de mettre à jour ma version libre office en V7.1.5 et j'ai
une macro qui fonctionnait dans les versions précédentes qui
maintenant génère une erreur.
Dans un tableur je récupèrais le numéro de ligne du curseur avec
l'instruction suivante :
Numligne = MonDocument.CurrentSelection.CellAddress.Row
Lors de l'éxécution de ma macro, j'ai maintenant le message de
défaut suivant :Propriété ou méthode non trouvée : CellAddress.
En vérifiant avec XRAY (commande XRAY MonDocument.CurrentSelection)
la propriété CellAdress n'apparait plus dans la liste. Par ou doit
on passer maintenant?
--
Envoyez un mail à users+unsubscribe@fr.libreoffice.org pour vous désinscrire
Les archives de la liste sont disponibles à https://listarchives.libreoffice.org/fr/users/
Privacy Policy: https://www.documentfoundation.org/privacy
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.