Bonjour,
Ce code me donne les doublons et le nombre de chacun des doublons dans un MessageBox, comment fairais-je pour qu'il me donne les doublons de seulement ceux qui ont une cellule vide dans la colonne B avec un filtre égale à vide dans la colonne B.
Donc je veux excluer ceux que c'est ecrit "éxpiré" dans les cellules B.
A B
x éxpiré
x
x
a
a
c
v
b
b
a
a éxpiré
a
a


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
65
Private Sub CommandButton3_Click()
 
    Dim f1 As Worksheet
    Dim Plage As Range
    Dim Tableau(), Resultat() As String
    Dim i As Integer, j As Integer, m As Integer
    Dim Un As Collection
    Dim Doublons As String
 
    Set Un = New Collection
    'La plage de cellules (sur une colonne) à tester
    Set Plage = Range("E1:E" & Range("E65536").End(xlUp).Row)
 
 
    Tableau = Plage.Value
 
    On Error Resume Next
    'boucle sur la plage à tester
    For i = 1 To Plage.Count
 
        ReDim Preserve Resultat(2, m + 1)
 
        'Utilise une collection pour rechercher les doublons
        '(les collections n'acceptent que des données uniques)
        Un.Add Tableau(i, 1), CStr(Tableau(i, 1))
 
        'S'il y a une erreur (donc présence d'un doublon)
        If Err <> 0 Then
 
            'boucle sur le tableau des doublons pour vérifier s'il a déjà
            'été identifié
            For j = 1 To m + 1
                'Si oui, on  incrémente le compteur
                If Resultat(1, j) = Tableau(i, 1) Then
                    Resultat(2, j) = Resultat(2, j) + 1
                    Err.Clear
                    Exit For
                End If
            Next j
 
                'Si non, on ajoute le doublon dans le tableau
                If Err <> 0 Then
                    Resultat(1, m + 1) = Tableau(i, 1)
                    Resultat(2, m + 1) = 1
 
                    m = m + 1
                    Err.Clear
 
                End If
        End If
    Next i
 
    '----- Affiche la liste et le nombre de doublons --------
    For j = 1 To m
        Doublons = Doublons & Resultat(1, j) & " --> " & _
                    Resultat(2, j) & vbCrLf
    Next j
 
    MsgBox Doublons
 
    Set Un = Nothing
 
 
 
End Sub