Bonjour à tous
J'ai fais une macro mais mon problème, c'est que je ne suis même pas sur quelle fonctionne :
J'ai un tableau avec environ 8000 lignes.
J'ai fait un code qui permet de vérifier les doublons.
Lorsque la macro en trouve, il copie les deux ligne sur une autre feuille du classeur.
Voici mon code :
Le code compare les cellules I de toute les lignes et si il y a un doublons, on copie la première ligne du doublons dans la seconde feuille et ensuite, on copie la seconde ligne du doublons dans la seconde feuille.
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 Sub Doublons() DerLi = Range("G60000").End(xlUp).Row For i = 1 To DerLi For j = 1 To DerLi Worksheets("MACHINES").Select If Range("I" & i).Value = Range("I" & j).Value And i <> j Then Range("A" & i & ":" & "W" & i).Select Selection.Copy Sheets("Doublons").Select Range("A" & i).Select ActiveSheet.Paste Worksheets("MACHINES").Select Range("A" & j & ":" & "W" & j).Select Selection.Copy Sheets("Doublons").Select Range("A" & j).Select ActiveSheet.Paste End If Next j Next i For x = 1 To DerLi For y = 1 To DerLi Worksheets("MACHINES").Select If Range("G" & x).Value = Range("G" & y).Value And i <> j Then Range("A" & x & ":" & "W" & x).Select Selection.Copy Sheets("Doublons").Select Range("A" & x).Select ActiveSheet.Paste Worksheets("MACHINES").Select Range("A" & x & ":" & "W" & y).Select Selection.Copy Sheets("Doublons").Select Range("A" & x).Select ActiveSheet.Paste End If Next y Next x Worksheets("MACHINES").Select Range("A1:W1").Select Selection.Copy Sheets("Doublons").Select Range("A1").Select ActiveSheet.Paste Columns("G:G").Select Range("A2:W9987").Sort Key1:=Range("G1"), Order1:=xlAscending, Header:= _ xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ DataOption1:=xlSortNormal End Sub
On fait la même chose pour les cellules G.
Et pour finir, (c'est une solution que je ne veut laisser définitive), on copie la première ligne de la première feuille et on fait un tri pour supprimer les lignes vides en fait.
Se code n'est pas fait pour des feuilles avec beaucoup de ligne.
Il compare chaque ligne avec les autres lignes une à une et je lui demande de le faire deux fois.
Si je ne me trompe pas, avec 8000 ligne, la macro fait environ 128 000 000 comparaisons.
C'est un peut beaucoup trop long et chaque fois Excel plante (pas de message d'erreur) mais obligé de passer par le gestionnaire de tache pour pouvoir débloquer le PC.
Donc, existe t-il un moyen de simplifier le code ??
Merci d'avance de votre aide si vous avez compris se que j'ai écrie.
Bonne journée
A+
Partager