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
13223
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
6 décembre 2021
2 293
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
13223
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
6 décembre 2021

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
13223
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
6 décembre 2021
2 293 > 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
13223
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
6 décembre 2021

Salut. Voilà.
http://www.cjoint.com/c/EGkr6M7AT1S
mot de passe: "mdp"
la macro est dans le module "ThisWorkbook"
Cordialement.
Messages postés
13223
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
6 décembre 2021
2 293 > 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
13223
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
6 décembre 2021

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