Bonjour,
J'ai créé un classeur contenant 42 feuilles protégées
individuellement, ce classeur étant utilisé par plusieurs personnes,
je ne veux pas que ces personnes puissent en modifier les données
(autres que celles autorisées) et formules. Ce que je voudrait
savoir, c'est s'il y a une méthode permettant de protéger/déprotéger
toutes les feuilles en même temps, ayant besoin d'effectuer assez
fréquemment des mises à jour, et c'est très pénible de devoir
protéger/déprotéger les feuilles une à une.
Si vous pouvez m'aider à résoudre ce petit problème, ce serait sympa.
Merci d'avance.
Bonjour,
J'ai créé un classeur contenant 42 feuilles protégées
individuellement, ce classeur étant utilisé par plusieurs personnes,
je ne veux pas que ces personnes puissent en modifier les données
(autres que celles autorisées) et formules. Ce que je voudrait
savoir, c'est s'il y a une méthode permettant de protéger/déprotéger
toutes les feuilles en même temps, ayant besoin d'effectuer assez
fréquemment des mises à jour, et c'est très pénible de devoir
protéger/déprotéger les feuilles une à une.
Si vous pouvez m'aider à résoudre ce petit problème, ce serait sympa.
Merci d'avance.
Bonjour,
J'ai créé un classeur contenant 42 feuilles protégées
individuellement, ce classeur étant utilisé par plusieurs personnes,
je ne veux pas que ces personnes puissent en modifier les données
(autres que celles autorisées) et formules. Ce que je voudrait
savoir, c'est s'il y a une méthode permettant de protéger/déprotéger
toutes les feuilles en même temps, ayant besoin d'effectuer assez
fréquemment des mises à jour, et c'est très pénible de devoir
protéger/déprotéger les feuilles une à une.
Si vous pouvez m'aider à résoudre ce petit problème, ce serait sympa.
Merci d'avance.
A copier dans un module standard (Alt + F11, insertion, Module)
Sub protege()
Dim Sh As Worksheet
Application.ScreenUpdating = False
For Each Sh In ThisWorkbook.Sheets
Sh.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
Next Sh
Application.EnableEvents = True
Application.ScreenUpdating = False
End Sub
Sub deprotege()
Dim Sh As Worksheet
Application.ScreenUpdating = False
For Each Sh In ThisWorkbook.Sheets
Sh.Unprotect
Next Sh
Application.EnableEvents = True
Application.ScreenUpdating = False
End Sub
A copier dans un module standard (Alt + F11, insertion, Module)
Sub protege()
Dim Sh As Worksheet
Application.ScreenUpdating = False
For Each Sh In ThisWorkbook.Sheets
Sh.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
Next Sh
Application.EnableEvents = True
Application.ScreenUpdating = False
End Sub
Sub deprotege()
Dim Sh As Worksheet
Application.ScreenUpdating = False
For Each Sh In ThisWorkbook.Sheets
Sh.Unprotect
Next Sh
Application.EnableEvents = True
Application.ScreenUpdating = False
End Sub
A copier dans un module standard (Alt + F11, insertion, Module)
Sub protege()
Dim Sh As Worksheet
Application.ScreenUpdating = False
For Each Sh In ThisWorkbook.Sheets
Sh.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
Next Sh
Application.EnableEvents = True
Application.ScreenUpdating = False
End Sub
Sub deprotege()
Dim Sh As Worksheet
Application.ScreenUpdating = False
For Each Sh In ThisWorkbook.Sheets
Sh.Unprotect
Next Sh
Application.EnableEvents = True
Application.ScreenUpdating = False
End Sub
Merci pour ton aide.
J'ai fait comme tu me l'as dit, je l'ai ensuite exécutée, c'est plus
rapide que la méthode basique que j'utilise, mais il faut quand même
taper le mot de passe pour chaque feuille, il n'y a pas de
possibilité de taper une seule fois le MdP pour déprotéger/protéger
toutes les feuilles? Ai-je raté quelque chose? Je précise que je ne
suis pas un spécialiste d'Excel...
Merci pour ton aide.
J'ai fait comme tu me l'as dit, je l'ai ensuite exécutée, c'est plus
rapide que la méthode basique que j'utilise, mais il faut quand même
taper le mot de passe pour chaque feuille, il n'y a pas de
possibilité de taper une seule fois le MdP pour déprotéger/protéger
toutes les feuilles? Ai-je raté quelque chose? Je précise que je ne
suis pas un spécialiste d'Excel...
Merci pour ton aide.
J'ai fait comme tu me l'as dit, je l'ai ensuite exécutée, c'est plus
rapide que la méthode basique que j'utilise, mais il faut quand même
taper le mot de passe pour chaque feuille, il n'y a pas de
possibilité de taper une seule fois le MdP pour déprotéger/protéger
toutes les feuilles? Ai-je raté quelque chose? Je précise que je ne
suis pas un spécialiste d'Excel...
J'ai fait comme tu me l'as dit, je l'ai ensuite exécutée
, c'est plus rapide que la méthode basique que j'utilise,
mais il faut quand même taper le mot de passe pour chaque
feuille, il n'y a pas de possibilité de taper une seule
fois le MdP pour déprotéger/protéger toutes les feuilles?
Ai-je raté quelque chose? Je précise que je ne suis pas
un spécialiste d'Excel...
J'ai fait comme tu me l'as dit, je l'ai ensuite exécutée
, c'est plus rapide que la méthode basique que j'utilise,
mais il faut quand même taper le mot de passe pour chaque
feuille, il n'y a pas de possibilité de taper une seule
fois le MdP pour déprotéger/protéger toutes les feuilles?
Ai-je raté quelque chose? Je précise que je ne suis pas
un spécialiste d'Excel...
J'ai fait comme tu me l'as dit, je l'ai ensuite exécutée
, c'est plus rapide que la méthode basique que j'utilise,
mais il faut quand même taper le mot de passe pour chaque
feuille, il n'y a pas de possibilité de taper une seule
fois le MdP pour déprotéger/protéger toutes les feuilles?
Ai-je raté quelque chose? Je précise que je ne suis pas
un spécialiste d'Excel...
J'ai fait comme tu me l'as dit, je l'ai ensuite exécutée
, c'est plus rapide que la méthode basique que j'utilise,
mais il faut quand même taper le mot de passe pour chaque
feuille, il n'y a pas de possibilité de taper une seule
fois le MdP pour déprotéger/protéger toutes les feuilles?
Ai-je raté quelque chose? Je précise que je ne suis pas
un spécialiste d'Excel...
Bon, comme précisé ci-dessus, j'ai dû entré mon MdP pour chaque feuille,
maintenant la protection/déprotection se fait sur toutes les feuilles d'un
seul coup, mais... je n'ai plus besoin de taper de MdP, problème puisque
n'importe qui exécutant la macro peut déprotéger les feuilles sans avoir à
entre de MdP. j'ai fermé le classeur et Excel, en espérant qu'en exécutant
la macro à la réouverture il me serait demandé un MdP, mais non, il suffit
d'exécuter "Proteger" ou "Deproteger" pour réaliser l'opération demandée,
c'est normal?
J'ai fait comme tu me l'as dit, je l'ai ensuite exécutée
, c'est plus rapide que la méthode basique que j'utilise,
mais il faut quand même taper le mot de passe pour chaque
feuille, il n'y a pas de possibilité de taper une seule
fois le MdP pour déprotéger/protéger toutes les feuilles?
Ai-je raté quelque chose? Je précise que je ne suis pas
un spécialiste d'Excel...
Bon, comme précisé ci-dessus, j'ai dû entré mon MdP pour chaque feuille,
maintenant la protection/déprotection se fait sur toutes les feuilles d'un
seul coup, mais... je n'ai plus besoin de taper de MdP, problème puisque
n'importe qui exécutant la macro peut déprotéger les feuilles sans avoir à
entre de MdP. j'ai fermé le classeur et Excel, en espérant qu'en exécutant
la macro à la réouverture il me serait demandé un MdP, mais non, il suffit
d'exécuter "Proteger" ou "Deproteger" pour réaliser l'opération demandée,
c'est normal?
J'ai fait comme tu me l'as dit, je l'ai ensuite exécutée
, c'est plus rapide que la méthode basique que j'utilise,
mais il faut quand même taper le mot de passe pour chaque
feuille, il n'y a pas de possibilité de taper une seule
fois le MdP pour déprotéger/protéger toutes les feuilles?
Ai-je raté quelque chose? Je précise que je ne suis pas
un spécialiste d'Excel...
Bon, comme précisé ci-dessus, j'ai dû entré mon MdP pour chaque feuille,
maintenant la protection/déprotection se fait sur toutes les feuilles d'un
seul coup, mais... je n'ai plus besoin de taper de MdP, problème puisque
n'importe qui exécutant la macro peut déprotéger les feuilles sans avoir à
entre de MdP. j'ai fermé le classeur et Excel, en espérant qu'en exécutant
la macro à la réouverture il me serait demandé un MdP, mais non, il suffit
d'exécuter "Proteger" ou "Deproteger" pour réaliser l'opération demandée,
c'est normal?
J'ai fait comme tu me l'as dit, je l'ai ensuite exécutée
, c'est plus rapide que la méthode basique que j'utilise,
mais il faut quand même taper le mot de passe pour chaque
feuille, il n'y a pas de possibilité de taper une seule
fois le MdP pour déprotéger/protéger toutes les feuilles?
Ai-je raté quelque chose? Je précise que je ne suis pas
un spécialiste d'Excel...
Bon, comme précisé ci-dessus, j'ai dû entré mon MdP pour chaque
feuille, maintenant la protection/déprotection se fait sur toutes les
feuilles d'un seul coup, mais... je n'ai plus besoin de taper de MdP,
problème puisque n'importe qui exécutant la macro peut déprotéger les
feuilles sans avoir à entre de MdP. j'ai fermé le classeur et Excel,
en espérant qu'en exécutant la macro à la réouverture il me serait
demandé un MdP, mais non, il suffit d'exécuter "Proteger" ou
"Deproteger" pour réaliser l'opération demandée, c'est normal?
J'ai fait comme tu me l'as dit, je l'ai ensuite exécutée
, c'est plus rapide que la méthode basique que j'utilise,
mais il faut quand même taper le mot de passe pour chaque
feuille, il n'y a pas de possibilité de taper une seule
fois le MdP pour déprotéger/protéger toutes les feuilles?
Ai-je raté quelque chose? Je précise que je ne suis pas
un spécialiste d'Excel...
Bon, comme précisé ci-dessus, j'ai dû entré mon MdP pour chaque
feuille, maintenant la protection/déprotection se fait sur toutes les
feuilles d'un seul coup, mais... je n'ai plus besoin de taper de MdP,
problème puisque n'importe qui exécutant la macro peut déprotéger les
feuilles sans avoir à entre de MdP. j'ai fermé le classeur et Excel,
en espérant qu'en exécutant la macro à la réouverture il me serait
demandé un MdP, mais non, il suffit d'exécuter "Proteger" ou
"Deproteger" pour réaliser l'opération demandée, c'est normal?
J'ai fait comme tu me l'as dit, je l'ai ensuite exécutée
, c'est plus rapide que la méthode basique que j'utilise,
mais il faut quand même taper le mot de passe pour chaque
feuille, il n'y a pas de possibilité de taper une seule
fois le MdP pour déprotéger/protéger toutes les feuilles?
Ai-je raté quelque chose? Je précise que je ne suis pas
un spécialiste d'Excel...
Bon, comme précisé ci-dessus, j'ai dû entré mon MdP pour chaque
feuille, maintenant la protection/déprotection se fait sur toutes les
feuilles d'un seul coup, mais... je n'ai plus besoin de taper de MdP,
problème puisque n'importe qui exécutant la macro peut déprotéger les
feuilles sans avoir à entre de MdP. j'ai fermé le classeur et Excel,
en espérant qu'en exécutant la macro à la réouverture il me serait
demandé un MdP, mais non, il suffit d'exécuter "Proteger" ou
"Deproteger" pour réaliser l'opération demandée, c'est normal?
D'après 'Dave Peterson, mpep
'Attribute VB_Name = "DemanderMotDePasse"
'demander un mot de passe et limiter le nombre
d'essai pour 'fournir le mot de passe correct
Ceci à la place de la sub protège :
---------------------------
Cela te convient-il ?
D'après 'Dave Peterson, mpep
'Attribute VB_Name = "DemanderMotDePasse"
'demander un mot de passe et limiter le nombre
d'essai pour 'fournir le mot de passe correct
Ceci à la place de la sub protège :
---------------------------
Cela te convient-il ?
D'après 'Dave Peterson, mpep
'Attribute VB_Name = "DemanderMotDePasse"
'demander un mot de passe et limiter le nombre
d'essai pour 'fournir le mot de passe correct
Ceci à la place de la sub protège :
---------------------------
Cela te convient-il ?
Je l'ai mis à la place la sub deprotege. (copie macro utilisé
ci-dessous). Et le résultat est exactement celui que je cherchais.
Sub protege()
Dim Sh As Worksheet
Application.ScreenUpdating = False
For Each Sh In ThisWorkbook.Sheets
Sh.Protect (1234), DrawingObjects:=True,
Contents:=True, Scenarios:=True
Next Sh
Application.EnableEvents = True
Application.ScreenUpdating = False
End Sub
Sub deprotege()
Dim okPswd As Boolean
Dim Sh As Worksheet
okPswd = GetPassword("1234", 3)
' MsgBox okPswd
If okPswd Then
Application.ScreenUpdating = False
For Each Sh In ThisWorkbook.Sheets
Sh.Unprotect (1234)
Next Sh
Else
End If
End Sub
Function GetPassword(CorrectPswd As String, MaxTimes As Long) As
Boolean 'Dave Peterson, mpep
Dim Pswd As String
Dim essais As Long
essais = 1
GetPassword = False
Do
Pswd = InputBox("Essai n°" & essais & " sur " & MaxTimes _
& ". Mot de passe?", _
"Saisie du mot de passe")
If Pswd = "" Then
Exit Function
End If
If Pswd <> CorrectPswd Then
essais = essais + 1
If essais <= MaxTimes Then
MsgBox "Erreur !"
End If
Else
GetPassword = True
'MsgBox "Mot de passe correct !"
Exit Function
End If
Loop Until essais > MaxTimes
End Function
---------
Ça te paraît correct?---------------------------
Cela te convient-il ?
Parfaitement! Un grand, grand merci pour ton aide.
Je l'ai mis à la place la sub deprotege. (copie macro utilisé
ci-dessous). Et le résultat est exactement celui que je cherchais.
Sub protege()
Dim Sh As Worksheet
Application.ScreenUpdating = False
For Each Sh In ThisWorkbook.Sheets
Sh.Protect (1234), DrawingObjects:=True,
Contents:=True, Scenarios:=True
Next Sh
Application.EnableEvents = True
Application.ScreenUpdating = False
End Sub
Sub deprotege()
Dim okPswd As Boolean
Dim Sh As Worksheet
okPswd = GetPassword("1234", 3)
' MsgBox okPswd
If okPswd Then
Application.ScreenUpdating = False
For Each Sh In ThisWorkbook.Sheets
Sh.Unprotect (1234)
Next Sh
Else
End If
End Sub
Function GetPassword(CorrectPswd As String, MaxTimes As Long) As
Boolean 'Dave Peterson, mpep
Dim Pswd As String
Dim essais As Long
essais = 1
GetPassword = False
Do
Pswd = InputBox("Essai n°" & essais & " sur " & MaxTimes _
& ". Mot de passe?", _
"Saisie du mot de passe")
If Pswd = "" Then
Exit Function
End If
If Pswd <> CorrectPswd Then
essais = essais + 1
If essais <= MaxTimes Then
MsgBox "Erreur !"
End If
Else
GetPassword = True
'MsgBox "Mot de passe correct !"
Exit Function
End If
Loop Until essais > MaxTimes
End Function
---------
Ça te paraît correct?
---------------------------
Cela te convient-il ?
Parfaitement! Un grand, grand merci pour ton aide.
Je l'ai mis à la place la sub deprotege. (copie macro utilisé
ci-dessous). Et le résultat est exactement celui que je cherchais.
Sub protege()
Dim Sh As Worksheet
Application.ScreenUpdating = False
For Each Sh In ThisWorkbook.Sheets
Sh.Protect (1234), DrawingObjects:=True,
Contents:=True, Scenarios:=True
Next Sh
Application.EnableEvents = True
Application.ScreenUpdating = False
End Sub
Sub deprotege()
Dim okPswd As Boolean
Dim Sh As Worksheet
okPswd = GetPassword("1234", 3)
' MsgBox okPswd
If okPswd Then
Application.ScreenUpdating = False
For Each Sh In ThisWorkbook.Sheets
Sh.Unprotect (1234)
Next Sh
Else
End If
End Sub
Function GetPassword(CorrectPswd As String, MaxTimes As Long) As
Boolean 'Dave Peterson, mpep
Dim Pswd As String
Dim essais As Long
essais = 1
GetPassword = False
Do
Pswd = InputBox("Essai n°" & essais & " sur " & MaxTimes _
& ". Mot de passe?", _
"Saisie du mot de passe")
If Pswd = "" Then
Exit Function
End If
If Pswd <> CorrectPswd Then
essais = essais + 1
If essais <= MaxTimes Then
MsgBox "Erreur !"
End If
Else
GetPassword = True
'MsgBox "Mot de passe correct !"
Exit Function
End If
Loop Until essais > MaxTimes
End Function
---------
Ça te paraît correct?---------------------------
Cela te convient-il ?
Parfaitement! Un grand, grand merci pour ton aide.