Probleme de code avec Application.WorksheetFunction.VLookup

Bonjour,

Hier aprés midi, ayant quelques minutes a perdre, j'ai essaye de repondre a un post ici avec une macro.

Et depuis, bien que le sujet soit resolu, je n 'arrive pas a comprendre ce qui ne va pas dans mon code.

L'idee de ce code, c'est que l'on effectue une recherchev dans une matrice, si la valeur retournée est egale a 0, on effectue une nouvelle recherche en diminuant la taille de la matrice pour esperer une valeur >0 et on boucle ainsi.

Ma macro fonctionne mais j'ai un message d'erreur en fonction des valeurs de la matrice.

Voici le fichier

Merci d'avance

20nane.xlsm (21.07 Ko)

Bonjour fg2b, le forum,

Je constate une erreur seulement quand ce n'est pas la feuille "BC1" qui est active.

Vérifier avec cette modification : ...

au lieu de VLookup(Range("A" & i), tester avec : VLookup(Sheets("BC1").Range("A" & i)

Sheets("BC1").Cells(i, 16 + col).Value = Application.WorksheetFunction.VLookup(Sheets("BC1").Range("A" & i), Sheets("0903222 - 072023").Range("G" & j & ":P356"), 7 + col, False)

Bizarre

Bonjour,

Vous recherchez une date à partir de la colonne G au lieu de la colonne A.

Remplacez Range("G" & j & ":P356") par Range("A" & j & ":P356")

Cdlt

Bonjour,

Desolé de na pas avoir pu vous remercier avant, une pelle mécanique avait coupé nos cables electriques hier

@ Bizarre : Un erreur apparait en fonction du jeu de données utilisé, pas de l'endroit ou l'on appelle la macro, j'ai essayé le changement mais en vain, merci en tous cas.

@ Arturo : merci de vous interesser mais je ne cherche pas de date, je cherche la valeur de la colonne A de la Feuil BC1 a savoir le nom d'une serie (Nserie1 ou Nserie2 ) dans la plage d'une autre feuille dont la premiere colonne contient des dates mais c'est pour ca que je commence a la colonne G qui contient egalement les nom des series.

Si vous ouvrez le classeur, en remplacant les valeurs de M2 a P6 par M14 P18, vous verrez le message d'erreur

Par contre avec les valeurs M22 P26 , pas de message d'erreur, je ne comprends pas pourquoi.

Merci de votre aide

@ +

Bonjour,

Essayez ceci:

Sub Macro1()
    Dim f1 As Worksheet, f2 As Worksheet
    Dim Col As Integer, j As Integer, i As Integer
    Set f1 = Sheets("0903222 - 072023")
    Set f2 = Sheets("BC1")
    DerLig_f1 = f1.Range("A" & Rows.Count).End(xlUp).Row

    For i = 2 To f2.Range("A" & Rows.Count).End(xlUp).Row
        For Col = 0 To 3
            For j = 2 To f1.Range("G" & Rows.Count).End(xlUp).Row
                Debug.Print "je cherche "; f2.Range("A" & i) & " dans "; "G" & j & ":P" & DerLig_f1 & " pour ramener la valeur de la colonne " & 7 + Col
                If Application.WorksheetFunction.VLookup(f2.Range("A" & i), f1.Range("G" & j & ":Q" & DerLig_f1), 7 + Col, 0) > 0 Then
                    f2.Cells(i, 16 + Col).Value = Application.WorksheetFunction.VLookup(f2.Cells(i, "A"), f1.Range("G" & j & ":P" & DerLig_f1), 7 + Col, 0)
                    Exit For
                End If
            Next j
        Next Col
    Next i
    Set f1 = Nothing
    Set f2 = Nothing
End Sub

il est important de préciser sur quelle feuille se trouvent les données, ceci en créant les variables feuilles:

    Set f1 = Sheets("0903222 - 072023")
    Set f2 = Sheets("BC1")

cela évite les mauvais aiguillages.

Cdlt

Merci à vous

grace a vous j'ai vu mon erreur , il manquait le nom de la feuille......

Rechercher des sujets similaires à "probleme code application worksheetfunction vlookup"