[calc]Cellules protégées et macro

Bonjour

Je pensais qu'avec une macro, on pouvait modifier une cellule protégée.
Mais, il me semble que ce n'est pas le cas :frowning:

Est-il possible de déprotéger une feuille avec une macro et de la
reprotéger en fin de macro ?

Bonjour,

Pour déprotéger
    Feuille.unprotect("mdp") ' enlever le mot de passe
    Feuille.unprotect("") ' sans mot de passe
Pour protéger
    Feuille.protect("mdp") 'avec mot de passe
    Feuille.protect("") 'sans mot de passe

Feuille étant bien sur l'objet feuille à traiter.

Claude

Merci ça marche.

Mais, je suis déçu de la protection des cellules même par macro. S'il
existait une possiblité de protéger, mais pas des macros, ce serait pas mal.

Bonsoir,

Curieux, chez moi, après vérification, la macro arrive bien à écrire dans des cellules protégées..

Win 10 -  Calc 6.2.3.2

Macro
    doc=thisComponent
    f=doc.Sheets.getByName("Ecrire") ' la feuille sur laquelle on va travailler
    lg=0
    col=5
    cel=f.getCellByPosition(col,lg)
    'Ecrire des chiffres
    cel.value=1  'On écrit un nombre -> VALUE
    For col=6 To 10
        cel=f.getCellByPosition(col,lg)
        cel.value=col-4
    Next col

Christian F

Bonjour,

Curieux, chez moi, après vérification, la macro arrive bien à écrire dans des cellules protégées..

oui, l'intérêt de l'écriture par macro est qu'elle court-circuite la protection (utiliser la propriété Model aide souvent en ce domaine en cas de blocage par accès une propriété directe).

Il est cependant intéressant de noter que des opérations portant sur des plages de cellules/des feuilles nécessitent des feuilles non protégées ; c'est le cas du tri, par exemple.

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

Bonsoir,

Curieux, chez moi, après vérification, la macro arrive bien à écrire
dans des cellules protégées..

Win 10 -  Calc 6.2.3.2

J'ai la même version sous linux. Pourtant, j'avais bien ce problème !

Je regarde de plus près, en fait, voici un extrait des instruction.

f_recto.getCellByPosition(21,6).String=f_profil.getCellByPosition(6,i).String
     
f_recto.getCellByPosition(11,9).FormulaLocal="="+f_profil.getCellByPosition(7,i).String

Si je laisse la feuille protégée, je peux changer avec la première
ligne, mais pas avec la seconde. Les ".String" passent, mais pas les
".FormulaLocal"

Effectivement "formulaLocal" ne passe pas, mais "formula" tout court passe bien

C'est quoi la différence entre ces deux items ?

Bonjour,

Entre autres, "Formula" utilise les noms de fonction de base 'en anglais) alors que "FormulaLocal" permet d'utiliser les noms de fonctions locales (par exemple Somme au lieu de Sum).
Apparemment aussi, Formula passe sur une feuille protégée alors que FormulaLocal, non ..
cf, notamment, https://forum.openoffice.org/fr/forum/viewtopic.php?f=15&t=14627

Au passage, je pense que, tant qu'à faire des programmes autant tout travailler en anglais : date, séparateur décimal, nom de fonction .. etc. Mélanger les langues te les références peut être pénible et peut conduire à des erreurs.Donc autant utiliser Formula .. et puis c'est plus court à écrire ..

Bon courage

Christian F

Pour ma part, même formula ne passe pas quand c'est protégé.

Heu... Même déprotégé formula ne passe pas ??