XL 2010 MACRO Protéger toutes les feuilles de plusieurs classeurs

  • Initiateur de la discussion Initiateur de la discussion nonoTT
  • 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 !

nonoTT

XLDnaute Occasionnel
Bonjour le forum
Je cherche à mettre au point une macro qui me permettrai de protéger tous les classeurs sélectionnés par l'utilisateur dans un répertoire à choisir par l'utilisateur, puis pour ces fichiers protéger toutes les feuilles de ces classeurs.
J'ai déjà le code pour protéger l'ensemble des feuilles d'un classeur, par contre (mes connaissances des macros étant limitées) je n'arrive pas à mettre au point le reste de la macro me permettant de sélectionner les classeurs.

Code:
Sub Protection()
Dim wbMyWb As Workbook
Dim Nom_Fichier As Variant
Nom_Fichier = Application.GetOpenFilename("Fichiers Excel (*.xlsx), *.xlsx", , , , True)
If Nom_Fichier <> False Then
   Set wbMyWb = Workbooks.Open(Nom_Fichier)
  wbMyWb.Activate

code = InputBox("Saisissez ci dessous le code de verrouillage du classeur")
For i = 1 To Sheets.Count
Sheets(i).Protect Password:=code
Next i

End If

wbMyWb.Close

End Sub

Merci de votre aide.
Arnaud
 
Bonjour nonoTT,

Peut-être comme ceci:
VB:
Sub Protection()
Dim wbMyWb As Workbook
Dim Nom_Fichier As String
Dim code As String
Dim i As Integer, j As Integer

Application.ScreenUpdating = False

With Application.FileDialog(msoFileDialogFilePicker)
    .InitialFileName = "C:" 'à adapter
    .Filters.Clear
    .Title = "Sélectionner un ou plusieurs fichiers"
    .Show
    If .SelectedItems.Count = 0 Then: Exit Sub
    For i = 1 To .SelectedItems.Count
        Nom_Fichier = .SelectedItems(i)
        Set wbMyWb = Workbooks.Open(Nom_Fichier)
        code = InputBox("Saisissez ci dessous le code de verrouillage du classeur")
        For j = 1 To wbMyWb.Sheets.Count
            wbMyWb.Sheets(j).Protect Password:=code
        Next j
        wbMyWb.Close (True)
    Next i
End With

Application.ScreenUpdating = True

End Sub
 
Merci de ta réponse, ça marche
J'ai juste modifié le code de la manière suivante afin de n'avoir à saisir le code qu'une fois.
Encore merci
Code:
Sub Protection()
Dim wbMyWb As Workbook
Dim Nom_Fichier As String
Dim code As String
Dim i As Integer, j As Integer

Application.ScreenUpdating = False

With Application.FileDialog(msoFileDialogFilePicker)
    .InitialFileName = "C:" 'à adapter
    .Filters.Clear
    .Title = "Sélectionner un ou plusieurs fichiers"
    .Show
    If .SelectedItems.Count = 0 Then: Exit Sub
    code = InputBox("Saisissez ci dessous le code de verrouillage du classeur")
    For i = 1 To .SelectedItems.Count
        Nom_Fichier = .SelectedItems(i)
        Set wbMyWb = Workbooks.Open(Nom_Fichier)
        'code = InputBox("Saisissez ci dessous le code de verrouillage du classeur")
        For j = 1 To wbMyWb.Sheets.Count
            wbMyWb.Sheets(j).Protect Password:=code
        Next j
        wbMyWb.Close (True)
    Next i
End With

Application.ScreenUpdating = True

End Sub
 
- 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
9
Affichages
385
Réponses
3
Affichages
537
Réponses
3
Affichages
522
  • Question Question
Microsoft 365 Export données
Réponses
4
Affichages
503
Retour