Private Sub Chercher_Click()
Dim Name$, Role$, Poste$, Jour, JourTrouvé, C%, C2%, Feuille$, Période$, S$
Name = ComboBox1.Value ' On récupère le nom et le poste
Role = ComboBox2.Value
JourTrouvé = 0
If Name = "" Or Role = "" Then UserForm1.Reponse = "Renseigner Nom et Role.": Exit Sub ' Sécu s'il manque infos
For Each F In Sheets ' Pour toutes les feuilles
If F.Name <> "BDD" Then ' Excepté BDD ( à enrichir si d'autres feuilles doivent être ignorées )
UserForm1.Reponse = "Recherche dans feuille " & F.Name
If Application.CountIf(Sheets(F.Name).[A1:L40], Name) > 0 Then ' Si le nom est trouvé dans la feuille
For C = 12 To 2 Step -1 ' Pour les colonnes de B à L
With Sheets(F.Name) ' Avec la feuille courante
If Application.CountIf(.Range(.Cells(1, C), .Cells(40, C)), Name) > 0 Then ' Si nom présent dans la colonne
L = Application.Match(Name, .Range(.Cells(1, C), .Cells(40, C)), 0) ' On mémorise la ligne
If .Cells(L, 1) = Role Then ' Si le Role est ok
For C2 = C To C - 3 Step -1 ' On cherche la date ( problème des cellules fusionnées )
If .Cells(1, C2) <> "" Then JourTrouvé = .Cells(1, C2): _
Période = .Cells(2, C2): S = .Cells(1, 1): Exit For ' Si trouvé on mémorise le jour
Next C2
If JourTrouvé > Jour Then Jour = JourTrouvé: Feuille = F.Name ' Si ce jour est plus récent que celui mémorisé
End If
End If
End With
Next C
End If
End If
Next F
If Jour > 0 Then ' On restitue les résultats si u jour touvé sinon on dit que c'est raté.
UserForm1.Reponse = "La dernière date touvée en " & Feuille & " ( " & S & " )" & Chr(10) & "où " & Name & _
" a occupé le poste " & Role & Chr(10) & "est le " & Jour & ". " & _
"( " & Replace(Période, Chr(10), " ") & " )"
Else
UserForm1.Reponse = "Pas de correspondance trouvée. Sorry!"
End If
End Sub
Private Sub Fermer_Click() ' On ferme l'userform
Unload UserForm1
End Sub