[VBA] Erreur sur formule VLookpUp

Bonjour,

Sur un Userforme (de la page sortie USF_M) la formule suivante marchait bien :

(Je voulais qu'elle me renvoie le nombre en colonne 6 du TCD (en page ETAT DU STOCK) lorsqu'elle détecte sur la plage [TCDETENDU] l'intitulé de la combobox1 de l'userforme)

Me.TextBox4 = Application.WorksheetFunction.VLookup(ComboBox1.Value, [TCDETENDU], 6, False)

...Jusqu'à que je change la façon dont se remplit le menu déroulant de la Combobox1 :

Private Sub UserForm_Initialize()

    Dim j As Integer
    Worksheets("STOCKS").Activate
    'Récupère les données de la colonne L...
    For j = 1 To Range("L65536").End(xlUp).Row
        ComboBox1 = Range("L" & j)
        '...et filtre les doublons
        If ComboBox1.ListIndex = -1 Then ComboBox1.AddItem Range("L" & j)
    Next j
End Sub

Je ne vois pas pourquoi ça le fait buguer.

Le menu déroulant de ma Combobox1 se remplit correctement, c'est bien le même nom qui figure dans le TCD, la plage nommée [TCDETENDU] est bonne, et je veux bien ma colonne 6...

Auriez-vous une idée ?

Bonjour,

Tu aurais dû voir que ton initialisation déclenche de façon intempestive ComboBox1Change à chaque tour de boucle...

Un moyen d'éviter ça (sans tout revoir, c'est du ravaudage ! )

Tu déclares une variable booléenne niveau module. Exemple :

Dim noc As Boolean

Tu écris un peu plus correctement ( ) ta proc.

Private Sub UserForm_Initialize()
    Dim j As Integer
    noc = True
    With Worksheets("STOCKS")
        For j = 2 To .Range("L65536").End(xlUp).Row
            ComboBox1.Value = Range("L" & j)
            If ComboBox1.ListIndex = -1 Then ComboBox1.AddItem .Range("L" & j)
        Next j
    End With
    ComboBox1.ListIndex = -1
End Sub

et :

Private Sub Combobox1_Change()
    If noc Then Exit Sub
[...]

Cordialement.

Bonjour

Essaie comme ceci :

Private Sub Combobox1_Change()
Dim ligne As Byte, lg As Byte
ligne = Me.ComboBox1.ListIndex + 2
Me.TextBox5 = Sheets("STOCKS").Cells(ligne, 4)
Me.TextBox3 = Sheets("STOCKS").Cells(ligne, 3)
On Error Resume Next
lg = Application.WorksheetFunction.Match(ComboBox1.Value, Sheets("ETAT DU STOCK").Columns(1), 0)
Me.TextBox4 = Cells(lg, 6)
....
....

Cordialement

Que ferais-je sans vous ! *insérez ici un smiley coeur*

Toujours aussi jouissif de voir les vrais régler ça en un claquement de doigt.

Rechercher des sujets similaires à "vba erreur formule vlookpup"