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

pluschaud Messages postés 8 Date d'inscription jeudi 2 septembre 2010 Statut Membre Dernière intervention 9 septembre 2010 - 2 sept. 2010 à 14:17
pluschaud Messages postés 8 Date d'inscription jeudi 2 septembre 2010 Statut Membre Dernière intervention 9 septembre 2010 - 3 sept. 2010 à 10:13
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

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
2 sept. 2010 à 14:34
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)
0
pluschaud Messages postés 8 Date d'inscription jeudi 2 septembre 2010 Statut Membre Dernière intervention 9 septembre 2010
2 sept. 2010 à 14:44
Je programme dans un des classeurs en VBA.
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
2 sept. 2010 à 16:35
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 ...
0
pluschaud Messages postés 8 Date d'inscription jeudi 2 septembre 2010 Statut Membre Dernière intervention 9 septembre 2010
3 sept. 2010 à 10:13
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
0
Rejoignez-nous