Forum Clubic

Mot de pass sur VBA

bonjour
voila je cré un fichier exel qui sera partagé, et je voudrai que chaque page soit protéger par un mot de pass
il faudrai qu’a chaque foi que l’on change de page, un mot de pass soit demandé automatiquement
et si possible pas avec d’inputbox ou de formulaire, sauf si vous connaissez un moyen de mettre des étoile à la place des lettre quand on pate le mot de passe

merci d’avance!!

rebonjour
g trouver une méthode
sur chaque page je met:

Private Sub Worksheet_Activate()
ActiveSheet.Unprotect
End Sub

Private Sub Worksheet_Deactivate()
ActiveSheet.Protect Password:=“azerty”, DrawingObjects:=True, Contents:=True, Scenarios:=True
End Sub

comme excel demande le mot de pass a chaque fois mais il faudrait que si le mot de pass est faux il renvoi a la page d’aceuille (tous el monde peut y aller)

merci

Salut,

Ton truc est jouable, mais c’est un peu galère. Est-ce que c’est grave si les feuilles s’affichent mais que tu peux pas écrire dedans sans avoir le mot de passe? Sinon il faudra passer par un formulaire (et c’est possible d’avoir les * à la place des caractères dans un champ, c’est la propriété PasswordChar)

EDIT: grillé, mais tu peux voir le contenu des feuilles avec cette méthode. Si tu fais “Annuler”, rien ne t’empêche de te balader sur la feuille, c’est juste que tu ne peux pas écrire dedans. Et une fois que la feuille a été déprotégé, elle ne se reverrouille pas donc tu peux retourner dedans sans avoir à retaper le mot de passe (en tout cas chez moi, j’ai Excel 2007)
Edité le 27/07/2010 à 09:59

la solution pour les mot de pass marche
excel redemande à chaque changement de page
il a fallu que je rajoute activesheet.protect ds la macro d’ouverture du classeur
(en effet le classeur souvre sur la page d’acceuille mais lors du premier clic sur un onglet cellui-ci n’était pas protéger, mais apres tous marché tres bien, lors du deuxième clic sur un autre onglet la page étai bien protéger)

par contre lorsque le mot de pass et faux VBa m’affiche un message d’erreur, il faudrai que l’orsque le mot de pass est faux renvoyé l’utilisateur sur la page d’accueille*

genre if password = false
(je vaudrai éviter d’inscrire le mot de pass à plusieur endroit ds le program)
then worksheets(“Accueille”).activate

Tu peux utiliser la fonction suivante dans un module séparé:

Function IsSheetProtected(ByVal sSheetName As String) As Boolean
    With Worksheets(sSheetName)
        IsSheetProtected = (.ProtectContents Or .ProtectDrawingObjects Or .ProtectScenarios)
    End With
End Function

Ensuite, lorsque tu fais appel à ta routine “Worksheet_Activate”, tu peux tester la protection de la feuille, et donc du coup si la fonction renvoie TRUE, il faut renvoyer l’utilisateur vers la page d’accueil. Enfin, plutôt que de taper ces routines dans chaque feuille, tu peux la modifier un poil et dans l’objet ThisWorkbook, utiliser la routine événementielle suivante:

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

End Sub