Liste deroulante VBA

Bonsoir à tous.

Je suis en train de créer un fichier client pour ma compagne sur excel, mais des années se sont écoulées sans pratique de code.

Dans ce fichier j'ai 3 feuilles. Listing_client / Tarif / Factures.

Lors d'une prestation, avec un formulaire VBA, je charge mon listing client dans une liste déroulante pour pouvoir sélectionner mon fameux client, j'arrive a afficher le nom et prénom (pas besoin de plus d'informations) mais je voudrais récupérer le mail pour un envoi en facture automatique, mais je n'arrive pas.

Voici le code que j'ai tapé. pouvez vous m'aider ? L'idéal serait de remplir un Textbox avec le fameux mail mais je séche depuis quelques jours

Private Sub UserForm_Activate()
   Dim contenumail As String

    Dim ligne As Integer: ligne = 2
    While (ThisWorkbook.Worksheets("Tarifs").Cells(ligne, 1).Value <> "")
        Listearticle.AddItem (ThisWorkbook.Worksheets("Tarifs").Cells(ligne, 1).Value)
        ligne = ligne + 1
        ThisWorkbook.Worksheets("Facture").Activate
    Wend
        Dim choix As Integer: choix = 2
        Dim nom1 As String
        Dim prenom1 As String
        Dim email1 As String

    While (ThisWorkbook.Worksheets("Listing_client").Cells(choix, 1).Value <> "")

        nom1 = ThisWorkbook.Worksheets("Listing_client").Cells(choix, 2).Value
        prenom1 = ThisWorkbook.Worksheets("Listing_client").Cells(choix, 3).Value
        email1 = ThisWorkbook.Worksheets("Listing_client").Cells(choix, 8).Value

        choixclient.AddItem nom1 & " " & prenom1

        choix = choix + 1
    Wend

End Sub

Private Sub validerclient_Click()
    MsgBox ("Client : " & choixclient.Value)
    MsgBox ("Email :" & email1)
    Range("E3").Value = choixclient.Value

End Sub

Bonjour,

Voici un exemple en supposant que :

- la base clients soit un tableau structuré nommé "Clients",

- le nom du client soit dans une colonne nommée "Nom",

- le mail du client soit dans une colonne nommée "Mail" :

Private Sub UserForm_Initialize() 'à l'initialisation de l'userform, avant l'activation
with me 'avec moi, l'userform
    .cbxclient.list = range("Clients[Nom]").value 'alimentation de la liste des clients
end with
End Sub

Private Sub cbxclient_change() 'à chaque chgt de valeur de cbxclient
with me
    pos = application.match(cbxclient.value, range("Clients[Nom]"), 0) 'position dans la colonne du client sélectionné
    if iserror(pos) then .txtMail = "" else .txtMail = application.index(range("Clients[Mail]"), pos) 'si <> "", renvoie mail correspondant
end with
End Sub

cbxclient est la combobox avec la liste des clients, txtMail est la textbox devant recevoir l'adresse mail.

Cdlt,

Merci de ta réponse aussi rapide. pour la combobox ça se remplit avec le nom uniquement, peut on rajouter le prénom (en cas de doublon sur le nom) ?

après j'ai un message d'erreur sur la ligne :

 pos = application.match(cbxclient.value, range("Clients[Nom]"), 0) 'position dans la colonne du client sélectionné

Erreur de syntaxe.

Mon tableau se trouve dans une feuille "Listing_client". le tableau se nomme Clientele. il est configuré :

Numéro/ Nom / Prénom / Adresse / CP / Ville / Telephone / Email / Naissance

Bonjour,

Ce code est un exemple, il faut donc adapter les noms pour qu'ils coïncident avec ceux des tes objets et références.

Sinon, pour les prénoms, voici un essai :

Private Sub UserForm_Initialize() 'à l'initialisation de l'userform, avant l'activation
with me 'avec moi, l'userform
    with .cbxclient
        .columncount = 2
        .list = range("Clients[Nom]").resize(, 2).value 'alimentation de la liste des clients
    end with
end with
End Sub

Private Sub cbxclient_change() 'à chaque chgt de valeur de cbxclient
with me
    pos = application.match(cbxclient.value, range("Clients[Nom]"), 0) 'position dans la colonne du client sélectionné
    if iserror(pos) then .txtMail = "" else .txtMail = application.index(range("Clients[Mail]"), pos) 'si <> "", renvoie mail correspondant
end with
End Sub

Mais à vrai dire, j'ai tendance à penser que la colonne Prénom ne sert à rien : on peut mettre le nom et le prénom directement dans la colonne Nom.

Cdlt,

Rechercher des sujets similaires à "liste deroulante vba"