[Catégorie modifiée .Net --> VBA] Macro comparaison entre deux classeurs et mise

Signaler
Messages postés
8
Date d'inscription
jeudi 2 septembre 2010
Statut
Membre
Dernière intervention
9 septembre 2010
-
Messages postés
8
Date d'inscription
jeudi 2 septembre 2010
Statut
Membre
Dernière intervention
9 septembre 2010
-
Bonjour, je ne m'y connais pas en VB et les syntaxes m'echappent encore. J'ai quelques notion en programmation C. J'ai deux fichiers excel à ma disposition. J'aimerais comparer deux colonnes données entre les deux fichiers. Ensuite faire une copie. Donc pour vous donner plus de détail:
- comparer colonne D du fichier "Base" à la colonne X du fichier "extration"
- Si par exemple D1 = X3 alors, copier G1 du fichier "Base" et coller dans Y3 du fichier "extraction".
- L'opération doit se faire pour toutes les lignes du fichier "Base"

J'ai en tête une double boucle for comme on le ferait en C mais ici je sais pas dutout comment m'y prendre. Aidez moi s'il vous plaît.

4 réponses

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
74
Salut

Commence par donnée les bonnes informations : Dans quel logiciel programmes-tu ?
D'après la catégorie de ta question, ce serait .Net (2005, 2008 ou 2010) ?
Ou bien est-ce dans un des classeurs, en VBA ?
Ce qui changerait tout ...

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Messages postés
8
Date d'inscription
jeudi 2 septembre 2010
Statut
Membre
Dernière intervention
9 septembre 2010

Je programme dans un des classeurs en VBA.
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
74
Exemple de boucle pour énumérer toutes celles d'un Range + la voisine, 2 colonnes plus loin :
    Dim maCellule As Range
    For Each maCellule In ActiveSheet.Range("D1:D10")
        Debug.Print "Cellule " & maCellule.Address & ", contient " & maCellule.Value
        Debug.Print "Cellule " & maCellule.Offset(0, 2).Address & ", contient " & maCellule.Offset(0, 2).Value
    Next

Avec l'enregistreur de macro, à toi de voir comment ouvrir un classeur.

Oui, il te faudra deux boucles imbriquées.
Tel que tu l'explique, si D1 se retrouve en X3, on recopie G1 dans Y3 : Méthode Offset très pratique.
Mais si D4 se retrouve aussi en X3, la précédente valeur de Y3 sera écrasée ...
Messages postés
8
Date d'inscription
jeudi 2 septembre 2010
Statut
Membre
Dernière intervention
9 septembre 2010

Merci beaucoup Jack. Merci pour le temps que tu y as consacré. Le temps me faisant défaut,
j'ai opté pour une autre solution sans macro.
J'utiliserai sûrement tes précieux conseils à une autre occasion. Merci