Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

OpenOffice & LibreOffice Discussion :

Protéger / déprotéger une cellule avec une macro


Sujet :

OpenOffice & LibreOffice

  1. #1
    Membre à l'essai
    Protéger / déprotéger une cellule avec une macro
    Bonjour,

    J'ai utilisé l'enregistreur de macro afin d'obtenir un code permettant de protéger une cellule :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    sub ProtegeCellule
    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 ----------------------------------------------------------------------
    dim args1(0) as new com.sun.star.beans.PropertyValue
    args1(0).Name = "ToPoint"
    args1(0).Value = "$H$5"
     
    dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())
     
    rem ----------------------------------------------------------------------
    dim args2(3) as new com.sun.star.beans.PropertyValue
    args2(0).Name = "Protection.Locked"
    args2(0).Value = true
    args2(1).Name = "Protection.FormulasHidden"
    args2(1).Value = true
    args2(2).Name = "Protection.Hidden"
    args2(2).Value = false
    args2(3).Name = "Protection.HiddenInPrintout"
    args2(3).Value = true
    dispatcher.executeDispatch(document, ".uno<img src="images/smilies/icon_razz.gif" border="0" alt="" title=":P" class="inlineimg" />rotection", "", 0, args2())
    end sub


    Cette macro fonctionne bien mais je me demandais si il n'y avait pas plus simple comme par exemple :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    ofeuille.ocellule.protect = True


    Par avance merci de votre aide.

    Bien sincèrement

  2. #2
    Membre habitué
    Protection cellule
    Bonjour,
    En partant du principe que : La protection d’une cellule n’est activée que lorsque la feuille est protégée

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim laProtection As New com.sun.star.util.CellProtection
    laProtection.IsFormulaHidden = True
    maCellule.CellProtection = laProtection
    maFeuille.protect("OpenOffice") ' mettre un mot de passe
    maFeuille.protect("") ' sans mot de passe


    Cordialement
    Libre Office Version: 6.3.4.2 (x64)
    Windows 10

  3. #3
    Membre à l'essai
    Bonjour Mobydick_62,
    Merci de m'avoir mis sur la bonne voix...
    Comme je souhaitais protéger simplement une cellule, j'ai remplacé :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    laProtection.IsFormulaHidden = True


    par

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    laProtection.IsLocked = True


    Encore Merci.
    Bien sincèrement.

###raw>template_hook.ano_emploi###