Protéger et déprotéger une feuille

  • Initiateur de la discussion Initiateur de la discussion Jean-Marc
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

J

Jean-Marc

Guest
Bonjour

Quelqu'un pourrait m'aider sur deux macros.

J'utilise Excel 97 en réseau, malheureusement je reçois toujour une erreur quand je lance ma macro.

"Erreur d'exécution '1004':
"La méthode Protect de la classe Worksheet a échoué"


' Protection automatique de toutes les feuilles d'un classeur
Private Sub Protéger_Click()
Dim nombre As Integer, i As Integer
nombre = ActiveWorkbook.Sheets.Count
Application.ScreenUpdating = False
For i = 1 To nombre
Worksheets(i).Protect Password:="advance"
Next i
End Sub


' Déprotection automatique de toutes les feuilles d'un classeur
Private Sub Déprotéger_Click()
Dim nombre As Integer, i As Integer
nombre = ActiveWorkbook.Sheets.Count
Application.ScreenUpdating = False
For i = 1 To nombre
Worksheets(i).Unprotect Password:="advance"
Next i
End Sub

Alors si quelqu'un aurait une idée, Welcome!!!

De plus je voudrais applique un code identique mais pour protéger et partager le classeur et le déprotéger.

Merci

Jean-Marc
 
Bonsoir Jean-Marc
Avec Excel 2000, tes macros fonctionnent très bien.
Mais avec Excel 97 il me semble bien ( mais il faudrait que je puisse le vérifier) que l'on a un message d'erreur si on essaie de protéger une feuille qui est déjà protégée.
Vérifie, peut-être que le problème vient de là
Bonne soirée
 
rebonsoir,
Essaie alors , dans ta macro de protection, de commencer par déprotéger toutes tes feuilles puis ensuite de les protéger.
En effet il me semble que l'erreur ne se manisfeste pas si on essaie de déprotéger une feuille qui n'est pas protégée.
Sinon, il te reste la solution de gérer les erreurs dans ta macro avec une instruction "on error goto ..."

Bonne chance
 
Bonsoir Jean-Marc,

tu pourrais par exemple transformer ta macro comme suit :

Private Sub protéger_Click()
Dim nombre As Integer, i As Integer
nombre = ActiveWorkbook.Sheets.Count
Application.ScreenUpdating = False
For i = 1 To nombre
Worksheets(i).Unprotect Password:="advance"
Next i
On Error Resume Next
For i = 1 To nombre
Worksheets(i).Protect Password:="advance"
Next i
End Sub

L'instruction On error resume next permet de ne pas être arrêté par une erreur mais il ne résout pas le problème.
Pour avoir de plus amples explications sur la gestion des erreurs dans les macros, je te conseille (lorsque tu auras ajouté cette instruction dans ta macro) de sélectionner le mot error puis d'appuyer sur la touche F1 pour pouvoir consulter l'aide en ligne de Visual Basic.
Bon courage et bonne soirée
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
498
Réponses
3
Affichages
677
Réponses
16
Affichages
1 K
  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
177
Réponses
10
Affichages
799
  • Question Question
Microsoft 365 Code VBA
Réponses
7
Affichages
821
Retour