Fonction Recherche en Macro VBA

Bonjour,

Ça fait plusieurs jours que je travaille sur VBA, je suis en apprentissage et jusqu’à maintenant j'arrive bien à me débrouiller en fouillant tous les forums.

Néanmoins, je bloque sur un code à créer. Auriez vous un code à me proposer?

Voici les besoins requis:

J'ai 2 onglets :

  • "Data" - La colonne A contient des noms, la colonne B une zone défini selon le nom
  • "Reservations" - La colonne A contient les mêmes noms que précédemment dans un ordre aléatoire et répétitif.

Je souhaiterai donc :

Selon le nom inscrit dans une ligne de la colonne A(reservations), recherche de la ligne de la colonne A(data) le nom correspondant et renvoi la donnée en colonne B(data) de cette même ligne vers la ligne de la colonne B (reservations).

En gros, traduire en VBA la fonction suivante : =RECHERCHE(Reservations!A:A;Data!A:A;Data!B:B)

Merci pour votre aide

Bonjour,

Personnellement je me perd un peu dans tes explications et au final je ne visualise pas le résultat attendu. Ce serait nettement plus simple avec un fichier type !

Au temps pour moi.

Voici un fichier synthétique. L'idée est de créer le code pour la colonne B de l'onglet "Reservations"

6resa.xlsx (9.35 Ko)

Une macro à placer dans le module de la feuille "Reservations" :

Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Target, Range("A:A")) Is Nothing Then
    If Target <> "" Then
        Target.Offset(0, 1) = Application.VLookup(Target, Sheets("Data").Range("A:B"), 2, 0)
    Else
        Target.Offset(0, 1) = ""
    End If
End If

End Sub

Elle ajoute automatiquement la zone en colonne B lors de l'ajout du prénom en colonne A. Elle fonctionne avec une RECHERCHEV().

Bonjour,

Le plus simple, même en VBA, est d'appliquer la formule.

Exemple :

Sub Zonage()
Dim DL As Long
    With Sheets("Reservations")
        DL = .Columns(1).Cells.Find("*", , , , xlByColumns, xlPrevious).Row 'dernière ligne remplie colonne A
        .Range("B2:B" & DL).Formula = "=LOOKUP(Reservations!A:A,Data!A:A,Data!B:B)" 'inscrit la formule colonne B
        'Pour obtenir des valeurs colonne B au lieu de formules, décommentez la ligne suivante :
        '.Range("B2:B" & DL).Value = .Range("B2:B" & DL).Value
    End With
End Sub

Merci ça marche nickel

Merci ça marche nickel

Content de l'entendre !

Pense à valider le sujet.

Rechercher des sujets similaires à "fonction recherche macro vba"