winieloursonaub
Messages postés8Date d'inscriptiondimanche 11 juin 2006StatutMembreDernière intervention15 septembre 2006
-
2 août 2006 à 18:52
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 2011
-
3 août 2006 à 03:46
Bonjour a tous,
Voilà je suis entrain de faire un programme sur excel vba mais bon je débute alors je ne suis pas très compétente et donc j'ai besoin de votre aide.
Sur une feuille excel j'ai créer un bouton qui ouvre une fenêtre d'idendification (nom utilisateur + mot de passe) suivant la réponse je veux qu'il ouvre tel ou tel userform. Voici mon code mais à un endroit je ne sais pas.
Merci de m'aider et de m'apporter une solution si possible.
Private Sub Ok_Btn_Click()
If ID_Util = Empty Then End
' Recherche du profil
Set Rech = Range("Users").Find(ID_Util, LookIn:=xlValues)
If Not Rech Is Nothing Then
' Contrôle du mot de passe
If Pwd_Util = Rech.Cells(1, 2) Then
' Si Ok mémorisation du niveau d'utilisateur
Range("Niveau_en_cours") = Rech.Cells(1, 3)
' Ouverture du premier écran de l'application
?????????????????????????????????????????????????????????????
' Mot de passe invalide
MsgBox ("Mot de passe invalide")
' End
End If
Else
' Utilisateur inconnu
MsgBox ("Utilisateur inconnu")
' End
End If
End Sub
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 2 août 2006 à 23:51
Premièrement, tu ne devrais jamais utiliser END qui ne termine pas un programme toujours de façon adéquate... C'est mon avis...
Ensuite, ce serait bien de savoir ce qui est inscrit dans
Range("Niveau_en_cours"). Est-ce que ç'a rapport avec le nom des
feuilles à sélectionner, ou à l'index des feuilles à sélectionner ou
quelque chose d'autre qui pourrait faciliter une réponse (?)
Dans le «Select Case», j'ai mis 1, 2, 3, mais ç'aurait pu être autre
chose puisque je ne sais ce qui y est inscrit. En fait, il faut que tu
mettes comme Case, les possibilités que tu peux retrouver dans le
Range(Niveau_en_Cours") et agir selon chaque cas.
Private Sub Ok_Btn_Click()
If Not IsEmpty(ID_Util) Then ' ou If ID_Util <> "" si c'est un textbox
' Recherche du profil
Set Rech = Range("Users").Find(ID_Util, LookIn:=xlValues)
If Not Rech Is Nothing Then
' Contrôle du mot de passe
'Ici j'y serais allé comme ça, mais c'est question de choix et d'habitude
'If Pwd_Util = Range(Rech.Address).Offset(0,1) then
If Pwd_Util = Rech.Cells(1, 2) Then
' Si Ok mémorisation du niveau d'utilisateur
Range("Niveau_en_cours") = Rech.Cells(1, 3)
' Ouverture du premier écran de l'application
'Ici je ne sais pas ce qui est inscrit, donc comment ou quoi ouvrir
Select Case Range("Niveau_en_cours")
Case 1 ' ou "Feuil1" ou autre que contient Range("Niveau_en_cours")
Sheets(1).activate
Case 2
Sheets("Niveau_en_cours").activate
Case 3
Sheets("Tu mets le nom en dur").activate
Case Else
'Action à faire si nécessaire...
End select
?????????????????????????????????????????????????????????????
Else
' Mot de passe invalide
MsgBox ("Mot de passe invalide")
Unload me ' ou encore laisser affiché et vider les textbox
End If
Else
' Utilisateur inconnu
MsgBox ("Utilisateur inconnu")
Unload me ' ou encore laisser affiché et vider les textbox
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 3 août 2006 à 03:46
Humm qui dit "Range("Users")", dit que tes infos se trouvent dans des cellules (donc facilement accessibles par les utilisateurs).
Tu devrais plutôt utiliser des constantes dans un module.
@++
Mortalino
Le mystérieux chevalier, "Provençal, le Gaulois"