Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 22/10/2011, 01h51   #1
Invité de passage
 
Homme Sébastien
Étudiant
Inscription : octobre 2011
Messages : 2
Détails du profil
Informations personnelles :
Nom : Homme Sébastien
Localisation : France, Meurthe et Moselle (Lorraine)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : octobre 2011
Messages : 2
Points : 0
Points : 0
Par défaut Pb VB sur utilisation de VLookup

Bonjour à tous,

je viens vers vous car je dois faire un projet excel en cours et je rencontre un problème dans la programmation VB.

Je vous expose la situation : j'ai une userform qui me sert à l'identification de l'utilisateur. il entre son identifiant et son mot de passe. Et mon objectif est d'aller voir si ces données correspondent avec la liste des utilisateurs qui se trouve dans une feuille excel "login".

J'ai donc le code suivant dans le bouton OK de ma userform login

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
Private Sub LoginOK_Click()
Dim test As String
 
identifiant = identifiant.Value
password = mdp.Value
test = WorksheetFunction.VLookup(identifiant, Sheets("login").Range("A2:B5"), 2, False)
 
    If test = password Then
        identifiant.Value = ""
        mdp.Value = ""
        Me.Hide
        accueil.Show
     Else:
        MsgBox "erreur d'identification, veuillez recommencer", , "Erreur"
        identifiant.Value = ""
        mdp.Value = ""
        identifiant.SetFocus
    End If
 
End Sub
- lorsque tout se passe bien (l'identifiant existe dans la liste et le mot de passe est correcte) tout va bien.

Mais mon gros problème est que si l'utilisateur ne précise pas d'identifiant, ou s'il précise un nom d'utilisateur qui n'est pas dans mon tableau excel, ca plante en me métant un message d'erreur :

Citation:
Erreur d'exécution '1004' :
Impossible de lire la propriété Vlookup de la classe WorksheetFunction
Pourriez-vous m'aider à résoudre ce problème.

Merci d'avance
xuorel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/10/2011, 07h21   #2
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 773
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 773
Points : 16 849
Points : 16 849
Envoyer un message via Skype™ à bbil
Bonjour,

cette erreur survient si VlookUp ne trouve pas ton identifiant... utilise le gestionnaire d'erreur modifie ton code :

Code :
1
2
3
4
5
6
7
8
9
10
 
Private Sub LoginOK_Click() 
Dim bIntrouvable As Boolean
(....)
On Error Resume Next
test = WorksheetFunction.VLookup(identifiant, Sheets("login").Range("A2:B5"), 2, False)
bIntrouvable = (Err = 1004) ' met à 1 le flag bIntrouvable si l'identifiant est introuvable
On Error GoTo 0 'Reinialise traitement d'erreur
   If test = Password And Not bIntrouvable Then
(..)
bbil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/10/2011, 12h58   #3
Invité de passage
 
Homme Sébastien
Étudiant
Inscription : octobre 2011
Messages : 2
Détails du profil
Informations personnelles :
Nom : Homme Sébastien
Localisation : France, Meurthe et Moselle (Lorraine)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : octobre 2011
Messages : 2
Points : 0
Points : 0
CA MARCHE !!! merci beaucoup.

Pourriez-vous m'expliquer rapidement le fonctionnement d'une ligne comme celle ci :
Code :
bIntrouvable = (Err = 1004)
Merci
xuorel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/10/2011, 15h32   #4
Membre Expert
 
Inscription : août 2006
Messages : 1 435
Détails du profil
Informations forums :
Inscription : août 2006
Messages : 1 435
Points : 1 753
Points : 1 753
Bonjour,
Err = 1004 retourne un booleen soit VRAI si c'est vérifié sinon FAUX
et on l'affecte à la variable bIntrouvable
Code :
1
2
 
bIntrouvable = (Err = 1004)
est plus beau que
Code :
1
2
3
4
5
6
 
If Err = 1004 Then
 bIntrouvable = True
Else
 bIntrouvable = False
EndIf
C'est plus beau et plus court.
helas est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h46.


 
 
 
 
Partenaires

Hébergement Web