Problème combobox dans userform

Résolu
pauldama Messages postés 2 Date d'inscription vendredi 6 avril 2012 Statut Membre Dernière intervention 6 avril 2012 - 6 avril 2012 à 16:48
pauldama Messages postés 2 Date d'inscription vendredi 6 avril 2012 Statut Membre Dernière intervention 6 avril 2012 - 6 avril 2012 à 17:09
Bonjour,

j'ai un problème avec un test sur un combobox.

je m'explique, j'ai un fichier Excel ou à l'ouverture je gère plusieurs utilisateurs mais qu'y n'ont pas les mêmes droits.

Pour cela à l'ouverture du fichier un userform (userform1) s'affiche avec:

un combobox pour le choix de l'utilisateur (combobox1)
un textbox pour le mot de passe (textbox1)

je gère ces utilisateurs et ces mot de passe sur une feuille du fichier.

pour vérifier que le mot de passe correspond à mon utilisateur, j'ai nommé la cellule du mot de passe par son nom d'utilisateur.

jusque ici tous marche.

Cependant lorsque l'utilisateur saisie manuellement dans le combobox et que la saisie n'est pas valide, la macro renvoie une erreur, normale le test du nom de cellule n'existe pas.

je voudrais donc tester le contenu du combobox est valide par rapport au contenu.
ci-dessous mon code:


Private Sub CommandButton1_Click()

'Définition du MDP et de l'utilisateur saisie
MDP = UserForm1.TextBox1.Value
utilisateur = UserForm1.ComboBox1.Value

'Vérification du duo utilisateur/MDP
If utilisateur = "" Then
MsgBox ("Merci de renseigner l'utilisateur")
ElseIf MDP = "" Then
MsgBox ("Merci de renseigner un mot de passe")
ElseIf ThisWorkbook.Sheets("Gestion des utilisateurs").Range(utilisateur) = MDP Then
UserForm1.Hide
UserForm2.Show
Else: MsgBox ("Le mot de passe n'est pas correct")
End If

End Sub


Private Sub UserForm_Initialize()

Dim a As Integer

'Détermine le nombre d'utilisateur
a = ThisWorkbook.Sheets("Gestion des utilisateurs").Range("D1")

'charge les données dans le menu déroulant
ThisWorkbook.Sheets("Gestion des utilisateurs").Activate
UserForm1.ComboBox1.RowSource = ("B2:B" & a)

End Sub


Merci pour votre aide, j'espere avoir été clair

2 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
6 avril 2012 à 16:56
Bonjour,
Ca, c'est en raison de cette fort mauvaise habitude dont je suis trop souvent le témoin !
utilisateur = UserForm1.ComboBox1.Value 

qui te renvoit ce qui se trouve écrit dans la zone d'édition de ta combo (et donc également ce que l'utilisateur y a saisi !)
A proscrire ! A poroscrire également la p)ropriété Text (pour les mêmes raisons)

Utiliser systématiquement :
utilisateur = ComboBox1.List(ComboBox1.ListIndex)
*
et faire en plus une expression conditionnelle (si propriété Listindex = -1, c'est que l'utilisateur n'a rien choisi !)
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
3
pauldama Messages postés 2 Date d'inscription vendredi 6 avril 2012 Statut Membre Dernière intervention 6 avril 2012
6 avril 2012 à 17:09
Merci pour votre réponse.
en effet votre solution fonctionne parfaitement.

Désolé pour le codage peut orthodoxe mais j'apprend au fil de l'eau, je garde donc votre remarque et l'appliquerais.

Merci encore...
0
Rejoignez-nous