Sub Bouton1_Cliquer()
Dim ws1 As Worksheet
Dim ws2 As Worksheet
Dim TabBrute() As Variant 'contient toute la feuille "Extraction brute"
Dim DicoEmployés As Object 'déclaration d'un dictionnaire
Set DicoEmployés = CreateObject("scripting.dictionary") ' Dictionnaire
Set ws1 = ThisWorkbook.Worksheets("Extraction brute")
Set ws2 = ThisWorkbook.Worksheets("Résultat")
'Effacer le contenu de la colonne B de la feuille "Résultat"
ws2.Range("B:C") = ClearContents
With ws1
TabBrute = .UsedRange.Value 'on place la feuille dans le tableau
End With
'on cherche les noms sans doublons
For i = LBound(TabBrute, 1) + 1 To UBound(TabBrute, 1) 'pour chaque ligne du tableau (hors entete)
Nom = TabBrute(i, 3) & " " & TabBrute(i, 4) 'le nom = nom prénom
If Not DicoEmployés.exists(Nom) Then
DicoEmployés.Add Nom, 0
End If
Next i
For Each Nom In DicoEmployés.keys 'pour chaque nom du dico
'MsgBox Nom
For i = LBound(TabBrute, 1) + 1 To UBound(TabBrute, 1) 'pour chaque ligne du tablo
NomTesté = TabBrute(i, 3) & " " & TabBrute(i, 4) 'nom de la ligne i
NomPrec = TabBrute(i - 1, 3) & " " & TabBrute(i - 1, 4) 'nom de la ligne i-1
If NomTesté = Nom And NomPrec = Nom Then 'on reste sur le meme nom
If UCase(TabBrute(i - 1, 19)) = "ABS" And UCase(TabBrute(i, 19)) = "ABS" Then 'si les deux lignes consécutives ont une absence
DicoEmployés(Nom) = DicoEmployés(Nom) + 1 'on ajoute 1 à la valeur
If DicoEmployés(Nom) >= 10 Then Exit For 'si on a compté au moins 10 jours consécutifs ==> on sort de la boucle for i
End If
End If
Next i
Next Nom
With ws2
'on transvase
Nom = DicoEmployés.keys
.Range("B2").Resize(DicoEmployés.Count) = WorksheetFunction.Transpose(Nom)
Nom = DicoEmployés.items
.Range("C2").Resize(DicoEmployés.Count) = WorksheetFunction.Transpose(Nom)
End With
' Libérez la mémoire de l'objet Collection
Set DicoEmployés = Nothing
End Sub