VBA et Listbox

Bonsoir,

Je suis en train de créer un petit programme de facturation. Au niveau de la facture je n'ai pas de problème, par contre concernant le module de gestion clients que j'ai créé on y accède en cliquant à droite sur le bouton de la facture "gestion client" et là je rencontre des problèmes liés au listbox. Dans la première partie "ajouter, supprimer, modifier les clients", je ne rencontre pas de problèmes pour ajouter dans la feuille 2 (qui correspond à ma base de données clients) les nouvelles données du nouveau client, mais en revanche pour la partie modification je n'arrive pas à trouver le code ou le moyen qui me permettrait de modifier les données du client souhaité grâce à la listbox.

Enfin, dans la deuxième partie "accéder à la base de données", je ne trouve pas non plus le moyen de remplir les informations du client choisi de la liste box dans les champs apparrentés de la facture (nom, prénom, adresse,...).

Merci d'avance pour votre aide.

Cordialement

89facture.xlsm (28.20 Ko)

Bonsoir Heavyrhyme,

Voici trois événements pour obtenir ce que tu souhaites.

Pour le chargement des textbox d'identification du client, il faut double-cliquer sur un client dans la listbox :

Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
   With ListBox1
      If .ListIndex > -1 Then
         nom = .List(.ListIndex, 0)
         prenom = .List(.ListIndex, 1)
         adresse = .List(.ListIndex, 2)
         cpetville = .List(.ListIndex, 3)
         pays = .List(.ListIndex, 4)
         tel = .List(.ListIndex, 5)
         port = .List(.ListIndex, 6)
         email = .List(.ListIndex, 7)
      End If
   End With
End Sub

Mise à jour de la base de données Clients quand on clique sur Modifier :

Private Sub CommandButton2_Click()
   Dim Lig As Long, Tb
   If ListBox1.ListIndex > -1 Then
      ' on récupère la première ligne de la base de données
      ' client et on ajoute l'index de la ligne du client dans la table
      Lig = Feuil2.Range("clients").Row + ListBox1.ListIndex
      'On enregistre le client dans la table
      With Feuil2
         .Cells(Lig, 1) = nom
         .Cells(Lig, 2) = prenom
         .Cells(Lig, 3) = adresse
         .Cells(Lig, 4) = cpetville
         .Cells(Lig, 5) = pays
         .Cells(Lig, 6) = tel
         .Cells(Lig, 7) = port
         .Cells(Lig, 8) = email
      End With
      ' On vide les TextBox
      For Each Tb In Me.Controls
         If TypeName(Tb) = "TextBox" Then Tb = Empty
      Next Tb
   End If
End Sub

Mise à jour de l'entête de la facture à partir de Userform3:

Private Sub CommandButton1_Click()
   Dim Lig As Long, Tb
   If ListBox1.ListIndex > -1 Then
      ' on récupère la première ligne de la base de données
      ' client et on ajoute l'index de la ligne du client dans la table
      Lig = Feuil2.Range("clients").Row + ListBox1.ListIndex
      'On enregistre le client dans la table
      With Feuil1
         .Range("D4") = ListBox1.List(ListBox1.ListIndex, 0) & " " & ListBox1.List(ListBox1.ListIndex, 1)
         .Range("D5") = ListBox1.List(ListBox1.ListIndex, 2)
         .Range("D6") = ListBox1.List(ListBox1.ListIndex, 3)
      End With
   End If
End Sub

Sinon, tu as un problème de compilation dans le fichier que tu as mis à disposition, il faut que tu supprimes le second End Sub.

Merci !

Rechercher des sujets similaires à "vba listbox"