Masquer et vérouiller une ou des colonnes par un mot de passe [Résolu/Fermé]

Signaler
-
 Amar -
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

Messages postés
12760
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
13 octobre 2020
2 041
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
>
Messages postés
12760
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
13 octobre 2020

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
Messages postés
12760
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
13 octobre 2020
2 041 > Amar
Postes un exemple de ton fichier sur cjoint.com, fais créer un lien et reviens ici indiquer le lien fourni, je regarderai ça
>
Messages postés
12760
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
13 octobre 2020

Salut. Voilà.
http://www.cjoint.com/c/EGkr6M7AT1S
mot de passe: "mdp"
la macro est dans le module "ThisWorkbook"
Cordialement.
Messages postés
12760
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
13 octobre 2020
2 041 > Amar
Si tu ne veux pas avoir à entrer le mot de passe chaque fois que tu enregistres il ne faut pas les lignes de macro dans BeforeSave mais dans BeforClose qui masquera les colonnes seulement à la fermeture du classeur

Par contre tu as mis un mot de passe mais n'importe qui peut accéder à l'éditeur VBA et trouver le mot de passe. Il faut aussi protéger les macros par un mot de passe : dans l'éditeur VBA aller dans Outils puis¨Propriétes du VBAProject et Protection

Cdlmnt
Via
>
Messages postés
12760
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
13 octobre 2020

C'est exactement ce que je voulais.
Merci beaucoup de votre aide.
Cordialement.