Supprimer des lignes en fonction d'un mot

Bonjour,

J'ai actuellement une macro me permettant de récupérer des noms de fichier et de les retranscrire dans un tableau qui à la forme que je veux.

J'utilise un code qui supprimer les lignes dont je n'ai pas besoin :

Sub Supp_dossier_inutile()

Dim i As Integer

For i = [A65000].End(xlUp).Row To 1 Step -1

If Not Cells(i, 1).Find("msg") Is Nothing Then Rows(i).Delete

If Not Cells(i, 1).Find("EVO") Is Nothing Then Rows(i).Delete

If Not Cells(i, 1).Find("perimes") Is Nothing Then Rows(i).Delete

Seulement, je voudrais supprimer ces lignes en mettant " toutes les cellules ne contenant pas ".xlsm" et "ACT" et etc." seront supprimés.

J'espère être suffisamment clair.

Merci d'avance pour votre aide.

Bonjour,

pour vérifier si une cellule contient quelque chose, on peut utiliser un opérateur pas toujours très connu: Like

https://docs.microsoft.com/fr-fr/dotnet/visual-basic/language-reference/operators/like-operator

ce qui donnerait:

If Not Cells(i, 1) like "*msg*" and Not Cells(i, 1) Like "*EVO*" and Not Cells(i, 1) like "*perimes*") Then Rows(i).Delete

Si tu as énormément de mots, tu peux également les mettre dans un tableau, faire une fonction qui compte le nombre de fois que les mots sont trouvés dans la cellule, et supprimer si ça retourne 0

à toi de voir ce qui te convient le mieux

Je pense que je me suis mal exprimé

Je cherche à conserver uniquement les lignes contenant le mot ".xlsm" et "ACT".

Plutôt que de noter tous les mots que je ne veux pas.

Re,

ça marche!

dans ce cas:

If Not Cells(i, 1) like "*.xlsm*" and Not Cells(i, 1) Like "*ACT*" Then Rows(i).Delete

supprime les cellules qui ne contiennent ni .xlsm, ni ACT, celles qui contiennent l'un des deux ne seront pas supprimés, si c'est ce qui est souhaité, il faut mettre Or au lieu de And

Parfait ca fonctionne !

Merci pour ton aide

De rien

ça a été un peu compliqué pour moi de comprendre ce que tu voulais au départ mais on s'en est sortis

merci d'avoir passé le sujet en résolu

Une autre question un peu similaire :

Comment peut-on masquer une ligne ( ligne 4 ) en fonction du mot qu'il y a dedans ( exemple de mot : "SUIVI-EVO" ) ?

Merci.

Cordialement,

Pour masquer une ligne qui contient ce mot, on peut utiliser:

If Cells(i, 1) like "*SUIVI-EVO*" Then Rows(i).Hidden = True

Il faudra peut-être écrire:

If Cells(i, 1) like "*SUIVI-EVO*" Then Rows(i).EntireRow.Hidden = True

D'accord super merci, par contre comment peut-on le ciblé sur la ligne 4 ?

D'accord super merci, par contre comment peut-on le ciblé sur la ligne 4 ?

Il faut remplacer i par 4 et le sortir de la boucle

C'est à dire sortir de la boucle ?

C'est à dire sortir de la boucle ?

C'est à dire que comme ton action n'aura besoin d'être faite qu'une fois, c'est inutile de mettre cette ligne entre ton For i et ton Next i

ce qui se trouve dans la boucle, c'est ce qui a besoin d'être répété

Super j'ai tous compris !

Par contre les formules fonctionnent seulement sur ma ligne 4 j'ai aussi un mot avec ".xlsm" donc en fait je demande de masquer la ligne 4 parce qu'il y a le mot "SUIVI-EVO" mais je dis de garder la ligne parce qu'il y a ".xlsm".

Comment remédier à ça ?

Super j'ai tous compris !

Par contre les formules fonctionnent seulement sur ma ligne 4 j'ai aussi un mot avec ".xlsm" donc en fait je demande de masquer la ligne 4 parce qu'il y a le mot "SUIVI-EVO" mais je dis de garder la ligne parce qu'il y a ".xlsm".

Comment remédier à ça ?

Rebonjour,

oui elle ne fonctionne que sur ta ligne 4, car tu m'as demandé de regarder que la ligne 4 et pas les autres, comme tu précisais le numéro de ligne, je pensais que c'était la seule à être traitée, je pense qu'il faut que tu fasses 2 boucles, d'abord la plus destructrice, celle qui supprime les lignes, puis refaire une boucle pour masquer les lignes restantes

Merci pour toutes tes réponses, je suis arrivé à mes fins !

Merci également pour ta patience.

Bonne journée.

Rechercher des sujets similaires à "supprimer lignes fonction mot"