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
| Const Sht_Ori = "Origine" ' Onglet de départ avec toutes les valeurs
Const Sht_Cib = "Cible" ' Onglet où s'affichera l'objet de la recherche
Const Sht_Acc = "Accueil" 'Onglet avec le champ des mots à rechercher et le bouton de lancement de la macro
Sub Recherche_Mot()
Dim Nbr_Lig As Long, Nbr_Col As Long, Nbr_Mot As Long, Num_Lig As Long
Dim i As Long, j As Long, k As Long, Tab_Temp
Dim Tst_Mot As Boolean
With ThisWorkbook
With .Worksheets(Sht_Acc) 'Compte le nombre de mots
Tab_Temp = Split(.Range("A1").Value, " ") 'Note les mots rechercher dans un tableau temporaire
Nbr_Mot = UBound(Tab_Temp) 'Compte le nombre de mots à rechercher
End With
With .Worksheets(Sht_Ori) 'Dimensionne le tableau
Nbr_Lig = .Range("A65536").End(xlUp).Row 'Compte le nombre de lignes
Nbr_Col = .Range("IV1").End(xlToLeft).Column 'Compte le nombre de colonnes
End With
For i = 1 To Nbr_Lig 'Boucle sur les lignes
Tst_Mot = False 'Réinitialise l'indicateur de test
For j = 1 To Nbr_Col 'Boucle sur les colonnes
For k = 0 To Nbr_Mot 'Boucle sur les mots
If InStr(Worksheets(Sht_Ori).Cells(i, j).Value, Tab_Temp(k)) > 0 Then
Tst_Mot = True 'Test validé si au moins un mot est trouvé dans une ligne
End If
Next k
Next j
If Tst_Mot = True Or i = 1 Then 'Si le test est validée ou s'il s'agit de la ligne d'en tête copie de la ligne
Num_Lig = Num_Lig + 1 'Incrémente le nombre de lignes de l'onglet cible
Worksheets(Sht_Cib).Rows(Num_Lig).Value = Worksheets(Sht_Ori).Rows(i).Value
End If
Next i
End With
End Sub |
Partager