Protéger plusieurs feuilles en même temps [Résolu/Fermé]

-
Bonjour,
Je fais une macro pour protéger plusieurs feuilles d'un classeur en même temps. Je l'ai faite en faisant du copier-coller pour les feuilles suivantes. Il y a d'autres feuilles dans ce classeur qui ne doivent pas être protégée.

Ma macro est la suivante:

Sub Macro1protéger6()
'
' Macro1protéger6 Macro
' Protéger certaines feuilles
'

'
Sheets("(1-6)").Select
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Sheets("(2-6)").Select
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Sheets("(3-6)").Select
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Sheets("(4-6)").Select
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Sheets("(5-6)").Select
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Sheets("(6-6)").Select
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Sheets("(7-6)").Select
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Sheets("(8-6)").Select
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Sheets("(9-6)").Select
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Sheets("(10-6)").Select
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End Sub

J'aimerais une façon plus simple de l'écrire, mais je ne trouve pas sur le forum. Je n'ai pas besoin de mettre un mot de passe.

Merci.
Afficher la suite 

7 réponses

Meilleure réponse
Messages postés
16920
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
13 août 2019
3559
1
Merci
Re,

comme tu veux, sinon tu pouvais écrire le code comme cela (tu protèges toutes les feuilles et tu déprotèges que trois feuilles nommées Feuil1, Feuil3 et Feuil5
ou tu pouvais faire l'inverse tu déprotégeais tous le classeur et reprotégeais les trois ou plus

Sub deprotrec()
Dim Sh As Worksheet
For Each Sh In Worksheets
Sh.Protect
Next
Sheets("Feuil1").Unprotect
Sheets("Feuil3").Unprotect
Sheets("Feuil5").Unprotect
End Sub

Dire « Merci » 1

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 58888 internautes nous ont dit merci ce mois-ci

Merci beaucoup pour les infos. Comme je disais, je garde tous les codes ci-haut précieusement.
Je suis très contente de l'aide reçue.
Merci encore,
Linda
Messages postés
14681
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
22 août 2019
1165
0
Merci
Bonjour,

Sub Protection_Feuilles()
Dim Sh As Object
'boucle sur les onglets
For Each Sh In ThisWorkbook.Sheets
'test si onglet avec -6 en fin de nom
If Right(Sh.Name, 2) = "-6" Then
Sh.Protect , True, True, True
End If
Next
End Sub
Messages postés
3341
Date d'inscription
samedi 20 juillet 2013
Statut
Membre
Dernière intervention
9 décembre 2016
445
0
Merci
Bonjour,

Essaie avec
Sub Macro1protéger6()
Dim i As Byte
Dim Feuille As String
For i = 1 To 10
Feuille = "(" & i & "-6)"
Sheets(Feuille).Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Next i
End Sub

A+
Ça fonctionne. Merci.

Et pour ôter la protection?
Messages postés
16920
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
13 août 2019
3559
0
Merci
Bonjour,

pour déprotéger toutes les feuilles

Sub deprotrec()
Dim Sh As Worksheet
For Each Sh In Worksheets
Sh.Unprotect
Next
End Sub
Bonjour Mike-31
Merci pour votre réponse.
Mais, je ne dois pas protéger toutes les feuilles, seulement certaines d'entre elles. Où dois-je inscrire les feuilles à protéger ?
Merci.
Messages postés
16920
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
13 août 2019
3559
0
Merci
Re,

pour protéger les feuilles, deux solutions t'ont été données, ensuite tu posais la question a laquelle j'ai répondue

"Et pour ôter la protection?"
Désolée,
J'aurais dû écrire: sur quelle ligne est-ce que je dois inscrire le nom des "feuilles dont je veux ôter la protection".
Merci.
Messages postés
16920
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
13 août 2019
3559
0
Merci
Re,

dans ce genre de démarche il faut être précis, deux codes t'ont été proposés pour protéger toutes les feuilles en fonction de leurs noms.

plusieurs démarches assez simple on écrit un code qui protège toutes les feuilles et on déprotège les feuilles que l'on souhaite si elles sont moins nombreuse que celle que l'on protège
ou
on déprotège toutes les feuilles et on protège que quelques feuilles

il est possible de boucler sur chaque feuille et tester chaque nom mais le code peut être ralenti en fonction du nombre d'onglet.

alors combien as tu de feuilles à protéger et combien en as tu a déprotéger

comment se nomment tes feuilles, parce que les codes t'ont été donné en fonction de ta demande "Sheets("(1-6)")"
0
Merci
On m'a finalement demandé de protéger et déprotéger toutes les feuilles en même temps.
Ça simplifie donc les macros et mon problème est résolu.
Merci de votre temps. Je garde ces informations précieusement au cas où j'en aurais besoin dans le futur.
Linda