[Catégorie modifiée .Net --> VBA] Macro comparaison entre deux classeurs et mise
pluschaud
Messages postés8Date d'inscriptionjeudi 2 septembre 2010StatutMembreDernière intervention 9 septembre 2010
-
2 sept. 2010 à 14:17
pluschaud
Messages postés8Date d'inscriptionjeudi 2 septembre 2010StatutMembreDerniè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.
A voir également:
[Catégorie modifiée .Net --> VBA] Macro comparaison entre deux classeurs et mise
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 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)
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 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 ...
pluschaud
Messages postés8Date d'inscriptionjeudi 2 septembre 2010StatutMembreDerniè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