Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

suppression de ligne avec un critère

6 réponses
Avatar
elli6258
Bonjour à tous,
Je viens une nouvelle fois chercher des infos.

Dans un tableau je souhaite supprimer les lignes qui ne contiennent pas un
mot que j'ai mis dans une liste déroulante.
Dans un premier j'essaie de faire fonctionner ma macro avec l'exemple
ci-dessous. Certaines lignes sont bien supprimé mais quelques une reste.
A noté que la cellule peut contenir plusieurs séparé pa un ","

exemple: "ell,epp,ecc"

Merci d'avance
Michel

Dim celu As Range
Dim eq As Range
Set eq = Range("U1:U" & lignevid1)
For Each celu In eq
If celu.Value <> "*ell*" Then
Rows(Selection.Row).Delete shift:=xlUp
End If
Next celu

6 réponses

Avatar
FFO
Salut à toi

A la place de la ligne :

If celu.Value <> "*ell*" Then

je mettrais

If celu.Value like "*ell*" = False Then

Peut être du mieux
Dis moi !!!
Avatar
lSteph
Bonjour,

(je ne vois pas où tu as défini lignevid1 mais je présume qu e c'est
fait corretement par ailleurs).
Il me semble que le pb est qu'il faut remonter pour une boucle qui
supprime , sinon on saute!

Sub supsaufell()
Dim eq As Range, lignevid1 As Long, i As Long
lignevid1 = [U65536].End(xlUp)(2).Row
Set eq = Range("U1:U" & lignevid1)
For i = eq.Cells.Count To 1 Step -1
With eq.Cells(i)
If Not .Text Like "*ell*" Then .EntireRow.Delete
End With
Next
Set eq = Nothing
End Sub

'lSteph


elli6258 a écrit :
Bonjour � tous,
Je viens une nouvelle fois chercher des infos.

Dans un tableau je souhaite supprimer les lignes qui ne contiennent pas u n
mot que j'ai mis dans une liste d�roulante.
Dans un premier j'essaie de faire fonctionner ma macro avec l'exemple
ci-dessous. Certaines lignes sont bien supprim� mais quelques une reste.
A not� que la cellule peut contenir plusieurs s�parï¿ ½ pa un ","

exemple: "ell,epp,ecc"

Merci d'avance
Michel

Dim celu As Range
Dim eq As Range
Set eq = Range("U1:U" & lignevid1)
For Each celu In eq
If celu.Value <> "*ell*" Then
Rows(Selection.Row).Delete shift:=xlUp
End If
Next celu


Avatar
elli6258
Bonjour,
Désolé de ne répondre que si tard, mais j'ai été pris par ailleurs.
Merci pour vos propositions.
mais cela ne fonctionne pas.
Dans la version de FFO, certaine ligne ne sont pas supprimées.
Dans la version de Steph, je me retrouve avec une feuille blanche.
Cordialement




"lSteph" a écrit dans le message de news:

Bonjour,

(je ne vois pas où tu as défini lignevid1 mais je présume que c'est
fait corretement par ailleurs).
Il me semble que le pb est qu'il faut remonter pour une boucle qui
supprime , sinon on saute!

Sub supsaufell()
Dim eq As Range, lignevid1 As Long, i As Long
lignevid1 = [U65536].End(xlUp)(2).Row
Set eq = Range("U1:U" & lignevid1)
For i = eq.Cells.Count To 1 Step -1
With eq.Cells(i)
If Not .Text Like "*ell*" Then .EntireRow.Delete
End With
Next
Set eq = Nothing
End Sub

'lSteph


elli6258 a écrit :
Bonjour ? tous,
Je viens une nouvelle fois chercher des infos.

Dans un tableau je souhaite supprimer les lignes qui ne contiennent pas un
mot que j'ai mis dans une liste d?roulante.
Dans un premier j'essaie de faire fonctionner ma macro avec l'exemple
ci-dessous. Certaines lignes sont bien supprim? mais quelques une reste.
A not? que la cellule peut contenir plusieurs s?par? pa un ","

