Il arrive parfois que la suppresion de doublons sans tri préalable soit demandée. Je propose donc le code suivant qui, sans être très élégant, résoud le problème.
Idée 1 : Supprimer les doublons sans effectuer de tri préalable afin de conserver l'ordre des données.
Idée 2 : Option 1 -> Ne supprimer que les lignes entièrement vides (permet de conserver les données situées dans les colonnes suivantes si A est vide)
.............Option 2 -> Supprimer toutes les lignes dont la cellule de la colonne A est vide
.............Option 3 -> Ne pas supprimer les lignes vides
Idée 3 : Supprimer les doublons dans une plage présentant des lignes vides
A défaut d'un code plus élaboré
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 Sub LaMacro() Dim FL1 As Worksheet Dim Valeur As Variant, c As Range Dim NoLigne As Long, DerLig As Long Set FL1 = Worksheets("Feuil1") NoLigne = 1 Do If Not Cells(NoLigne, 1) = "" Then Valeur = Cells(NoLigne, 1) Do With FL1.Range("A" & NoLigne + 1, [A65536].End(xlUp)) DerLig = 0 Set c = .Find(Valeur, LookIn:=xlValues, LookAt:=xlWhole) If Not c Is Nothing Then If c.Row > NoLigne Then DerLig = c.Row c.EntireRow.Delete End If End If Set c = Nothing End With Loop While DerLig > NoLigne Else 'Idée 2 - Option 3 : Pour conserver les lignes vides, supprimer tout le Else 'Idée 2 - Option 1 -> Condition pour ne supprimer que les lignes entièrement vides If FL1.Range("IV" & NoLigne).End(xlToLeft).Column = 1 And _ FL1.Cells(NoLigne, 1) = "" Then 'Idée 2 - Option 2 : Pour supprimer ttes les lignes dont la colonne A est vide, 'supprimer la condition ci-dessus FL1.Rows(NoLigne).Delete NoLigne = NoLigne - 1 End If End If NoLigne = NoLigne + 1 Loop While NoLigne < FL1.Range("A65536").End(xlUp).Row End Sub
Partager