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.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Patrick BASTARD
Bonjour, *Stéphane L* J'ai lu ton post 428cc2da$0$19655$ avec le plus grand intéret :
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
-- Bien cordialement, P. Bastard
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, *Stéphane L*
J'ai lu ton post 428cc2da$0$19655$636a15ce@news.free.fr
avec le plus grand intéret :
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
--
Bien cordialement,
P. Bastard
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, *Stéphane L* J'ai lu ton post 428cc2da$0$19655$ avec le plus grand intéret :
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
-- Bien cordialement, P. Bastard
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.
Stéphane L
"Patrick BASTARD" a écrit dans le message de news:
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...
-- Stéphane
"Patrick BASTARD" a écrit dans le message de news:
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...
"Patrick BASTARD" a écrit dans le message de news:
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...
-- Stéphane
Patrick BASTARD
Bonjour, *Stéphane L*
Rajoute ton mot de passe entre parenthèses : après Scenarios:=True pour protéger et après Sh.Unprotect pour déprotéger Et ça devrait le faire, sans taper le mot de passe.
-- Bien cordialement, P. Bastard
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...
Bonjour, *Stéphane L*
Rajoute ton mot de passe entre parenthèses :
après Scenarios:=True pour protéger
et après Sh.Unprotect pour déprotéger
Et ça devrait le faire, sans taper le mot de passe.
--
Bien cordialement,
P. Bastard
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...
Rajoute ton mot de passe entre parenthèses : après Scenarios:=True pour protéger et après Sh.Unprotect pour déprotéger Et ça devrait le faire, sans taper le mot de passe.
-- Bien cordialement, P. Bastard
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...
Stéphane L
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?
-- Stéphane
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?
-- Stéphane
anonymousA
bonjour,
une macro ce n'est pas comme l'environnement Excel dans lequel on peut effacer ce qu'on vient de faire par le bouton Rétablir.
Si tu veux reprotéger toutes feuilles d'un coup, tu fais la manip inverse de ce qui t'a été indiqué, à savoir
For each sh in thisworkbook.sheets sh.protect "mot de passe" next
A+
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?
bonjour,
une macro ce n'est pas comme l'environnement Excel dans lequel on peut
effacer ce qu'on vient de faire par le bouton Rétablir.
Si tu veux reprotéger toutes feuilles d'un coup, tu fais la manip
inverse de ce qui t'a été indiqué, à savoir
For each sh in thisworkbook.sheets
sh.protect "mot de passe"
next
A+
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?
une macro ce n'est pas comme l'environnement Excel dans lequel on peut effacer ce qu'on vient de faire par le bouton Rétablir.
Si tu veux reprotéger toutes feuilles d'un coup, tu fais la manip inverse de ce qui t'a été indiqué, à savoir
For each sh in thisworkbook.sheets sh.protect "mot de passe" next
A+
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?
Patrick BASTARD
Bonjour, *Stéphane L* J'ai lu ton post 428cd1b3$0$19655$ avec le plus grand intéret :
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 : -------------------------------------------------------------- Sub TestMotPasse() Dim okPswd As Boolean Dim Sh As Worksheet
okPswd = GetPassword("Ton-Mot-De-Passe", 3) ' MsgBox okPswd If okPswd Then Application.ScreenUpdating = False
For Each Sh In ThisWorkbook.Sheets Sh.Unprotect Next Sh
Else End If
End Sub ---------------------------------------------------------- Et ceci dans le même module : ---------------------------------------------------------- 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 -------------------------------------------------------------------- Cela te convient-il ?
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?
Bonjour, *Stéphane L*
J'ai lu ton post 428cd1b3$0$19655$636a15ce@news.free.fr
avec le plus grand intéret :
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 :
--------------------------------------------------------------
Sub TestMotPasse()
Dim okPswd As Boolean
Dim Sh As Worksheet
okPswd = GetPassword("Ton-Mot-De-Passe", 3)
' MsgBox okPswd
If okPswd Then
Application.ScreenUpdating = False
For Each Sh In ThisWorkbook.Sheets
Sh.Unprotect
Next Sh
Else
End If
End Sub
----------------------------------------------------------
Et ceci dans le même module :
----------------------------------------------------------
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
--------------------------------------------------------------------
Cela te convient-il ?
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?
Bonjour, *Stéphane L* J'ai lu ton post 428cd1b3$0$19655$ avec le plus grand intéret :
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 : -------------------------------------------------------------- Sub TestMotPasse() Dim okPswd As Boolean Dim Sh As Worksheet
okPswd = GetPassword("Ton-Mot-De-Passe", 3) ' MsgBox okPswd If okPswd Then Application.ScreenUpdating = False
For Each Sh In ThisWorkbook.Sheets Sh.Unprotect Next Sh
Else End If
End Sub ---------------------------------------------------------- Et ceci dans le même module : ---------------------------------------------------------- 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 -------------------------------------------------------------------- Cela te convient-il ?
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?
Stéphane L
"Patrick BASTARD" a écrit dans le message de news:
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 :
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.
-- Stéphane
"Patrick BASTARD" a écrit dans le message de news:
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 :
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.
"Patrick BASTARD" a écrit dans le message de news:
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 :
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.
-- Stéphane
Patrick BASTARD
Bonjour, *Stéphane L*
Merci à Dave Peterson, et au MPFE, sans lesquels je n'aurais jamais pû te proposer cette solution. Et merci à toi du retour.
-- Bien cordialement, P. Bastard
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.
Bonjour, *Stéphane L*
Merci à Dave Peterson, et au MPFE, sans lesquels je n'aurais jamais pû te
proposer cette solution.
Et merci à toi du retour.
--
Bien cordialement,
P. Bastard
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.
Merci à Dave Peterson, et au MPFE, sans lesquels je n'aurais jamais pû te proposer cette solution. Et merci à toi du retour.
-- Bien cordialement, P. Bastard
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.