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+unsubscr...@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