Microsoft 365 VBA pour confronter deux listes (composées de 3 colonnes)

Bonjour à tous !

Cela fait 2 semaines que je travaille sur un projet en VBA et jusqu'à présent j'ai toujours pu trouver des solutions à mes problèmes en copiant des codes à droite et à gauche (merci d'ailleurs à vous tous pour vos nombreux posts et discussions :) ). pour ensuite les appliquer à mon fichier excel.

Si je me permets de poster ce message, c'est que je me trouve un peu largué avec la prochaine fonction, c.-à-d. la comparaison de deux listes. En clair:

Liste 1 (sheet 2): ma liste de travail hebdomadaire qui contient une centaine de lignes composés ainsi :
B Code unique propre à chaque personne
C Nom
D Prénom
E Colonne vide (ou j'aimerais coller les dates de naissance, actuellement je fais du C&P manuel)

Liste 2 (sheet 13): le répertoire qui contient plusieurs milliers de lignes et dont les colonnes se composent ainsi :
A Code unique propre à chaque personne
B Nom
C Prénom
D Dates de naissance

Ce que j'aimerais faire, est introduire une macro qui confronte la liste de travail avec le répertoire et qui va me coller dans la liste de travail les dates de naissances correspondantes.

Quelqu'un pourrait m'aider ?

Merci d'avance à tous pour votre aide
 
Rebonjour à tous,

Alors pour info je me suis organisé comme suit : vu que les personnes ont toutes un code unique, j'ai utilisé cette colonne pour faire la référence entre les deux listes.

J'ai ensuite crée un code qui reconnait le numéro de la personne et rajoute la date de naissance en se basant sur les informations contenues dans la liste 2


Dim O1 As Worksheet 'déclare la variable O1 (Liste 2 avec les dates de naissance)
Dim O2 As Worksheet 'déclare la variable O2 (Liste 1 à compléter)
Dim DL As Integer 'déclare la variable DL (Dernière Ligne)
Dim TV As Variant 'déclare la variable TV (Tableau des valeurs de la liste 2)
Dim I1 As Integer 'déclare la variable I1 (Incrément liste 2)
Dim I2 As Byte 'déclare la variable I2 (Incrément liste 1)

Set O1 = Worksheets("Database")
Set O2 = Worksheets("Inscriptions")
DL = O1.Cells(Application.Rows.Count, "A").End(xlUp).Row
TV = O1.Range("A1:D" & DL)
For I2 = 2 To 251 'boucle 1 : sur les cellules de C2 à CS251 (numéro unique dans la liste des inscriptions)
For I1 = 1 To UBound(TV, 1) 'boucle 2 : sur toutes les données de la première colonne du tableau des valeurs database (c-à-d les dates de naissances)
'si la donnée ligne I1, colonne 1 (numéro unique) du database est égale à la cellule ligne I2 colonne C (numéro unique) des inscriptions
'la cellule ligne I2 colonne F des inscriptions (dates de naissance) prend la valeur de la donnée ligne I1 colonne 4 du database (dates de naissance): sort de la boucle 2
If TV(I1, 1) = O2.Cells(I2, "C") Then O2.Cells(I2, "F").Value = TV(I1, 4): Exit For
Next I1 'prochaine ligne de la boucle 2
Next I2 'prochaine cellule de la boucle 1
 

dysorthographie

XLDnaute Accro
avec RechercheV!
VB:
Sub test()
Dim der As Long
With Sheets("Inscriptions")
 der = .UsedRange.Rows.Count
 .Range(.Range("D2"), Cells(der, "D")).FormulaR1C1 = "=VLOOKUP(RC[-3],Database!C[-3]:C,4,TRUE)"
 .Range(.Range("D2"), Cells(der, "D")).Value = .Range(.Range("D2"), Cells(der, "D")).Value
End With
End Sub
1637078769543.png
 

Discussions similaires

Réponses
11
Affichages
721
Réponses
22
Affichages
1 K

Statistiques des forums

Discussions
314 633
Messages
2 111 404
Membres
111 124
dernier inscrit
presa54