Supprimer une ligne lorsque toute la ligne ne contient pas un mo

Candice -  
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,

J'aimerai supprimer les lignes d'un tableau EXcel lorsque les lignes ne contiennent pas un mot. Le mot en question ne se trouve pas dans une colonne précise, il faut donc regarder toutes les cellules de la ligne pour voir si on supprime cette ligne ou non.

Un grand merci d'avance pour votre aide,
Candice
A voir également:

1 réponse

pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
Bonjour,

Macros à adapter :

Pour masquer les lignes ou apparait le mot Pingouin :
1- si le mot est seul dans la cellule :
Sub MasqueLignes1()
Dim Lig As Long, DrLig As Long, monMot As String

monMot = "Pingouin"
With Sheets("Feuil1") ' A Adapter le nom de la feuille
    DrLig = .Columns(1).Find("*", , , , xlByColumns, xlPrevious).Row
    For Lig = 2 To DrLig
        If WorksheetFunction.CountIf(.Rows(Lig), monMot) > 0 Then .Rows(Lig).Hidden = True
    Next Lig
End With
End Sub 


2- si le mot est dans une cellule à l'intérieur d'une phrase :
par exemple : "Le pingouin est sur la banquise"

Sub MasqueLignes2()
Dim Lig As Long, DrLig As Long, monMot As String

monMot = "Pingouin"
With Sheets("Feuil1") ' A Adapter le nom de la feuille
    DrLig = .Columns(1).Find("*", , , , xlByColumns, xlPrevious).Row
    For Lig = 2 To DrLig
        If WorksheetFunction.CountIf(.Rows(Lig), "*" & monMot & "*") > 0 Then .Rows(Lig).Hidden = True
    Next Lig
End With
End Sub


Pour supprimer, il faut faire la boucle à l'envers et remplacer .Hidden = True par .Delete, comme ceci :
1- si le mot est seul dans la cellule :
Sub MasqueLignes1()
Dim Lig As Long, DrLig As Long, monMot As String

monMot = "Pingouin"
With Sheets("Feuil1") ' A Adapter le nom de la feuille
    DrLig = .Columns(1).Find("*", , , , xlByColumns, xlPrevious).Row
    For Lig = DrLig To 2 Step - 1
        If WorksheetFunction.CountIf(.Rows(Lig), monMot) > 0 Then .Rows(Lig).Delete
    Next Lig
End With
End Sub 


2- si le mot est dans une cellule à l'intérieur d'une phrase :
par exemple : "Le pingouin nage dans l'eau"

Sub MasqueLignes2()
Dim Lig As Long, DrLig As Long, monMot As String

monMot = "Pingouin"
With Sheets("Feuil1") ' A Adapter le nom de la feuille
    DrLig = .Columns(1).Find("*", , , , xlByColumns, xlPrevious).Row
    For Lig = DrLig To 2 Step - 1
        If WorksheetFunction.CountIf(.Rows(Lig), "*" & monMot & "*") > 0 Then .Rows(Lig).Delete
    Next Lig
End With
End Sub


A noter : l'écriture :
DrLig = .Columns(1).Find("*", , , , xlByColumns, xlPrevious).Row
suppose que la colonne A (Columns(1)) est, au moins, la plus remplie...

Cordialement,
Franck
0