exemple: "ell,epp,ecc"

Merci d'avance
Michel

Dim celu As Range
Dim eq As Range
Set eq = Range("U1:U" & lignevid1)
For Each celu In eq
If celu.Value <> "*ell*" Then
Rows(Selection.Row).Delete shift:=xlUp
End If
Next celu


Avatar
lSteph
Bonjour,
si dans ta colonne U il n'y a pas ell, forcément la ligne saute donc
rien ne reste,
c'est ce que tu demandais visiblement selon ton premier code!

Cordialement

--
lSteph

On 4 déc, 12:54, "elli6258" wrote:
Bonjour,
Désolé de ne répondre que si tard, mais j'ai été pris par aille urs.
Merci pour vos propositions.
mais cela ne fonctionne pas.
Dans la version de FFO, certaine ligne ne sont pas supprimées.
Dans la version de Steph, je me retrouve avec une feuille blanche.
Cordialement

"lSteph" a écrit dans le message de news:

Bonjour,

(je ne vois pas où tu as défini lignevid1 mais je présume que c'est
fait corretement par ailleurs).
Il me semble que le pb est qu'il faut remonter pour une boucle qui
supprime , sinon on saute!

Sub supsaufell()
Dim eq As Range, lignevid1 As Long, i As Long
lignevid1 = [U65536].End(xlUp)(2).Row
    Set eq = Range("U1:U" & lignevid1)
For i = eq.Cells.Count To 1 Step -1
With eq.Cells(i)
If Not .Text Like "*ell*" Then .EntireRow.Delete
End With
Next
Set eq = Nothing
End Sub

'lSteph

elli6258 a écrit :

> Bonjour ? tous,
> Je viens une nouvelle fois chercher des infos.

> Dans un tableau je souhaite supprimer les lignes qui ne contiennent pas un
> mot que j'ai mis dans une liste d?roulante.
> Dans un premier j'essaie de faire fonctionner ma macro avec l'exemple
> ci-dessous. Certaines lignes sont bien supprim? mais quelques une reste .
> A not? que la cellule peut contenir plusieurs s?par? pa un ","

> exemple: "ell,epp,ecc"

> Merci d'avance
> Michel

>     Dim celu As Range
>     Dim eq As Range
>     Set eq = Range("U1:U" & lignevid1)
>     For Each celu In eq
>     If celu.Value <> "*ell*" Then
>     Rows(Selection.Row).Delete shift:=xlUp
>     End If
>     Next celu


Avatar
FFO
Rebonjour à toi

Si certaines lignes ne sont pas supprimmées c'est qu'elle ne répondent pas
au critère pour l'être
Vérifies les blancs éventuels (espace ou autres)
N'y a t'il pas un problème de casse (minuscule, majuscule) auquel cas
utilise plutôt :

If LCase(celu.Value) like "*ell*" = False Then

Sinon envoi ton fichier par le biais de ce site :


http://www.cijoint.fr/index.php

Pour qu'on l'étudie

Transmets nous le lien
Avatar
elli6258
Bonsoir,
J'ai trouvé une macro que j'ai adapté et cela donne ceci :

For lin = ActiveSheet.UsedRange.Rows.Count + ActiveSheet.UsedRange.Row To 1
Step -1
If Cells(lin, 20) <> "ell" And Left(Cells(lin, 1), 2) = "OU" Then
Rows(lin).Delete Shift:=xlUp
Next lin

merci encore à vous deux .
Michel



"FFO" a écrit dans le message de news:

Rebonjour à toi

Si certaines lignes ne sont pas supprimmées c'est qu'elle ne répondent pas
au critère pour l'être
Vérifies les blancs éventuels (espace ou autres)
N'y a t'il pas un problème de casse (minuscule, majuscule) auquel cas
utilise plutôt :

If LCase(celu.Value) like "*ell*" = False Then

Sinon envoi ton fichier par le biais de ce site :


http://www.cijoint.fr/index.php

Pour qu'on l'étudie

Transmets nous le lien