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 65 66 67 68 69 70 71 72
|
Private Sub cbtStart_Click()
Dim I As Long, nbLignes As Long, nbItems As Long
Dim Recherche, Valeur
Dim Ratio As Integer
'Activer la feuille "negatif" et calculer son nombre de lignes
Sheets("negatif").Activate
nbLignes = Cells.Find("*", Range("A1"), , , xlByRows, xlPrevious).Row
'on lit chaque ligne de negatif
For I = 2 To nbLignes
'à chaque changement de ligne, la valeur de Ratio augmente
Ratio = (I / nbLignes) * FrameProgress.Width
'lecture de la valeur à rechercher
Valeur = Sheets("negatif").Range("A" & I)
'On recherche dans la colonne A de la feuille "ana_liste"
Set Recherche = Sheets("ana_liste").Columns("A:A").Find(Valeur)
If Not Recherche Is Nothing Then
'on a donc trouvé le nom
'il faut vérifier si le prénom et l'adresse1 sont identiques
If Sheets("ana_liste").Range(Recherche.Address).Offset(0, 1) = Range("A" & I).Offset(0, 1) _
And Sheets("ana_liste").Range(Recherche.Address).Offset(0, 2) = Range("A" & I).Offset(0, 2) _
And Sheets("ana_liste").Range(Recherche.Address).Offset(0, 3) = Range("A" & I).Offset(0, 3) Then
'Effacement de la ligne
Sheets("ana_liste").Rows(Range(Recherche.Address).Row).Delete
'Accumuler le nombre de lignes effacées
nbItems = nbItems + 1
End If
End If
'ajustement de la barre de progression
LabelProgress.Width = Ratio
DoEvents
Next
MsgBox "Première partie terminée avec succès !" & vbCrLf & _
nbItems & " lignes ont été effacées de «ana_liste»"
'*****************************************************************************************
'Effacer les doublons de la feuille negatif
lblInfo.Caption = "Étape 2 / 2"
nbItems = 0 'réinitialise la variable compteur
Sheets("negatif").Activate
nbLignes = Cells.Find("*", Range("A1"), , , xlByRows, xlPrevious).Row
'Tri de la feuille selon 3 critères: Nom, Prénom et Adresse1
Cells.Select
Selection.Sort key1:=Range("A1"), key2:=Range("B1"), key3:=Range("C1"), header:=xlYes
Range("A1").Select 'enlève la sélection
'Lecture de chaque ligne en partant de la fin
For I = nbLignes To 2 Step -1
'Si les nom, prénom et adresse sont identiques aux précédents, il y a doublon
If Range("A" & I) = Range("A" & I - 1) And _
Range("B" & I) = Range("B" & I - 1) And _
Range("C" & I) = Range("C" & I - 1) Then
Rows(I).Delete
nbItems = nbItems + 1 'calcul du nombre de doublons
End If
Next
Application.ScreenUpdating = True
MsgBox "Deuxième partie terminée avec succès !" & vbCrLf & _
nbItems & " lignes-doublons ont été effacées de «negatif»"
Unload Me
End Sub |
Partager