Comparaison de colonnes entre 2 feuilles et copie de valeurs

Fermé
Novice_en_VBA - 4 nov. 2021 à 22:18
f894009 Messages postés 17191 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 20 mai 2024 - 5 nov. 2021 à 13:36
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.

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. :)
A voir également:

3 réponses

f894009 Messages postés 17191 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 20 mai 2024 1 707
Modifié le 5 nov. 2021 à 14:12
Re,

Ok, votre niveau VBA ou programmation est vraiment debutant ou ..?

En attendant:
A voir:
'https://www.commentcamarche.net/faq/36886-methode-find-dans-vba-recherche-de-donnees-sous-excel

Sub recherche()
    Dim sh As Worksheet, Cel As Range
    Dim Derlig As Long, Plage As Range, Ville As Range
    
    'Application.ScreenUpdating =False  'stop raffraichissement ecran
    Set sh = Worksheets("feuil2")
    With Worksheets("feuil1")
        Derlig = Range("A" & Rows.Count).End(xlUp).Row
        Set Plage = .Range("A2:A" & Derlig)     'mise en memoire liste colonne a
        For Each Cel In Plage
            'methode find, recherche la valeur exacte (LookAt:=xlWhole)
            Set Ville = sh.Columns(1).Find(what:=Cel, LookAt:=xlWhole)
            If Not Ville Is Nothing Then 'valeur trouvee
                Cel.Offset(, 1) = Ville.Offset(, 1)     'ecriture habitants
            End If
        Next
    End With
    Application.ScreenUpdating = True 'active raffraichissement ecran
    Set Plage = Nothing
    Set sh = Nothing
    Set Ville = Nothing
End Sub
1
f894009 Messages postés 17191 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 20 mai 2024 1 707
5 nov. 2021 à 07:12
Bonjour,

résoudre l'exercice suivant.
En principe, si vous en etes étudiant, nous aidons a faire mais pas faire pour vous.

Pourquoi du VBA, une simple formule RECHERCHEV irait très bien?
0
Bonjour,

En fait, je ne suis pas étudiant, mais c'est un exercice perso que je souhaite faire.

Tel que présenté, je l'ai s'simplifié pour démarrer. Du coup effectivement, le VBA semble disproportionné peut-être.
0