Bonjour,
Je cherche à faire la comparaison de deux feuilles dans excel d'un même classeur
Dans un premier temps je veux récupérer les lignes de ma feuille 1 (bdd) donc le num de commande est le même que celui de ma feuille 2 (copie-save) et les copier dans une troisième feuille (sortie-reliquat) (Sa c'est ok j'y suis arrivée)
Ensuite je veux récupérer les ligne de ma feuille 1 (bdd) qui ne son pas dans ma feuille 2 (copie-save) et les copier dans ma feuille 3 (sortie-reliquat), c'est la que j'arrive pas a faire cette étape
Pour faire ma comparaison je me base sur la colonne B de ma feuille 1 (bdd) et sur la colonne C de ma feuille 2 (Copie-save) qui est le num de commande
Mon premier For me sert juste a copier les entêtes pour la mise en page
Mon 2ème For me sert a copier les lignes qui sont dans mes deux feuille 1 et 2
Mon 3 ème For ne marche pas, il ne me copie pas les lignes qui sont dans la feuille 1 et qui ne sont pas dans la feuille 2
en faite pour expliquer le but de mon tableau, j'extrait de la base de données sur laquelle je travaille toutes les commandes client qui sont en reliquat. tous les jours on doit faire un suivit des ces commandes. Voir celles qui sont toujours en reliquat, et ajouter les nouvelles. C'est l'ajout de ces nouvelle commandes qui se trouve dans ma feuille 1 (bdd) et toujours en fin de feuille1, dans ma feuille 2 (Copie-save) que je n'arrive pas a faire
quelqu'un aurait il une solution svp?
Je vous joint les trois feuilles en pièce jointe
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 Sub comparaison() 'comparaison entre la feuille copie_save et la feuille bdd Dim wsh1 As Worksheet, wsh2 As Worksheet, wsh3 As Worksheet Dim ligne As Long, LastLig1 As Long, LastLig3 As Long, LastLig2 As Long, result As Long Dim C As Range Dim i As Integer, j As Integer Set wsh1 = Worksheets("bdd") Set wsh2 = Worksheets("Copie-save") Set wsh3 = Worksheets("sortie-reliquat") LastLig1 = wsh1.Cells(Rows.Count, "A").End(xlUp).Row 'calclul le nombre de ligne max de la feuille bdd LastLig2 = wsh2.Cells(Rows.Count, "A").End(xlUp).Row 'calclul le nombre de ligne max de la feuille copie-save LastLig3 = wsh3.Cells(Rows.Count, "A").End(xlUp).Row 'calclul le nombre de ligne max de la feuille sortie-reliquat result = Application.WorksheetFunction.Max(LastLig1, LastLig2) For i = 0 To 2 Step 1 'copie des trois premieres ligne d'en-tête wsh2.Rows(i + 1).Copy _ Destination:=wsh3.Rows(LastLig3 + i) Next i For ligne = 4 To result Step 1 Set C = wsh1.Columns("B").Find(wsh2.Cells(ligne, "C").Value, LookIn:=xlValues, lookat:=xlWhole) If Not C Is Nothing Then 'si ref commande trouvé LastLig3 = wsh3.Cells(Rows.Count, "A").End(xlUp).Row 'calclul le nombre de ligne max de la feuille sortie-reliquat wsh2.Rows(ligne).Copy _ Destination:=wsh3.Rows(LastLig3 + 1) LastLig3 = 0 End If Next ligne ligne = 0 For ligne = 2 To result Step 1 For j = 4 To result Step 1 Set C = wsh1.Cells(ligne, "B").Find(wsh2.Cells(j, "C").Value, LookIn:=xlValues, lookat:=xlWhole) 'lig = ligne If C Is Nothing Then 'si pas trouvé ref commande MsgBox (j) LastLig3 = wsh3.Cells(Rows.Count, "A").End(xlUp).Row 'calclul le nombre de ligne max de la feuille sortie-reliquat wsh1.Rows(ligne).Copy _ Destination:=wsh3.Rows(LastLig3 + 1) LastLig3 = 0 End If Next j Next ligne ligne = 0 Set wsh1 = Nothing Set wsh2 = Nothing Set wsh3 = Nothing Set C = Nothing End Sub
++
Elwy
Partager