Erreur sur rechercheV = VLookup VBA

Bonjour à tous,

J'aurai voulu savoir le type que retourne VLookup quand il y a une erreur.

Quand je n'ai pas d'erreur cette recherche fonctionne très bien sauf qu'à un moment donné, il ne trouve pas ce qu'il recherche dans la base de données et me met ce genre de message : "erreur d’exécution '1004' : Erreur définie par l'application ou par l’objet"

il ne va même pas jusqu'à mon test savoir si c'est un #n/a ou pas. il s’arrête à test1

Savez vous pourquoi ?

voici mon code :

For i = 2 To n
            For j = 0 To 5
                Tabl_ordo(i - 2, j) = .Cells(i, col(j)).Value2

            Next j

            test1 = Application.WorksheetFunction.VLookup(Tabl_ordo(i - 2, 1), Worksheets("Gammes").Range("A:I"), 4, 0)
                If Application.WorksheetFunction.IsNA(test1) Then
                     Tabl_ordo(i - 2, 6) = "n/a"
                Else
                    Tabl_ordo(i - 2, 6) = Application.WorksheetFunction.VLookup(Tabl_ordo(i - 2, 1), Worksheets("Gammes").Range("A:I"), 4, 0)
                End If

            Test2 = Application.WorksheetFunction.VLookup(Tabl_ordo(i - 2, 1), Worksheets("Gammes").Range("A:I"), 7, False)

                  If Application.WorksheetFunction.IsNA(Test2) Then
                   Tabl_ordo(i - 2, 7) = 0
                Else
                     Tabl_ordo(i - 2, 7) = Application.WorksheetFunction.VLookup(Tabl_ordo(i - 2, 1), Worksheets("Gammes").Range("A:I"), 7, 0)
                End If

        Next i

Si quelqu'un à une idée...

Merci par avance.

Bonjour

et si en mettant les 2 end if presqu'à la fin (arff c'est end if elseif then )

End If

End If

Next i

Bonjour,

Ce sont deux conditions différentes , pourquoi mettre else if ?

J'ai quand même essayé de mettre les deux End IF à la fin mais pas de changement.

Je sais pourquoi ça m'éjectec car il ne trouve pas de ligne. J'aimerais pourvoir gérer cette erreur en lui mettant une valeur à la place.

J'ai déjà essayé de mettre en boolean pour récupérer vrai ou faux et tester mais je n'ai pas réussi non plus j'avais une erreur de type.

Merci quand même.

Bonsoir,

En principe pour tester le code erreur sur un VLookup, il faut utiliser : CVErr(xlErrNA).

Bonjour,

Je n'arrive pas à leur faire fonctionner, quand je l'utilise j'ai une erreur type.

Je vais continuer à chercher.

Merci de vos réponses

Bonjour,

La fonction isNA s'applique à un objet "Range" et non à une valeur. Par ailleurs la constante "#N/A" ne représente pas la valeur de l'erreur. Il faut utiliser CVErr(xlErrNA).

Essayer ceci :

    test1 = Application.VLookup(Tabl_ordo(i - 2, 1), Worksheets("Gammes").Range("A:I"), 4, 0)
    If test1 = CVErr(xlErrNA) Then Tabl_ordo(i - 2, 6) = CVErr(xlErrNA)

Bonjour,

J'ai réussi hier en supprimant "WorksheetFunction", je ne sais pas si c'était la solution mais en tout cas ça fonctionne

J'essaierais avec votre solution également. Merci pour votre aide

Bonjour à tous! J'ai moi-même quelques ennuis quant à la confection d'une RECHERCHEV à l'intérieur d'un UserForm(VBA)

Bref, je ne sais pas si c'est ma syntaxe, ou que je n'écris pas les lignes comme il faut mais, je n'arrive pas à ce que mon UserForm puisse se remplir à l'aide de données correspondantes à une donnée entrée.

Voici les zones de texte que j'aimerais voir se remplir automatiquement, tout dépendant de la donnée que j'ai entrée dans une des txtbox!

Voici la liste de mes textbox ainsi que la colonne leur correspondant :

txtSKU (valeur à laquelle la fonction doit se référer pour chercher les données correspondantes sur la ligne dans le feuille)

txtCUP -------> colonne # 2

txtCLÉ -------> colonne # 3

txtDescription ---------> colonne # 4

txtCOST --------> colonne # 5

txtPRIX --------> colonne 6

txtDEPARTEMENT ---------> colonne 7

Est-il possible de créer un code, un AfterUpdate(), de préférence, et que les zones de texte du UserForm se remplisse à l'aide des infos entrées soit, dans la txtSKU, txtCUP ou txtCLÉ?

Exemple : 994-0286 = 0628238477584 = K2901 = Ouvre-boîtes électrique = 2,99 = 4,99 = Articles cuisine

ou

0628238477584 = 994-0286 = K2901 = Ouvre-boîtes électrique = 2,99 = 4,99 = Articles de cuisine

J'espère avoir été assez clair dans mes explications et merci d'avance!!!

Bonjour,

Nul besoin d'utiliser une rechercheV, il vaut mieux se servir des instructions VBA natives. Par ailleurs pour une TextBox, l'équivalent de l'événement "AfterUpdate" est l'événement "Exit".

Ci-dessous exemple de code:

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    Dim cell As Range

    With Sheets("votre feuille")
        Set cell = .Columns("A").Find(txtSKU)
        If Not cell Is Nothing Then
            txtCUP = cell.Offset(, 1)
            txtCLÉ = cell.Offset(, 2)
            txtDescription = cell.Offset(, 3)
            txtCOST = cell.Offset(, 4)
            txtPRIX = cell.Offset(, 5)
            txtDEPARTEMENT = cell.Offset(, 6)
        End If
    End With
End Sub

Bonjour,

il est préférable d'utiliser

Set cell = .Columns("A").Find(txtSKU, , xlValues, xlWhole)

.Find utilisant les dernières options de la boite Rechercher qui pourraientt être 'contient' etc

eric

Rechercher des sujets similaires à "erreur recherchev vlookup vba"