Bonjours ami confère,
me voilà avec mon blocage/
D'abord, je vous explique mon objectif :
- dé protéger des feuilles à l'aide d'une boite de dialogue.
Avant cette macro de dé protection, j'ai fait une macro de protection pour les feuilles du classeur où j'utilise un InputBox (jusqu'ici, pas de problème), comme ceci :
Bon, ça peut encore être amélioré mais bon, ça suffit pour le moment.
Maintenant, j'ai voulut faire une macro de dé protection dans le même genre, mais, le problème survient lorsque excel se rend compte que le mot de passe n'est pas correct. Il balance une boite de dialogue toute pourri qui demande le déblocage ou non. (hors, ce que je souhaiterais mettre, c'est une boite du dialogue qui "anticipe" ce buggage prévisible et que l'utilisateur de la macro ne se retrouve pas devant un code, qu'il n'y comprenne rien et qu'il me charcute tout ça à coup de touche de clavier ....)
Vous voyez le dilemme, mais, avec le code, ça devrait mieux passer :
***
Enfin, ça bugge ICI lorsque j'ai mit des instructions apparemment fausses et
comme ça, le code est bon, mais, il manque l'instruction qui pourrait ne plus me pourrir la vie...
Moi, j'ai essayé avec :
- If feuille.Unprotect Password <> Passe Then Exit Sub : là, il attend un Then ou GoTo alors que pour moi, ayant a un.
ou
- If feuille.Password <> Passe Then Exit Sub : et là, y dit rien, mais après, il me dit " propriété ou méthode non gérée par cet objet "
Donc, ça morche poo, le VBA souhaite quelque chose mais, je sais pas quoi.
Je me posais la question des booleen, avec un truc du style :
If ( feuille.Unprotect Password:=Passe ) := False Then : mais, ça morche poo aussi....
Donc, là, je suis en manqe d'inspiration.
et pis, les seuls trucs que l'on me refile sur le net sont des logiciel pour récupérer des passes or ici, je cherche juste à la gérer sans le connaitre ce que VBA n'a pas l'air d'aimer.
Enfin bon, si vous avez une idée, n'hésiter pas à répondre, moi, je cède la plume...
Bonne réflexion !
me voilà avec mon blocage/
D'abord, je vous explique mon objectif :
- dé protéger des feuilles à l'aide d'une boite de dialogue.
Avant cette macro de dé protection, j'ai fait une macro de protection pour les feuilles du classeur où j'utilise un InputBox (jusqu'ici, pas de problème), comme ceci :
Code:
Sub GPROTECT()
'
' Protection de toutes les feuilles du classeur (quelque soit le nombre)
' Le mot de passe est ici choisi
'
Dim Passe As String
Passe = InputBox(" Le mot de passe ? ", " Protection des feuilles du classeur ", "Taper votre mot de passe ici", 100, 50)
If Passe = "" Or Passe = "Taper votre mot de passe ici" Then MsgBox "C'est mieux de mettre un mot de passe, tu peux recommencer l'instruction. T'inquiètes pas, ça viendra avec le temps..."
If Passe = "" Or Passe = "Taper votre mot de passe ici" Then Exit Sub
For Each feuille In Sheets
feuille.Protect Password:=Passe, DrawingObjects:=True, Contents:=True, Scenarios:=True _
, AllowFormattingColumns:=True, AllowFormattingRows:=True, AllowSorting:= _
True, AllowFiltering:=True, AllowUsingPivotTables:=True
feuille.EnableSelection = xlUnlockedCells
Next feuille
End Sub
Bon, ça peut encore être amélioré mais bon, ça suffit pour le moment.
Maintenant, j'ai voulut faire une macro de dé protection dans le même genre, mais, le problème survient lorsque excel se rend compte que le mot de passe n'est pas correct. Il balance une boite de dialogue toute pourri qui demande le déblocage ou non. (hors, ce que je souhaiterais mettre, c'est une boite du dialogue qui "anticipe" ce buggage prévisible et que l'utilisateur de la macro ne se retrouve pas devant un code, qu'il n'y comprenne rien et qu'il me charcute tout ça à coup de touche de clavier ....)
Vous voyez le dilemme, mais, avec le code, ça devrait mieux passer :
Code:
Sub GDéPROTECT()
'
' Déprotection de toutes les feuilles du classeur (quelque soit le nombre)
' Le mot de passe est ici choisi
'
Dim Passe As String
Passe = InputBox(" Le mot de passe ? ", " Protection des feuilles du classeur ", "Taper votre mot de passe ici", 100, 50)
If Passe = "" Or Passe = "Taper votre mot de passe ici" Then bouton = MsgBox(" Faut au moins mettre une lettre pour déprotéger, hein, sinon ...", 64, "Bah, t'as pas le code ?")
If Passe = "" Or Passe = "Taper votre mot de passe ici" Then Exit Sub
For Each feuille In Sheets
' SI le mot de passe est faute, ça buggera ICI
feuille.Unprotect Password:=Passe
Next feuille
ActiveWorkbook.Unprotect Password:=Passe
End Sub
Enfin, ça bugge ICI lorsque j'ai mit des instructions apparemment fausses et
comme ça, le code est bon, mais, il manque l'instruction qui pourrait ne plus me pourrir la vie...
Moi, j'ai essayé avec :
- If feuille.Unprotect Password <> Passe Then Exit Sub : là, il attend un Then ou GoTo alors que pour moi, ayant a un.
ou
- If feuille.Password <> Passe Then Exit Sub : et là, y dit rien, mais après, il me dit " propriété ou méthode non gérée par cet objet "
Donc, ça morche poo, le VBA souhaite quelque chose mais, je sais pas quoi.
Je me posais la question des booleen, avec un truc du style :
If ( feuille.Unprotect Password:=Passe ) := False Then : mais, ça morche poo aussi....
Donc, là, je suis en manqe d'inspiration.
et pis, les seuls trucs que l'on me refile sur le net sont des logiciel pour récupérer des passes or ici, je cherche juste à la gérer sans le connaitre ce que VBA n'a pas l'air d'aimer.
Enfin bon, si vous avez une idée, n'hésiter pas à répondre, moi, je cède la plume...
Bonne réflexion !