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 25/11/2011, 19h27   #1
Membre actif
 
Avatar de jawed
 
Homme
Comptable
Inscription : mars 2004
Messages : 302
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 34
Localisation : Algérie

Informations professionnelles :
Activité : Comptable
Secteur : Finance

Informations forums :
Inscription : mars 2004
Messages : 302
Points : 184
Points : 184
Par défaut Recherche Dans un formulaire

Bonjour le forum
j'ai un formulaire que j'essai de créer j'ai inséré un combobox et une zone de texte puis j'ai inséré ce code
Code :
1
2
3
4
Private Sub UserForm_Initialize()
    ListeEmpCB.RowSource = Sheets("Liste").Range("A1:A1000")
    NomEmp = Application.WorksheetFunction.VLookup(ListeEmpCB.Value, "Tab", 2, False)
End Sub
Cela ne marche pas
Merci de votre aide
Cordialement
NB: Tab est le d'une table de la feuille Liste
jawed est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/11/2011, 20h20   #2
Expert Confirmé Sénior
 
Avatar de mercatog
 
Inscription : juillet 2008
Messages : 5 848
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 5 848
Points : 13 907
Points : 13 907
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
Private Sub UserForm_Initialize()
 
ListeEmpCB.RowSource = "Liste!A1:A1000"
End Sub
 
Private Sub ListeEmpCB_Change()
Dim NomEmp As String
 
If Me.ListeEmpCB.Value <> "" Then
    NomEmp = Application.WorksheetFunction.VLookup(Me.ListeEmpCB.Value, Worksheets("Liste").Range("Tab"), 2, False)
    MsgBox NomEmp
End If
End Sub
__________________
Cordialement.
mercatog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/11/2011, 20h53   #3
Membre actif
 
Avatar de jawed
 
Homme
Comptable
Inscription : mars 2004
Messages : 302
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 34
Localisation : Algérie

Informations professionnelles :
Activité : Comptable
Secteur : Finance

Informations forums :
Inscription : mars 2004
Messages : 302
Points : 184
Points : 184
Bonjour mercatog et merci pour votre aide
ton code debute bien mais il bug dans cette ligne
Code :
NomEmp = Application.WorksheetFunction.VLookup(Me.ListeEmpCB.Value, Worksheets("Liste").Range("Tab"), 2, False)
en m'affichant
Citation:
Impossible de lire la proprieté Vlookup de la Classe WorksheetFunction
merci d'avance
jawed est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/11/2011, 21h00   #4
Expert Confirmé Sénior
 
Avatar de mercatog
 
Inscription : juillet 2008
Messages : 5 848
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 5 848
Points : 13 907
Points : 13 907
Tu as nommé la plage A1:B1000 Tab de ta feuille Liste
Sinon,
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
Private Sub UserForm_Initialize()
 
ListeEmpCB.RowSource = "Liste!A1:A1000"
End Sub
 
Private Sub ListeEmpCB_Change()
Dim NomEmp As String
 
If Me.ListeEmpCB.Value <> "" Then
    NomEmp = Application.WorksheetFunction.VLookup(Me.ListeEmpCB.Value, Worksheets("Liste").Range("A1:B1000"), 2, False)
    MsgBox NomEmp
End If
End Sub
__________________
Cordialement.
mercatog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/11/2011, 21h29   #5
Membre actif
 
Avatar de jawed
 
Homme
Comptable
Inscription : mars 2004
Messages : 302
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 34
Localisation : Algérie

Informations professionnelles :
Activité : Comptable
Secteur : Finance

Informations forums :
Inscription : mars 2004
Messages : 302
Points : 184
Points : 184
Effectivement mercatog ma plage A1:E1000 s'appel Tab
Aussi en changeant dans ton code Tab par A1:E1000 ça Bug toujours
Encor merci
jawed est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/11/2011, 22h20   #6
Expert Confirmé Sénior
 
Avatar de mercatog
 
Inscription : juillet 2008
Messages : 5 848
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 5 848
Points : 13 907
Points : 13 907
Dans ta feuille Liste, tu as des données de A1 à A1000 avec lesquelles tu remplies ta ComboBox ListeEmpCB. A chaque choix d'un item dans la ComboBox, dans la variable NomEmp récupère la valeur de la même ligne sur la colonne B.
Étrange quand même.

Sinon 1: autre proposition
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Private Sub UserForm_Initialize()
 
ListeEmpCB.RowSource = "Liste!A1:A1000"
End Sub
 
Private Sub ListeEmpCB_Change()
Dim NomEmp As String
Dim c As Range
 
If Me.ListeEmpCB.Value <> "" Then
    Set c = Worksheets("Liste").Range("A:A").Find(Me.ListeEmpCB.Value, LookIn:=xlValues, Lookat:=xlWhole)
    If Not c Is Nothing Then
        NomEmp = c.Offset(0, 1).Value
        Set c = Nothing
        MsgBox NomEmp
 
        '...
    End If
End If
End Sub

Sinon 2: Mieux avec Combo à 2 colonnes
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Private Sub UserForm_Initialize()
 
With Me.ListeEmpCB
    .RowSource = "Liste!A1:B1000"
    .ColumnWidths = "100;0"
End With
End Sub
 
Private Sub ListeEmpCB_Change()
Dim NomEmp As String
 
With Me.ListeEmpCB
    If .ListIndex > -1 Then
        NomEmp = .List(.ListIndex, 1)
        MsgBox NomEmp
    End If
End With
End Sub
__________________
Cordialement.
mercatog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/11/2011, 22h43   #7
Membre actif
 
Avatar de jawed
 
Homme
Comptable
Inscription : mars 2004
Messages : 302
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 34
Localisation : Algérie

Informations professionnelles :
Activité : Comptable
Secteur : Finance

Informations forums :
Inscription : mars 2004
Messages : 302
Points : 184
Points : 184
Merci pour ton aide mercatog
tes codes affiche le non de mon effectif en MsgBox mais moi je veut si c'est possible que le résultat s'affiche dans la zone de texte NomEmp
Cordialement
jawed est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/11/2011, 23h01   #8
Expert Confirmé Sénior
 
Avatar de mercatog
 
Inscription : juillet 2008
Messages : 5 848
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 5 848
Points : 13 907
Points : 13 907
J'avais montré le chemin et à toi d'adapter après compréhension
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Private Sub UserForm_Initialize()
 
With Me.ListeEmpCB
    .RowSource = "Liste!A1:B1000"
    .ColumnWidths = "100;0"
End With
End Sub
 
Private Sub ListeEmpCB_Change()
 
With Me.ListeEmpCB
    If .ListIndex > -1 Then Me.NomEmp.Value = .List(.ListIndex, 1)
End With
End Sub
__________________
Cordialement.
mercatog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/11/2011, 23h40   #9
Membre actif
 
Avatar de jawed
 
Homme
Comptable
Inscription : mars 2004
Messages : 302
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 34
Localisation : Algérie

Informations professionnelles :
Activité : Comptable
Secteur : Finance

Informations forums :
Inscription : mars 2004
Messages : 302
Points : 184
Points : 184
Merci mercatog pour ton aide précieuse
Cordialement
A bientôt
jawed est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



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


 
 
 
 
Partenaires

Hébergement Web