Masquer et vérouiller une ou des colonnes par un mot de passe

Résolu/Fermé
Amar - 10 juil. 2015 à 01:04
 Amar - 11 juil. 2015 à 01:02
Bonjour,
J' ai Masqué et vérouillé des colonnes par un mot de passe d'un fichier excel par le macro suivant: Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If Sheets("Feuil1").Range("G:G").EntireColumn.Hidden = False Then
Sheets("Feuil1").Range("G:G").EntireColumn.Hidden = True
End If
Sheets("Feuil1").Protect "mdp"
End Sub
Private Sub Workbook_Open()
reponse = InputBox("Saisir le mot de passe pour accès complet ou cliquer sur annuler", "Mot de passe")
If reponse <> "" And reponse = "mdp" Then
Sheets("Feuil1").Unprotect reponse
If Sheets("Feuil1").Range("G:G").EntireColumn.Hidden = True Then
Sheets("Feuil1").Range("G:G").EntireColumn.Hidden = False
End If
End If
End Sub. Et ça a marché. Mais le problème est que chaque fois que j'enregistre, il faut que je mette le mot de passe pour afficher les colonnes masquées.
Et si j'utilise la macro dans une autre feuille pour masquer des colonnes, ça ne marche pas.
Aider moi svp.

1 réponse

via55 Messages postés 14040 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 5 février 2023 2 550
10 juil. 2015 à 08:48
Bonjour

1) Mettre dans before save Sheets("Feuil1").Unprotect "mdp" avant le If

2) Si dans toutes les feuilles c'est la colonne G à masquer tu peux faire une boucle du style
Par exemple pour protéger les feuilles 1 à 3
For n=1 to 3
Sheets(n)Unprotect reponse
If Sheets(n).Range("G:G").EntireColumn.Hidden = True Then
Sheets(n).Range("G:G").EntireColumn.Hidden = False
Next
End If

Sinon il faut rajouter des lignes
If Sheets("Feuille2").Range("K:K").EntireColumn.Hidden = True Then
Sheets("Feuille2").Range("K:K").EntireColumn.Hidden = False

Cdlmnt
Via
0
Bonjour via55.
"1) Mettre dans before save Sheets("Feuil1").Unprotect "mdp" avant le If ". comment faire ça car je ne le vois pas dans la macro!
Si tu peux me modifier la macro, celà serait plus simple pour moi.
Cordialement
0
via55 Messages postés 14040 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 5 février 2023 2 550 > Amar
10 juil. 2015 à 17:38
Bonjour

Justement il n'y a pas de déprotection (donc Excel te demande le code) c'est pour cela qu'il faut rajouter cette ligne
 Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) 
 Sheets("Feuil1").Unprotect "mdp" 'deprotection
If Sheets("Feuil1").Range("G:G").EntireColumn.Hidden = False Then 
 Sheets("Feuil1").Range("G:G").EntireColumn.Hidden = True 
 End If 
 Sheets("Feuil1").Protect "mdp" 
 End Sub 


Cdlmnt
Via
0
Amar > via55 Messages postés 14040 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 5 février 2023
10 juil. 2015 à 19:07
Bonjour
J'ai essayé mais rien n' a changé:il faut que je mette le mot de passe pour afficher les colonnes masquées chaque fois que j'enregistre mon fichier
0
via55 Messages postés 14040 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 5 février 2023 2 550 > Amar
10 juil. 2015 à 19:27
Postes un exemple de ton fichier sur cjoint.com, fais créer un lien et reviens ici indiquer le lien fourni, je regarderai ça
0
Amar > via55 Messages postés 14040 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 5 février 2023
10 juil. 2015 à 20:07
Salut. Voilà.
http://www.cjoint.com/c/EGkr6M7AT1S
mot de passe: "mdp"
la macro est dans le module "ThisWorkbook"
Cordialement.
0