Enlever la protection des feuille pendant une macro

Adz

XLDnaute Nouveau
Bonjour,
Voila, je suis en train de faire un programme en VBA, et j'ai verrouillé toutes les feuilles pour ne pas qu'on puisse écrire dans les cellules.
Le probleme c'est que lorsque j'exécute une macro, cette macro doit écrire dans les cellules et par conséquent mon programme plante.

J'aimerais donc savoir s'il y a un moyen de faire en sorte qu'à chaque début de macro qui se lance, une autre macro se lance avant (pour dévérouiller totues les feuilles) et qu'à la fin de la macro, toutes les feuilles se revérouillent.

Je vous remercie ^^, A++
 

Adz

XLDnaute Nouveau
Re : Enlever la protection des feuille pendant une macro

Merci ^^.
Mais je pensais qu'il y avait une procédure qui permettait d'exécuter une macro automatiquement au démarrage et a la fin d'une autre macro, comme un auto_opent et auto_close pour l'ouverture et fermeture d'un fichier.
Ciao
 

BOCARAMEL

XLDnaute Occasionnel
Re : Enlever la protection des feuille pendant une macro

Bonjour Adz, ROGER2327, HIJACK
Le forum

si j'ai bien compris la question :confused:
A METTRE DANS UN MODULE
Code:
sub deverouille()
sheets("feuil1").Unprotect
sheets("feuil2").Unprotect
sheets("feuil3").Unprotect
end sub
sub verouille()
sheets("feuil1").protect
sheets("feuil2").protect
sheets("feuil3").protect
end sub

rajouter devant chacune de tes macros call deverouille
et a la fin
call verouille

cdlmt
bocaramel :)
 

ROGER2327

XLDnaute Barbatruc
Re : Enlever la protection des feuille pendant une macro

Re...
Merci ^^.
Mais je pensais qu'il y avait une procédure qui permettait d'exécuter une macro automatiquement au démarrage et a la fin d'une autre macro, comme un auto_opent et auto_close pour l'ouverture et fermeture d'un fichier.
Ciao
Si vous déverrouillez automatiquement les feuilles à l'ouverture, tous les utilisateurs pourront modifier tout ce qu'ils veulent. (Inutile de se compliquer la vie avec un protection dans ce cas.) J'avais cru comprendre que c'était précisément ce que vous vouliez éviter.
Si vous voulez autoriser n'importe quel utilisateur à exécuter une procédure, ajoutez simplement ActiveSheet.Unprotect au début de la procédure si elle soit s'exécuter sur la seule feuille active, ou
Code:
[COLOR="DarkSlateGray"]
Dim i As Long
   For i = 1 To Worksheets.Count
      Worksheets(i).Unprotect
   Next i
[/COLOR]
si elle soit s'exécuter sur toutes les feuilles.
A la fin de la procédure, ajoutez ActiveSheet.Protect contents:=True pour protéger la feuille active ou
Code:
[COLOR="DarkSlateGray"]
Dim i As Long
   For i = 1 To Worksheets.Count
      Worksheets(i).Protect contents:=True
   Next i
[/COLOR]
pour protéger toutes les feuilles.
ROGER2327
 

Discussions similaires

Statistiques des forums

Discussions
312 491
Messages
2 088 889
Membres
103 982
dernier inscrit
krakencolas