Protection de plusieurs onglets en même temps(macro à améliorer)
Résolu/Fermé
Maurice933
Messages postés
15
Date d'inscription
mardi 14 mai 2013
Statut
Membre
Dernière intervention
21 décembre 2014
-
16 déc. 2014 à 15:04
Maurice933 Messages postés 15 Date d'inscription mardi 14 mai 2013 Statut Membre Dernière intervention 21 décembre 2014 - 21 déc. 2014 à 11:34
Maurice933 Messages postés 15 Date d'inscription mardi 14 mai 2013 Statut Membre Dernière intervention 21 décembre 2014 - 21 déc. 2014 à 11:34
A voir également:
- Protection de plusieurs onglets en même temps(macro à améliorer)
- Renommer plusieurs fichiers en même temps - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Blocage agriculteur carte en temps réel - Accueil - Transports & Cartes
- Restaurer onglets chrome - Guide
- Macro word - Guide
10 réponses
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
16 déc. 2014 à 15:38
16 déc. 2014 à 15:38
Bonjour,
Trouvez dans l'aide Excel:
Cet exemple montre comment activer les flèches du Filtre Automatique dans une feuille de calcul protégée.
Il faut faire une boucle sur toutes les feuilles pour y incorporer ce code:
Comme ceci par exemple:
A essayer!
Trouvez dans l'aide Excel:
Cet exemple montre comment activer les flèches du Filtre Automatique dans une feuille de calcul protégée.
ActiveSheet.EnableAutoFilter = True ActiveSheet.Protect contents:=True, userInterfaceOnly:=True
Il faut faire une boucle sur toutes les feuilles pour y incorporer ce code:
Comme ceci par exemple:
Sub Déprotéger() ' Déprotection automatique de toutes les feuilles d'un classeur Dim nombre As Integer Dim Motdepasse As String Motdepasse = InputBox("Entrer le mot de passe :", "Oter la protection de toutes les feuilles", "") nombre = ActiveWorkbook.Sheets.count Application.ScreenUpdating = False For i = 1 To nombre Worksheets(i).Unprotect Password:=Motdepasse ActiveSheet.EnableAutoFilter = True ActiveSheet.Protect contents:=True, userInterfaceOnly:=True Next i Application.ScreenUpdating = True End Sub
A essayer!
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
16 déc. 2014 à 15:51
16 déc. 2014 à 15:51
Je viens de trouvez cela sur
http://www.gaboly.com/VBA/Protege.html
Les True, True, True representent filtre, les objets, les scénario
http://www.gaboly.com/VBA/Protege.html
Sub Protege() Dim f as Worksheet For Each f In ActiveWorkbook.Worksheets f.Protect "Toto", True, True, True Next End Sub
Les True, True, True representent filtre, les objets, les scénario
eriiic
Messages postés
24600
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
21 octobre 2024
7 239
16 déc. 2014 à 17:20
16 déc. 2014 à 17:20
Bonjour,
Si tu fais F1 sur .Protect tu auras tous les paramètres que tu peux activer.
Et en enregistrement de macro tu pourras récupérer ceux que tu actives.
eric
Si tu fais F1 sur .Protect tu auras tous les paramètres que tu peux activer.
Et en enregistrement de macro tu pourras récupérer ceux que tu actives.
eric
Maurice933
Messages postés
15
Date d'inscription
mardi 14 mai 2013
Statut
Membre
Dernière intervention
21 décembre 2014
17 déc. 2014 à 17:36
17 déc. 2014 à 17:36
Bonjour
Un grand merci à CS_Le Pivert, eriiic et à tout ceux qui m'ont apporté des solutions. Désolé de revenir vers vous si tardivement. Je n'ai malheureusement pas eu le temps de mettre en application vos précieux conseils. Je ne manquerais pas de vous tenir informé aussitôt après avoir pu essayer vos solutions. très certainement demain
Maurice933
Un grand merci à CS_Le Pivert, eriiic et à tout ceux qui m'ont apporté des solutions. Désolé de revenir vers vous si tardivement. Je n'ai malheureusement pas eu le temps de mettre en application vos précieux conseils. Je ne manquerais pas de vous tenir informé aussitôt après avoir pu essayer vos solutions. très certainement demain
Maurice933
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Maurice933
Messages postés
15
Date d'inscription
mardi 14 mai 2013
Statut
Membre
Dernière intervention
21 décembre 2014
19 déc. 2014 à 15:35
19 déc. 2014 à 15:35
Bonjour
à CS_Le Pivert, eriiic et à tout ceux qui m'ont apporté des solutions, toutes mes excuses pour cette réponse tardive. Je suis débutant sur VBA et j'ai mis beaucoup de temps à comprendre et mettre en application vos suggestions. Ci-dessous la macro que j'ai constituée. Elle est le mélange des lignes de macro proposées par CS_Le Pivert, et eriiic. Elle permet la protection et la déprotection simultanées de tous les onglets d'un même classeur. Elle conserve la fonction filtre lorsque la protection est activée, ce qui correspond à mon besoin actuel. Néanmoins je ne suis pas parvenu à rajouter les options de protection telles que modifier les objets, modifier les scénario etc.. Cela est du au codage que je ne maîtrise pas bien. Une nouvelle fois je vous remercie pour l'aide que vous m'avez apportée.
à CS_Le Pivert, eriiic et à tout ceux qui m'ont apporté des solutions, toutes mes excuses pour cette réponse tardive. Je suis débutant sur VBA et j'ai mis beaucoup de temps à comprendre et mettre en application vos suggestions. Ci-dessous la macro que j'ai constituée. Elle est le mélange des lignes de macro proposées par CS_Le Pivert, et eriiic. Elle permet la protection et la déprotection simultanées de tous les onglets d'un même classeur. Elle conserve la fonction filtre lorsque la protection est activée, ce qui correspond à mon besoin actuel. Néanmoins je ne suis pas parvenu à rajouter les options de protection telles que modifier les objets, modifier les scénario etc.. Cela est du au codage que je ne maîtrise pas bien. Une nouvelle fois je vous remercie pour l'aide que vous m'avez apportée.
Maurice933
Messages postés
15
Date d'inscription
mardi 14 mai 2013
Statut
Membre
Dernière intervention
21 décembre 2014
19 déc. 2014 à 15:39
19 déc. 2014 à 15:39
Bonjour
Ci-dessous la macro :
Sub Protegertouslesongletsenmêmetemps()
' Protection automatique de toutes les feuilles d'un classeur
Dim nombre As Integer
Dim Motdepasse As String
Motdepasse = InputBox("Entrer le mot de passe :", "Mettre la protection sur toutes les feuilles", "")
nombre = ActiveWorkbook.Sheets.count
Application.ScreenUpdating = False
For i = 1 To nombre
Worksheets(i).Protect Password:=Motdepasse
ActiveSheet.EnableAutoFilter = True
ActiveSheet.Protect contents:=True, userInterfaceOnly:=True
Next i
Application.ScreenUpdating = True
Dim f As Worksheet
For Each f In ActiveWorkbook.Worksheets
f.Protect Password:=Motdepasse, AllowFiltering:=True
Next
End Sub
Sub Déprotégertouslesongletsenmêmetemps()
' Déprotection automatique de toutes les feuilles d'un classeur
Dim nombre As Integer
Dim Motdepasse As String
Motdepasse = InputBox("Entrer le mot de passe :", "Oter la protection de toutes les feuilles", "")
nombre = ActiveWorkbook.Sheets.count
Application.ScreenUpdating = False
For i = 1 To nombre
Worksheets(i).Unprotect Password:=Motdepasse
Next i
Application.ScreenUpdating = True
End Sub
Ci-dessous la macro :
Sub Protegertouslesongletsenmêmetemps()
' Protection automatique de toutes les feuilles d'un classeur
Dim nombre As Integer
Dim Motdepasse As String
Motdepasse = InputBox("Entrer le mot de passe :", "Mettre la protection sur toutes les feuilles", "")
nombre = ActiveWorkbook.Sheets.count
Application.ScreenUpdating = False
For i = 1 To nombre
Worksheets(i).Protect Password:=Motdepasse
ActiveSheet.EnableAutoFilter = True
ActiveSheet.Protect contents:=True, userInterfaceOnly:=True
Next i
Application.ScreenUpdating = True
Dim f As Worksheet
For Each f In ActiveWorkbook.Worksheets
f.Protect Password:=Motdepasse, AllowFiltering:=True
Next
End Sub
Sub Déprotégertouslesongletsenmêmetemps()
' Déprotection automatique de toutes les feuilles d'un classeur
Dim nombre As Integer
Dim Motdepasse As String
Motdepasse = InputBox("Entrer le mot de passe :", "Oter la protection de toutes les feuilles", "")
nombre = ActiveWorkbook.Sheets.count
Application.ScreenUpdating = False
For i = 1 To nombre
Worksheets(i).Unprotect Password:=Motdepasse
Next i
Application.ScreenUpdating = True
End Sub
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
20 déc. 2014 à 10:58
20 déc. 2014 à 10:58
Essaie ceci pour modifier les filtres, modifier les objets, modifier les scénario etc.. avec la protection:
Sub Protegertouslesongletsenmêmetemps() ' Protection automatique de toutes les feuilles d'un classeur Dim Motdepasse As String Dim wSheet As Worksheet Motdepasse = InputBox("Entrer le mot de passe :", "Mettre la protection sur toutes les feuilles", "*****") If Motdepasse = "" Then Exit Sub For Each wSheet In Worksheets wSheet.Protect Password:=Motdepasse, _ UserInterFaceOnly:=True Next wSheet End Sub Sub Déprotégertouslesongletsenmêmetemps() ' Déprotection automatique de toutes les feuilles d'un classeur Dim wSheet As Worksheet Dim Motdepasse As String Motdepasse = InputBox("Entrer le mot de passe :", "Oter la protection de toutes les feuilles", "*****") If Motdepasse = "" Then Exit Sub For Each wSheet In Worksheets wSheet.Unprotect Password:=Motdepasse Next wSheet End Sub
Maurice933
Messages postés
15
Date d'inscription
mardi 14 mai 2013
Statut
Membre
Dernière intervention
21 décembre 2014
20 déc. 2014 à 18:30
20 déc. 2014 à 18:30
Bonjour @+ Le Pivert
Je te remercie pour ta macro. Je l'ai essayée. Elle protège et déprotège bien simultanément l'ensemble du classeur (obliger d'entrer un mot de passe pour qu'elle fonctionne). Malheureusement elle ne prend pas en compte aucune des options (les filtres, modifier les objets, modifier les scénario etc..). Je travaille sur Excel 2003. Je ne sais pas si cela a une importance. Je te remercie encore de t'être intéressé à ma demande.
Bonne soirée
Je te remercie pour ta macro. Je l'ai essayée. Elle protège et déprotège bien simultanément l'ensemble du classeur (obliger d'entrer un mot de passe pour qu'elle fonctionne). Malheureusement elle ne prend pas en compte aucune des options (les filtres, modifier les objets, modifier les scénario etc..). Je travaille sur Excel 2003. Je ne sais pas si cela a une importance. Je te remercie encore de t'être intéressé à ma demande.
Bonne soirée
cs_Le Pivert
Messages postés
7904
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
14 août 2024
729
20 déc. 2014 à 19:18
20 déc. 2014 à 19:18
J'ai excel 2007, voici la macro pour protéger les feuilles et pour modifier les filtres, modifier les objets, modifier les scénario
Voir si cela fonctionne sous 2003 en vérifiant manuellement après avoir protégé si les cases filtre, objet et scenario sont cochées dans la protection des feuilles
Voir si cela fonctionne sous 2003 en vérifiant manuellement après avoir protégé si les cases filtre, objet et scenario sont cochées dans la protection des feuilles
Sub Protegertouslesongletsenmêmetemps() ' Protection automatique de toutes les feuilles d'un classeur Dim Motdepasse As String Dim wSheet As Worksheet Motdepasse = InputBox("Entrer le mot de passe :", "Mettre la protection sur toutes les feuilles", "*****") If Motdepasse = "" Then Exit Sub For Each wSheet In Worksheets wSheet.Protect Password:=Motdepasse, _ UserInterFaceOnly:=True, _ DrawingObjects:=False, Contents:=True, Scenarios:= _ False, AllowFiltering:=True Next wSheet End Sub
Maurice933
Messages postés
15
Date d'inscription
mardi 14 mai 2013
Statut
Membre
Dernière intervention
21 décembre 2014
21 déc. 2014 à 11:34
21 déc. 2014 à 11:34
Bonjour @+ Le Pivert
Merveilleux !!! Tous les onglets du classeur se protègent et se déprotègent simultanément en conservant les options sélectionnées dans la macro :
UserInterFaceOnly:=True, _
DrawingObjects:=False, Contents:=True, Scenarios:= _
False, AllowFiltering:=True
Pour davantage d'options comme par exemple "utiliser des rapports de tableau croisé dynamique" il suffit de rajouter aux lignes de commande de la macro ", AllowUsingPivotTables:=True"
UserInterFaceOnly:=True, _
DrawingObjects:=False, Contents:=True, Scenarios:= _
False, AllowFiltering:=True, AllowUsingPivotTables:=True
Pour résumer la macro de protection et de déprotection simultanées de tous les onglets d'un classeur avec conservation des options sélectionnées dans les ligne de la macro s'écrit de la manière suivante:
Sub Protegertouslesongletsenmêmetemps2()
' Protection automatique de toutes les feuilles d'un classeur
Dim Motdepasse As String
Dim wSheet As Worksheet
Motdepasse = InputBox("Entrer le mot de passe :", "Mettre la protection sur toutes les feuilles", "*****")
If Motdepasse = "" Then Exit Sub
For Each wSheet In Worksheets
wSheet.Protect Password:=Motdepasse, _
UserInterFaceOnly:=True, _
DrawingObjects:=False, Contents:=True, Scenarios:= _
False, AllowFiltering:=True, AllowUsingPivotTables:=True
Next wSheet
End Sub
Sub Déprotégertouslesongletsenmêmetemps2()
' Déprotection automatique de toutes les feuilles d'un classeur
Dim wSheet As Worksheet
Dim Motdepasse As String
Motdepasse = InputBox("Entrer le mot de passe :", "Oter la protection de toutes les feuilles", "*****")
If Motdepasse = "" Then Exit Sub
For Each wSheet In Worksheets
wSheet.Unprotect Password:=Motdepasse
Next wSheet
End Sub
Un énorme merci à @+ Le Pivert, eriiic et à tous les membres du site (Comment ça marche).
Maurice933
Merveilleux !!! Tous les onglets du classeur se protègent et se déprotègent simultanément en conservant les options sélectionnées dans la macro :
UserInterFaceOnly:=True, _
DrawingObjects:=False, Contents:=True, Scenarios:= _
False, AllowFiltering:=True
Pour davantage d'options comme par exemple "utiliser des rapports de tableau croisé dynamique" il suffit de rajouter aux lignes de commande de la macro ", AllowUsingPivotTables:=True"
UserInterFaceOnly:=True, _
DrawingObjects:=False, Contents:=True, Scenarios:= _
False, AllowFiltering:=True, AllowUsingPivotTables:=True
Pour résumer la macro de protection et de déprotection simultanées de tous les onglets d'un classeur avec conservation des options sélectionnées dans les ligne de la macro s'écrit de la manière suivante:
Sub Protegertouslesongletsenmêmetemps2()
' Protection automatique de toutes les feuilles d'un classeur
Dim Motdepasse As String
Dim wSheet As Worksheet
Motdepasse = InputBox("Entrer le mot de passe :", "Mettre la protection sur toutes les feuilles", "*****")
If Motdepasse = "" Then Exit Sub
For Each wSheet In Worksheets
wSheet.Protect Password:=Motdepasse, _
UserInterFaceOnly:=True, _
DrawingObjects:=False, Contents:=True, Scenarios:= _
False, AllowFiltering:=True, AllowUsingPivotTables:=True
Next wSheet
End Sub
Sub Déprotégertouslesongletsenmêmetemps2()
' Déprotection automatique de toutes les feuilles d'un classeur
Dim wSheet As Worksheet
Dim Motdepasse As String
Motdepasse = InputBox("Entrer le mot de passe :", "Oter la protection de toutes les feuilles", "*****")
If Motdepasse = "" Then Exit Sub
For Each wSheet In Worksheets
wSheet.Unprotect Password:=Motdepasse
Next wSheet
End Sub
Un énorme merci à @+ Le Pivert, eriiic et à tous les membres du site (Comment ça marche).
Maurice933