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