Récupérer une valeur avec vlookup avec un nom d'onglet varia

bonjour, voici mon problème :

je souhaite automatiser une recherche de date dans un fichier excel mais en faisant un balayage d'onglets (le nom de l'onglet constituant une variable.

Voici le code que j'utilise :

Sub maj_janvier()
Dim i As Integer
Dim dernligne As Integer
Dim CHERCHE As String
Dim ONGLET As Worksheet
Dim REF As String
Dim PLAGE As Range, trouve As Range
Dim result As Variant

Sheets("TDB_").Activate
dernligne = Range("a" & Rows.Count).End(xlUp).Row + 1
'
For i = 16 To dernligne
REF = Cells(i, 1).Value
CHERCHE = Cells(1, 3).Value

    For Each ONGLET In ThisWorkbook.Worksheets
       If ONGLET.Name = REF Then

            Set ONGLET = ActiveWorkbook.Worksheets(i)
            Set PLAGE = Range("a15:d100")
            Set trouve = Application.WorksheetFunction.VLookup(CHERCHE, PLAGE, 3, False)

            If trouve Is Nothing Then
                .Cells(i, 4) = ""
        Else
               .Cells(i, 4) = trouve
            End If

       End If
    Next ONGLET
Next i
Set ONGLET = Nothing
Set PLAGE = Nothing
Set trouve = Nothing

End Sub

J'ai une erreur avec la fonction vlookup alors que le test que j'ai pu réaliser portait sur une valeur existante, mais j'ai l'impression que c'est en lien avec ma plage.....

Je joins un fichier en exemple (qui ne correspond pas exactement au fichier réel mais permet d'illustrer ma requête).

En clair, en colonne A j'ai le nom de mes onglets, en colonne C, je voudrais qu'il récupère en fonction de l'onglet la valeur associée...

Je ne sais pas si je suis trés claire mais merci beaucoup pour votre aide.

Bonjour,

Avec une formule :

C2 : =SIERREUR(RECHERCHEV(C$1;INDIRECT("'"&$A2&"'!$A:$C");2;FAUX);"")

Si j'ai compris la demande.

Cdlt.

bonjour, merci pour le retour, mais en fait c'est carrément dans le code vba que j'aimerais agir.

le problème est que mon vlookup génère une erreur 1004...

mais merci quand même pour votre aide

Bonjour,

Une proposition à étudier.

Cdlt.

bonjour

merci beacoup pour ton aide, je vais regarder attentivement ce que tu proposes et qui me parait plus élaboré que ce vers quoi je m'oriente.

en gratouillant et en m'arrachant quelques cheveux, j'ai abouti à ça :

Private Sub maj_jan()
Dim i As Integer
Dim dernligne As Integer
Dim CHERCHE As String
Dim ONGLET As Worksheet
Dim REF As String
Dim PLAGE As Range

Sheets("TDB").Activate
dernligne = Range("a" & Rows.Count).End(xlUp).Row + 1
'
For i = 2 To dernligne
REF = Cells(i, 1).Value
CHERCHE = Cells(1, 4).Value
Dim cherche1 As Integer
cherche1 = Val(CHERCHE) 'convertir la valeur en texte

    For Each ONGLET In ThisWorkbook.Worksheets
       If ONGLET.Name = REF Then
            ONGLET.Activate
            Set PLAGE = Range("a15:d200")
            Sheets("TDB").Activate
            Dim r As Variant
            r = Application.VLookup(cherche1, PLAGE, 3, False)
            If IsError(r) Then
                Sheets("TDB").Cells(i, 4).Value = ""
            Else
                Sheets("TDB").Cells(i, 4).Value = r
            End If
       End If
    Next ONGLET
Next i
Set ONGLET = Nothing
Set PLAGE = Nothing

End Sub

je sais pas si le code est très conventionnel, mais a priori, cela fonctionne. J'espère que cela ne buggera pas sinon, je m'orienterai vers ta proposition

merci encore.

Rechercher des sujets similaires à "recuperer valeur vlookup nom onglet varia"