Macro VBA Excel : Comparaison des deux 1ères colonnes de 2 fichiers Excel
Bonsoir,
J'ai une question concernant VBA, merci pour les réponses concernant les formules, j'ai acheté un livre pour m'y remettre et ça va mieux. Le plus dur a été de s'y remettre.
Sinon, je me suis remis à faire du VB et ça bogue un peu.
Donc voici ce que je cherche :
Bonjour, j'ai 1 objectif que j'atteins étape par étape, donc, je teste au fur à mesure ce que je fais et sais faire.
Donc, mon objectif final, ce n'est pas grave si je l'obtient pas car je le cherche.
Mais, j'ai 1 objectif intermédiare que je n'ai pas atteint et je bloque, je souhaite passer cette étape.
L'objectif final : Comparer l'égalité des colonnes B du fichier 1 avec la colonne B du fichier 2
Sachant que la colonne du fichier 2 est classé de 1 à x (ex : de 1 à 1000, colonne A)
Le 1er fichier est un ancien fichier classé qui est le même fichier trier selon une autre colonne, la colonne A, les 1 à x (c'est à dire 1 à 1000 dans le désordre, le fichier est sauvegardé et comparé au fichier mis à jour quand j'ai le temps)
Sauf que sur la colonne B, des modifications sont faites.
Donc, par rapport au 1er fichier, la 1ère colonne A ne change pas, de 1 à 1000, mais est dans le désordre, la colonne B, elle, change, elle n'est plus la même.
Donc, je dois vérifier si le contenu de la colonne B correspond dans les fichies au même numéro de la colonne A qui reste invariant, mais, classé dans le désordre.
Le 1er fichier de référence, la colonne A reste la même, s'il y a eu 5 fichiers diffarents, la colonne A est inchagée, triée dans le désordre, mais, des modifications ont pu avoir lieu dans la Colonne B durant toute l'année, le but est de faire en sorte que le 1er fichier, la colonne A reste inchangée, mais, la colonne B est mise à jour.
Voilà ce que je cherche à faire.
La seule chose, c'est que dans ce fichier, des lignes peuvent être rajoutées, la colonne A se rajoute, elle ne varie pas, mais change dans l'ordre, la ligne B attribuée, elle, est liée à la ligne A, mais continue a évoluée, donc, je ne peux pas dire que la ligne A reste fixe, elle change.
Exemple :
J'ai 100 lignes, colonne A : De la ligne 1 à 100, la colonne B correspond à une colonne A fixe
Une fois les lignes C, D ou autres triées, j'ai A qui n'est plus trié, B correspond, mais au fil du temps, elle change de valeur.
A la fin de l'année, je veux que A soit toujours trié pareil, mais B a changé, je veux juste mettre à jour B avec A correspondant, tjrs de 1 à 100.
J'ai testé une routine pas à pas, mais quand tout marche et que je teste le tout, ça ne marche plus.
Mon boulot me prenant assez de temps et étant donné que je dois faire un bilan en fin d'année sur mes comptes postaux, j'ai du mal à tout trier, donc, si quelqu'un a une meilleure routine ou une idée, je suis intéressé.
Pour faire plus vite, j'ai décidé de coller une colonne dans une autre et de tout faire dans un seul fichier, mais si je peux faire ça à partir de 2 fchiers différents, ça peut m'aider.
Donc, si je peux trouver une astuce pour aller plus vite ou si je me suis tromper dans mon idée, merci de me l'indiquer :
J'ai pris le fichier 1, j'ai copié la 1ère colonne dans la colonne A et la colonne B dans la colonne D du nouveau fichier.
J'ai pris le 2ème fichier, j'ai copié la colonne A dans la colonne B du nouveau fichier et la colonne B dans la colonne C du nouveau fichier.
Ensuite, j'ai comparé la colonne A avec la Colonne B, quand j'ai égalité entre la colonne A et B, j'écrase la colonne C par la colonne D car la colonne D est plus récente que la colonne C.
Voilà. Si j'arrive à faire celà, j'ai gagné du temps, mais, si je peux ne pas avoir à faire ces copier coler et comparer ces deux fichiers, ce sera mieux, si quelqu'un a une solution, merci.
Sujet : Comparer les colonnes dans l'ordre du fichier 1 avec la colonne du fichier 2, dans le désordre; Si la colonne B du fichier 2 est différente que la colonne B du fichier 1 en fonction du numéro de la colonne A, alors, écraser la colonne B du fichier 1.
Voici ce que j'ai fait,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64 Sub Comparaison() ' ' transfert Macro ' Macro enregistrée le 09/01/2007 par laurenterc ' Dim ObjetClasseur As Workbook Dim Lig As Long Dim Lign As Long Dim Col As String Dim Colonn As String Dim NbrLig As Long Dim NumLig As Long Dim NombLig As Long Dim NbsupLig As Long Dim Val As Long ' Set ObjetClasseur = GetObject("D:\Donnees\DossierEric\Bilan_Annuel.xls") ' Set ObjetClasseur = GetObject("D:\An2007\Eric\Total.xls") ' A ne pas considérer, seulement si je vais chercher les fichiers dans 2 dossiers différents Sheets("Feuil1").Activate ' feuille de destination Col = "A" ' Colonne à tester Colonn = "B" ' Colonne de référence NumLig = 0 NbsupLig = 0 With Sheets("Feuil2") ' feuille source NbrLig = .Cells(65536, Col).End(xlUp).Row NombLig = .Cells(65536, Col).End(xlUp).Row For Lig = 1 To NbrLig If .Cells(Lig, Col).Value <> "" Then Val = .Cells(Lig, Col).Range("A1") For Lign = 1 To NombLig If .Cells(Lign, Colonn).Value <> "" Then .Cells(Lign, Colonn).Range("B1").Select If Val = .Cells(Lign, Colonn).Value Then .Cells(Lign, Colonn).Range("C1").Copy .Cells(Lig, Col).Range("D1").Paste End If NombLig = NombLig + 1 Cells(NombLig, 1).Select End If Next End If NumLig = NumLig + 1 Cells(NumLig, 1).Select Next End With ' ActiveWorkbook.Save Application.WindowState = xlMinimized Application.WindowState = xlNormal Application.WindowState = xlMinimized Range("A1").Select Cells.Find(What:="lan", After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _ xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False) _ .Activate Range("F64").Select ActiveWorkbook.Save ActiveWorkbook.Save ActiveWorkbook.Save ActiveWorkbook.Save ActiveWorkbook.Save End Sub
Partager