Remplissage automatique des champs suite au choix dans liste déroulante

Bonjour tout le monde,

J'ai un problème sur un code VBA.

Je m'explique, j'ai créé un UserForm afin d'alimenter une base de données.

Je débute en VBA mais grâce a plusieurs tuto et forum, jusque là j'ai réussi a me "dépatouiller".

J'aimerais qu'à partir d'un choix fait dans ma liste déroulante les champs se remplissent automatiquement en fonction de ce qui a été renseigné dans la base de données.

J'ai trouvé ce code :

Private Sub ComboBox1_Click()

Dim Ws As Worksheet
Dim I As Integer

If Me.ComboBox1.ListIndex = -1 Then Exit Sub
    lNumL = Me.ComboBox1.ListIndex + 2

    ComboBox1 = Ws.Cells(lNumL, "ListeNMission")

    For I = 1 To 39
      Me.Controls("TextBox" & I) = Ws.Cells(lNumL, I + 2)
    Next I

End Sub

Mais il me mets la fameuse erreur d'exécution 91, or comme je n'y connais encore pas grand chose en VBA je ne vois pas ce qui cloche... J'ai beau chercher sur les forums et tuto je ne vois pas

L'erreur est sur la ligne :

ComboBox1 = Ws.Cells(lNumL, "ListeNMission")

Puis sur la ligne :

Me.Controls("TextBox" & I) = Ws.Cells(lNumL, I + 2)

Sachant que ma "ListeNMission" est un nom pour une liste dynamique, je ne sais pas si ça change grand chose.

Et que dans le "général"/"déclaration" j'ai mis

Dim lNumL As Long

Merci d'avance pour votre attention et votre aide!

Bonjour Mariz, bonjour le forum,

Peut-être comme ça :

ComboBox1 = Ws.Cells(lNumL, Range("ListeNMission").Column)

Private Sub ComboBox1_Click()
Dim Ws As Worksheet
Dim I As Integer
If Me.ComboBox1.ListIndex = -1 Then Exit Sub
lNumL = Me.ComboBox1.ListIndex + 2
ComboBox1 = Ws.Cells(lNumL, Range("ListeNMission").Column)
For I = 1 To 39
    Me.Controls("TextBox" & I) = Ws.Cells(lNumL, I + 2)
Next I
End Sub

mais en fait je ne vois pas bien ce que tu veux faire avec cette ligne !?...

Merci ThauThème,

Le but étant de faire que quand je clique sur une donnée dans ma liste déroulante, les "TextBox" de mon formulaire ce remplissent automatiquement.

Je mettrai bien mon fichier en pièce jointe, mais il est assez volumineux

Du coup j'ai essayé ta solution qui malheureusement ne fonctionne pas...

Bonjour,

Je reposte au cas où cela puisse servir a quelqu'un...

J'ai réussi a trouver la solution pour mon cas, en nommant chaque champs :

Private Sub ComboBox1_Change()

Dim Ligne As Integer

Set Ws = ActiveSheet
 'Les champs restent vident si non renseignés dans ma feuille "base de données"
If Me.ComboBox1.ListIndex = -1 Then
        Me.TextBox1.Value = ""
        Me.TextBox2.Value = "" 
        Me.ComboBox2.Value = "" 
        Me.ComboBox3.Value = "" 
        Me.TextBox6.Value = ""

        Exit Sub
    End If

 'récupère ma valeur depuis la base
Ligne = ComboBox1.ListIndex + 4

With Sheets("Base de données")
    TextBox1.Text = .Cells(Ligne, 1).Value
    TextBox2.Text = .Cells(Ligne, 2).Value
    ComboBox2.Text = .Cells(Ligne, 3).Value
    ComboBox3.Text = .Cells(Ligne, 5).Value
    TextBox6.Text = .Cells(Ligne, 6).Value

 End With

End Sub

Merci ThauThème pour ton aide!

Rechercher des sujets similaires à "remplissage automatique champs suite choix liste deroulante"