Bonsoir Luc,
Le 23/05/2019 à 10:08, Luc Mamin a écrit :
Dans un fichier tableur, j'ai besoin de pouvoir effacer rapidement le
contenu des cellules "déverrouillées".
Je pensais passer par une macro.
J'ai débuté par l'enregistreur de macro et je parviens partiellement à
mes fins.
Ce que je n'arrive pas à faire, c'est la sélection des seules cellules
désirées.
l'enregistreur ne permet pas cette finesse.
Si tu veux parcourir une plage et agir sur les seules cellules non
protégées, il te faut utiliser un énumérateur.
Voici un exemple, tiré de l'aide-mémoire n°3 (verso - "Parcourir les
cellules d'une plage"), voir ici :
https://documentation.libreoffice.org/assets/Uploads/Documentation/en/MACROS/RefCards/LibOBasic-3-Calc-Flat-A4-EN-v111.pdf
Principe :
À partir d’une collection (Plages.Cells) on crée une énumeration.
Celle-ci est parcourue en appelant ses propriétés hasMoreElements et
NextElement.
8< ---------------------------------------------------------------
Dim MaFeuille As Object 'l'objet feuille qui contient la plage
Dim MaPlage As Object 'l'objet plage à parcourir
Dim Plages As Object 'la collection de plages qui fournit l'énumérateur
Dim Cellule As Object 'la cellule en cours
Dim LEnum As Object 'l'énumérateur
MaFeuille = ThisComponent.Sheets(0) 'ici, la 1ere feuille du classeur
MaPlage = MaFeuille.getCellRangeByName("C4:C37")
Plages = ThisComponent.createInstance("com.sun.star.sheet.SheetCellRanges")
Plages.insertByName("", MaPlage)
LEnum = Plages.Cells.CreateEnumeration
Do While LEnum.hasMoreElements
Cellule = LEnum.NextElement
'appliquer un traitement à partir de l'objet Cellule
'ex:
'If Not Cellule.IsProtected Then Cellule.String = ""
Loop
---------------------------------------------------------------- >8
J'ai déposé une feuille démo ici :
https://framadrop.org/r/xIsgqcIQiN#J6CD4/bJH8GruOtCt1WEaNL77pKOhQk8CvcwrQcUmJI=
Si vous répondez, merci de penser à utiliser la fonction "répondre à
tous" de votre logiciel de courrier électronique de façon que la liste
reçoive une copie de votre réponse.
Très cordialement,
Si vous répondez, merci de penser à utiliser la fonction "répondre à
tous" de votre logiciel de courrier électronique de façon que la liste
reçoive une copie de votre réponse.
Bien cordialement,
--
Jean-Francois Nifenecker, Bordeaux
--
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.