Déprotéger tous les classeurs ouverts

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 !

mikael2235

XLDnaute Occasionnel
Bonjour à tous,

Je cherche à faire une macro qui me permettrait de tester sur tous les classeurs ouverts, si ceux-ci sont protégés, et de les déprotéger avec le mot de passe toto.

J'ai essayer ceci mais je rencontre des problèmes. Pour le 1er classeur ça fonctionne mais pour les autres ils ne les active pas.

Code:
Sub MacroH()

Application.DisplayAlerts = False

'
a = (Format(Now(), "n"))
b = InputBox("code secret ?")

If b = a Then
    For Each Workbook In Application.Workbooks
        Workbook.Activate
        ActiveSheet.Unprotect Password:="toto"
        MsgBox ("fichier déprotégé")
    Next
Else
    MsgBox ("Utilisation interdite !")
    Exit Sub
End If

End Sub

Merci pour votre aide.
 
Re : Déprotéger tous les classeurs ouverts

Moi en fait je veus déprotéger, les feuilles qui sont actives sur tous les classeurs ouverts.

Ma macro fonctionne sur le classeur actif, il me déprotège la feuille active.
Mais par contre, il ne passe pas aux classeurs suivants.

Merci
 
Re : Déprotéger tous les classeurs ouverts

Re
dans ta boucle tu dois préciser la feuille que tu veux déprotèger
For Each Workbook In Application.Workbooks
Workbook.Activate
sheets(titre de l'onglet).unprotect...
ActiveSheet.Unprotect Password:="toto"


MsgBox ("fichier déprotégé")
Next
 
Re : Déprotéger tous les classeurs ouverts

Le problème est que mon nom peut changer en fonction des classeurs.

Et je voudrais que la macro fonctionne pour n'importe quel classeur ouvert.

Et je ne pense pas être obligé de préciser le nom de la feuille puisque j'utilise ActiveSheet.

Il faut juste que j'arrive à changer de classeur !
 
Re : Déprotéger tous les classeurs ouverts

Merci sousou pour le rappel !

Mais en l'occurence je ne cherche pas à activer la feuille puis la déprotéger, mais je cherche à déprotéger la feuille qui est active

Je veux que la macro ne teste QUE sur les feuilles actives.

ça ce n'est pas compliqué en soit, mais le problème est de sélectionner un autre classeur ouvert, tant qu'il y en a !
 
Re : Déprotéger tous les classeurs ouverts

Bonjour mikael, sousou

regarde le code ci-dessous si il peut t'aider :
Code:
Option Explicit
Sub test()
Dim wb As Workbook, ws As Worksheet
For Each wb In Workbooks
    For Each ws In wb.Worksheets
        ws.Unprotect "toto"
    Next ws
Next wb
End Sub

A noter qu'en vba il est rarement nécessaire d'activer / sélectionner des objets...

bonne journée
@+
 
Re : Déprotéger tous les classeurs ouverts

Bonjour.
évite d'utiliser des objet excel en variable (workbook) et essai cela:

For Each Classeur In Application.Workbooks
classeur.Activate

ActiveSheet.Unprotect Password:="toto"
MsgBox ("fichier déprotégé")
Next
 
- 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

Discussions similaires

Réponses
3
Affichages
922
  • Question Question
Microsoft 365 Bug dans export TXT
Réponses
6
Affichages
644
Retour