VLookup et erreur 1004

Bonjour à tous !

Débutant en VBA, je me tourne vers vous pour essayer de solutionner mon problème... Alors voilà, l'idée serait d'utiliser la méthode VLookup dans une boucle For pour récupérer une adresse postale associée à un client. Ce client se trouve dans la table faisant office de base de donnée client. Ici c'est ma Worksheets(3). Tout marche nickel jusqu'au moment où j'utilise la fonction VLookup, j'ai une erreur qui me dit "Erreur d'exécution '1004': Impossible de lire la propriété VLookup de la classe WorksheetFunction.". Je ne comprends pas car quand je fais un test en mettant VLookup en dehors de la boucle, il me retourne la bonne valeur... Si quelqu'un a une idée je suis preneur !

Voici mon code :

Option Compare Binary

Sub test()
Dim nbLignes As Long

Worksheets(3).Activate
Range("F:F").Select
'Comptage nombre de lignes de docs de ventes
nbLignes = Range("F2", Selection.End(xlDown)).Cells.Count

Worksheets(2).Activate
Range("A:A").Select
nbLignesClients = Range("A2", Selection.End(xlDown)).Cells.Count
Range("1:1").Select
nbColonnesClients = Range("A1", Selection.End(xlToRight)).Cells.Count

MsgBox "nb lignes client = " & nbLignesClients
MsgBox "nb colonnes client = " & nbColonnesClients

MsgBox "nb de lignes vente = " & nbLignes

a = 1
For i = 1 To nbLignes
    cellule = Worksheets(3).Cells(i, 6).Value
    If cellule Like "BC*" Then
        Worksheets(1).Cells(a + 1, 1).Value = cellule
        Worksheets(1).Cells(a + 1, 2).Value = Worksheets(3).Cells(i, 3).Value 'Récupération du code client associé à la commande
        Worksheets(1).Cells(a + 1, 3) = Application.WorksheetFunction.VLookup(Worksheets(1).Cells(a + 1, 3), Worksheets(2).Range(Cells(2, 2), Cells(nbLignesClients + 1, nbColonnesClients)), 18, False)

        a = a + 1
    End If
Next i

Worksheets(1).Activate
End Sub

Merci d'avance !

bonjour,

remplace ceci

Worksheets(1).Cells(a + 1, 3) = Application.WorksheetFunction.VLookup(Worksheets(1).Cells(a + 1, 3), Worksheets(2).Range(Cells(2, 2), Cells(nbLignesClients + 1, nbColonnesClients)), 18, False)

par ceci

Worksheets(1).Cells(a + 1, 3) = Application.WorksheetFunction.VLookup(Worksheets(1).Cells(a + 1, 3), Range(Worksheets(2).Cells(2, 2), Worksheets(2).Cells(nbLignesClients + 1, nbColonnesClients)), 18, False)

Merci de ta réponse ! Je viens d'essayer mais malheureusement ça ne fonctionne pas...

bonjour,

il ne trouve pas la donnée, difficile d'expliquer pourquoi sans avoir ton fichier.

dans cette instruction

Worksheets(1).Cells(a + 1, 3) = Application.WorksheetFunction.VLookup(Worksheets(1).Cells(a + 1, 3), Worksheets(2).Range(Cells(2, 2), Cells(nbLignesClients + 1, nbColonnesClients)), 18, False)

Es-tu sûr que la donnée à trouver est bien dans Worksheets(1).Cells(a + 1, 3) ? à voir ton code, je pense que cela devrait être Worksheets(1).Cells(a + 1, 2) (code client associé à la commande)

donc ainsi

Worksheets(1).Cells(a + 1, 3) = Application.WorksheetFunction.VLookup(Worksheets(1).Cells(a + 1, 2), Worksheets(2).Range(Cells(2, 2), Cells(nbLignesClients + 1, nbColonnesClients)), 18, False)

bonjour,

je suppose que la réponse te convient vu que tu as clos le sujet.

bonjour,

je suppose que la réponse te convient vu que tu as clos le sujet.

En fait j'ai trouvé seul, j'avais fait une erreur bête (comme d'habitude en progra), j'avais mis un 3 au lieu d'un 2 en indice, du coup ce que j'avais écrit marchait

Mais merci de ta réponse !

Bonne journée !

Bonjour,

content que tu aies trouvé la solution à ton problème.

du coup ce que j'avais écrit marchait

cela fonctionne, mais la syntaxe correcte pour la définition d'un range avec cells, pour éviter les problèmes est bien celle que je t'ai mise.

Rechercher des sujets similaires à "vlookup erreur 1004"