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


Bonsoir et merci pour cette macro.

Je m'en étais finalement sorti avec l'enregistreur en enregistrant les actions  : Édition -> Sélectionner -> Sélectionner les cellules non protégées. Le code de la macro contenait une remarque indésirable, je l'ai enlevée, et ça tourne :
REM  *****  BASIC  *****
sub Main
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:SelectUnprotectedCells", "", 0, Array())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:ClearContents", "", 0, Array())
end sub
Cela s'applique à toutes les cellules non verrouillées.

L'intérêt de ta macro c'est qu'elle définit aussi la plage sur laquelle elle doit s'appliquer. Ça me sera utile pour un autre fichier où je ne veux pas forcément effacer toutes les cellules déverrouillées.

Merci !
@+
Luc

Le 23/05/2019 à 22:18, jean-francois a écrit :
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,



--
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.