Vérifier si condition ok
Salut le fil
Passer par des plages nommées ne pose pas trop de problèmes, là ou tu en auras c'est si tu as beaucoup de données à traitées, il te faudra je pense passer par des tableaux comme l'a si bien expliqué Boisgontier sur
Sinon pour le reste tu vires les deux Sub qui ne te servent plus à rien "CleanName" et "AllongeRange" et tu remplaces le code de ton bouton par celui-ci
Sub Bouton1_Cliquer()
Dim sportifCurrentRegion As Range 'Cela correspond à toutes les cellules de la feuille Sportif
Dim colSportif As Range 'colonne dans l'objet sportifCurrentRegion
Dim CritèreCurrentRegion As Range 'Cela correspond à toutes les cellules de la feuille critére
Dim colCritère As Range 'colonne dans l'objet CritèreCurrentRegion
Dim c As Range 'Chaque cellule de la colonne colCritère de l'objet CritèreCurrentRegion
Dim s As Range 'Plage de cellules ou l'on va rechercher
Dim flag As Boolean 'Passe à False si le critère n'est pas trouvé
Dim valCritère As Range
Dim i As Long: i = 1
Dim sh As Worksheet: Set sh = Worksheets("Résultat")
'Pour être générique on va rechercher le nombre de colonne dans la feuille sportif
Set sportifCurrentRegion = Sheets("sportif").Range("A1").CurrentRegion
'On définie la plage de recherche
Set CritèreCurrentRegion = Sheets("critére").Range("A1").CurrentRegion
flag = True
sh.Range("A1").CurrentRegion.Interior.Color = vbWhite
sh.Range("A1").CurrentRegion.Clear
For Each colSportif In sportifCurrentRegion.Columns
Debug.Print vbNewLine & "-------------------------------------------------------------------"
Set s = colSportif.Range("A2:A" & colSportif.Cells.Find("*", , , , xlByColumns, xlPrevious).Row)
For Each colCritère In CritèreCurrentRegion.Columns
Debug.Print " - Recherche du critère : " & colCritère.Range("A1") & " Pour le joueur: " & colSportif.Range("A1")
For Each c In colCritère.Range("A2:A" & colCritère.Cells.Find("*", , , , xlByColumns, xlPrevious).Row)
Set valCritère = s.Find(c)
If valCritère Is Nothing Then
Debug.Print " - Recherche de: " & c & " : False"
flag = False
Exit For
Else
flag = True
End If
Next
If flag Then
Debug.Print " - " & colCritère.Range("A1") & " trouvée pour le joueur : " & colSportif.Range("A1")
With sh.Columns(i)
.Range("A1") = colSportif.Range("A1"): .Range("A1").Interior.Color = vbYellow
.Range("A" & .Cells.Find("*", , , , xlByColumns, xlPrevious).Row + 1) = colCritère.Range("A1")
End With
Else
End If
Next
Set s = Nothing
i = IIf(flag, i + 1, i)
Next
Set sh = Nothing
End SubVoilà....
Vous n'entendez rien ?
Moi si, j'ai la moto qui m'appelle donc fini le PC pour le moment, bonne journée à tous
J
super ça marche nickel !!!!
Un grand merci à toi