(De)Proteger plusieurs feuilles sélectionnées en même temps (Résolu)

jeje77

XLDnaute Junior
Bonjour,

Est-il possible d'enlever (ou protéger) plusieurs feuilles sélectionnées dans un classeur via une macro ?

J'arrive à sélectionner plusieurs feuilles mais le code me déprotège l'ensemble des feuilles du classeur au lieu de ne s'occuper que des feuilles sélectionnées.

pour info : (Sheets(Array("1" à "31"sont les feuilles que je veut oter ou mettre la protection)
voila la macro qui me pose probleme


Sub AaaSectFeuille()
'
' AaaSectFeuille Macro
'
MotPass = "++++"

Sheets(Array("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", _
"16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31")) _
.Select
Range("A6 : D6").Select

nombre = ActiveWorkbook.Sheets.Count
Application.ScreenUpdating = False
For i = 1 To nombre
Worksheets(i).Unprotect Password:=(MotPass)
Next i

End Sub

d'avance merci

cordialement
 

herve62

XLDnaute Barbatruc
Supporter XLD
Re : (De)Proteger plusieurs feuilles sélectionnées en même temps

Bonsoir
A mon avis ..mais bon ?
Il faudrait te mettre ( ton code) dans un module ou autre qui ne fasse pas partie de ces feuilles
car là il me semble que tu boucles ??
Code:
Sheets(Array("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", _"16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31")) _
    .Select
 

Roland_M

XLDnaute Barbatruc
Re : (De)Proteger plusieurs feuilles sélectionnées en même temps

bonsoir,

plus simplement !?

Code:
Sub AaaSectFeuille()
MotPass = "++++"
Sheets(Array("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", _
"16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31")).Select
Selection.Unprotect MotPass
End Sub
 

Papou-net

XLDnaute Barbatruc
Re : (De)Proteger plusieurs feuilles sélectionnées en même temps

Bonsoir jeje77, Fervé, Roland,

Sauf erreur de ma part, on ne peut agir simultanément sur la protection d'un ensemble d'onglets.

Je propose donc d'utiliser le tableau Array au sein d'une boucle:

Code:
Sub AaaSectFeuille()
motpass = "++++"

For f = 1 To UBound(Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 , ..... ,31)) + 1
  Sheets(f).Protect
Next
End Sub
Cordialement.
 

jeje77

XLDnaute Junior
Re : (De)Proteger plusieurs feuilles sélectionnées en même temps

bonsoir et merci pour vos réponses,

Roland_M, lorsque j'applique ton code lorsque ça arrive à la ligne : Selection.Unprotect MotPass une erreur d’exécution 438 s'affiche et le message propriété ou méthode non gérée par cet objet est affiché.

j'avoue que je ne comprend pas bien ce message
 

jeje77

XLDnaute Junior
Re : (De)Proteger plusieurs feuilles sélectionnées en même temps

Hervé62 j'ai mis le sheet(array..... dans une autre macro mais quand je fait call SelectionFeuilles (c'est le nom de la macro) le meme message apparait quand ça arrive à la ligne Selection.Unprotect MotPass.
 

jeje77

XLDnaute Junior
Re : (De)Proteger plusieurs feuilles sélectionnées en même temps

salut Papou-net

je viens d’essayer ton code mais ça me déprotège tout les feuilles du classeur. je voudrais que les feuilles dont j'ai besoin.

merci quand même
 

jeje77

XLDnaute Junior
Re : (De)Proteger plusieurs feuilles sélectionnées en même temps (Sujet Résolu)

Après de nombreuses recherches sur le net, et en particulier sur les forums, je viens de trouvé ce que je cherche sur cette page:

Feuilles, copier renommer insérer

J'ai trouvé ce code pour faire ce que je voulais. après adaptation ça marche .

++++++++++++++++++++++++++++++++++++++
'Autre manipulation d'un groupe défini de feuilles
'Déprotection de feuilles
Groupe = Array("Feuil1", "Feuil2", "Feuil3")
for each Feuille in sheets(Groupe)
Feuille.unprotect ("chat")
next Feuille
Sheets(Groupe).select
++++++++++++++++++++++++++++++++++++++

Code adapté à mon classeur :


Sub AaaSectFeuille()
'
' AaaSectFeuille Macro
'
motpass = "++++"
Groupe = Array("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", _
"16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31")
Application.ScreenUpdating = False
For Each Feuille In Sheets(Groupe)
Feuille.Unprotect motpass
Next Feuille
Sheets(Groupe).Select
Range("A6 : D6").Select
End Sub


En vous remerciant pour vos réponses

cordialement jeje77
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 184
Messages
2 086 006
Membres
103 088
dernier inscrit
Psodam