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


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.