Comparaison de colonnes entre 2 feuilles et copie de valeurs

Bonjour,

Je débute en VBA et je rencontre un problème. Ne connaissant pas beaucoup de fonctions, j'ai un problème pour résoudre l'exercice suivant.
Exercice que j'ai simplifié dans un 1er temps pour comprendre la structure du code qui va m'être utile.

Est-ce que qq'un peut m'aider s'il vous plaît.

Dans un classeur Excel, j'ai 2 feuilles.

La 1ere feuille qui comporte une colonne rempli de noms de villes.
La 2eme feuille qui comporte 2 colonnes ; la 1ere avec des noms de villes et la 2nd colonne avec le nombre d'hab.

Je voudrais faire une macro en VBA qui "lit" la 1ere colonne de la feuille 2 et qui compare chaque valeur de cette colonne avec les valeurs de la colonne de la feuille 1. Si des valeurs sont communes alors la valeur de la colonne 2 de la feuille 2 est écrit dans la colonne 2 (vide pour le moment) de la feuille 1.

C'est à dire que si des noms de villes de la feuille 2 sont présents aussi dans la feuille 1 alors le nb d'hab associé à cette ville est écrit dans la colonne 2 de la feuille 1.

Je vous remercie par avance pour votre aide. :)

Bonjour et bienvenue sur le forum

Un essai à tester. Te convient-il ?

10classeur1-v1.xlsm (27.10 Ko)
Option Explicit

Dim f As Worksheet, dico As Object, tablo2, tablo1
Dim i&

Sub NombreDhabitants()

    Set f = Sheets("Feuil2")
    tablo1 = Range("A1").CurrentRegion
    tablo2 = f.Range("A1").CurrentRegion
    Set dico = CreateObject("Scripting.Dictionary")

    For i = 2 To UBound(tablo2, 1)
        dico(tablo2(i, 1)) = tablo2(i, 2)
    Next i

    ReDim Preserve tablo1(1 To UBound(tablo1, 1), 1 To 2)
    For i = 2 To UBound(tablo1, 1)
        If dico.exists(tablo1(i, 1)) Then
            tablo1(i, 2) = dico(tablo1(i, 1))
        End If
    Next i

    Range("A1").Resize(UBound(tablo1, 1), 2) = tablo1
End Sub

Bye !

Merci pour votre aide :)

Rechercher des sujets similaires à "comparaison colonnes entre feuilles copie valeurs"