Importation de données selon deux variables

5testsource.xlsm (19.82 Ko)

Bonjour à tous,

J'ai un fichier excel avec deux feuilles, une feuille source et une feuille cible. La feuille cible contient deux variables, noms et prénoms. La source elle contient les variables noms, prénoms, et d'autres variables (sexe, classe, ville...).

Mon probleme est à la fois simple et délicat, j'aimerais arriver à faire une macro qui irait rechercher les noms et prénoms de la page "cible" dans la page "source", copierait les données correspondantes, et les collerait dans la page "cible". En gros, extraire les données pertinentes de "source " et les faire matcher avec les références de "cible".

Je pensais faire une macro en vba, mais voila, je suis complétement novice, et je galere...

J'ai deux soucis, le premier étant que je n'arrive pas à créer cette double référence. Je pensais esquiver le problème en faisant une concaténation dans chacune de mes tables, et me servir de cette nouvelle variable comme référence, mais je voulais savoir si on pouvait utiliser cette double variable ?

Le deuxieme soucis c'est que je suis bloqué sur un code. En l'etat, il ne regarde que l'ultime ligne de mon fichier cible et copie les données correspondantes, mais je n'arrive pas à le faire "boucler" pour qu'il parvienne à remonter toutes les références de "cible", pas juste la derniere.

Ci-joint, un fichier test avec la macro et le code vba

Merci d'avance

Sub test()

Dim nom, cell, ln, lgn
    nom = Sheets("Cible").Range("A" & Rows.Count).End(xlUp)
    Set cell = Range("A2:A" & Range("A" & Rows.Count).Row).Find(nom, lookat:=xlWhole)
    If Not cell Is Nothing Then
        ln = cell.Row
        lgn = Sheets("cible").Range("A" & Rows.Count).End(xlUp)(2).Row
        Range("A" & ln & ":H" & ln).Copy Sheets("cible").Range("B" & lgn)
        MsgBox nom & " a été ajouté !"
    Else
        MsgBox "Ce nom n'existe pas dans la liste de base.", 16
        End
    End If

End Sub

Bonjour,

VBA n'est pas nécessaire dans ce cas et je pense que la formule est à privilégier. Pour le jeu, un essai avec une proposition de boucles imbriqués. Mais il existe d'autres solutions (avec une simple boucle) qui se rapprochent étrangement d'une solution par formule...

Sub test()

Dim j%, i%

for j = 1 to Range("Cible").rows.count
    for i = 1 to Range("Source").rows.count
        if Range("Source[Nom]")(i) = Range("Cible[Nom]")(j) and _
        Range("Source[Prenom]")(i) = Range("Cible[Prenom]")(j) then
            Range("Cible").rows(j).offset(0,1).value = Range("Source").rows(i).value
            MsgBox nom & " a été ajouté !"
        End If
    next i
    MsgBox "Ce nom n'existe pas dans la source", 16
next j

End Sub

Pour faciliter le tout, j'ai mis vos données sous forme de tableaux structurés.

Cdlt,

4testsource.xlsm (18.59 Ko)
Rechercher des sujets similaires à "importation donnees deux variables"