Fonction RechercheV en VBA

Bonjour et merci d'avance pour votre aide.

Je suis novice en vba et je cherche à faire une macro équivalente à "RechercheV" mais je rencontre quelques problèmes.

Vous pourrez trouver en PJ un fichier Test.

Comme vous pouuvez le voir sur le fichier joint, sur la case B1 de la "Feuille 2", j'ai effectué une fonction "RechercheV".

Je cherche à reproduire la même chose dans la case C1 avec une macro VBA. Bien sur il faudrait que cette macro prenne en compte une boucle pour se reproduire sur plusieurs lignes.

Ci dessous ce que j'ai essayé de faire mais je rencontre des problèmes

Sub VlookUpTest()

Dim ValeurRecherchee As Range
Dim TableDeRecheche As Range
Dim NumColonne As Integer

For i = 1 To 1200

'Activation de la Feuil2
Sheets("Feuil2").Activate
ValeurRecherchee = Cells(i, 1)

'Activation de la Tasks
Sheets("Tasks").Activate
    If TableDeRecheche(i, 2).Value = ValeurRecherchee.Value Then
        'Activation de la Feuil2
        Sheets("Feuil2").Activate
        Cells(i, 3) = TableDeRecheche(i, 3).Value
    End If
Next i

End Sub

J'espère que mes explications sont assez claire.

Merci.

Pif

100test.xlsm (18.44 Ko)

Bonjour,

Voici une proposition avec une procédure évènementielle.

La recherche est lancée automatiquement lorsqu'une donnée est saisie dans la colonne A (Task reference).

A+

299test.xlsm (19.34 Ko)

Merci beaucoup Frangy pour cette réponse qui fonctionne parfaitement.

Etant novice en VBA je ne comprends pas tous à cette macro mais je vais vreuser.

Par contre, serait il possible que tu m'aides à corriger le code que j'avais commencé?

Merci encore.

A+

Bonjour,

Voici une macro qui reprend ce que tu as cherché à réaliser, à savoir un traitement avec 2 boucles.

Sub VlookUpTest()
Dim WsS As Worksheet, WsC As Worksheet
Dim DerLigS As Long, DerLigC As Long
Dim TableSource As Range, Cel As Range, TableCible As Range, C As Range

    'Feuille source
    Set WsS = Worksheets("Tasks")
    'Dernière ligne renseignée dans la feuille source
    DerLigS = WsS.Range("B" & Rows.Count).End(xlUp).Row
    'Plage des références dans la feuille source
    Set TableSource = WsS.Range("B2:B" & DerLigS)

    'Feuille cible
    Set WsC = Worksheets("Feuil2")
    'Dernière ligne renseignée dans la feuille cible
    DerLigC = WsC.Range("A" & Rows.Count).End(xlUp).Row
    'Plage des références dans la feuille cible
    Set TableCible = WsC.Range("A1:A" & DerLigC)

    'On balaye les références de la feuille cible
    For Each C In TableCible
        'On balaye les références de la feuille source
        For Each Cel In TableSource
            'Si on trouve une concordance des références
            If Cel.Value = C.Value Then
                'On copie la description source dans la feuille cible
                C.Offset(0, 2).Value = Cel.Offset(0, 2).Value
                'On sort de la boucle
                Exit For
            End If
        Next Cel
    Next C

End Sub

Chaque référence de la feuille "Feuil2" est recherchée dans la feuille "Tasks".

Si la concordance est trouvée, on copie la description.

Pour cela, on utilise 2 boucles :

  • la première pour les données cibles (références de la feuille "Feuil2" )
  • la seconde pour les données sources (références de la feuille "Tasks" )

Rq : dans mon code précédent, il n'y avait pas la seconde boucle. J'utilisais la méthode Find qui permet une recherche directe.

A+

Rechercher des sujets similaires à "fonction recherchev vba"