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

suppression de ligne si le contenu de la cellule commence par E

8 réponses
Avatar
gael.beauverger1
Bonjour,
J'ai un fichier de 35000 lignes dont les cellules de la colonne B
contiennent le matricule d'agents. Je souhaite supprimer les lignes
enti=E8res dont le matricule agent commence par E.
J'ai r=E9cuper=E9 le code suivant:

Sub supprimerligneagentsexternes()
Dim i As Long
Application.ScreenUpdating =3D False
For i =3D 65536 To 1 Step -1
If Left(UCase(Range("b" & i)), 1) =3D "E" Then Range("b" &
i).EntireRow.Delete
Next
End Sub

Cependant ceci ne fontionne pas, les lignes ne sont pas supprim=E9es.
Les codes sont sous la forme "E000000075" ou "00406588". Comment
am=E9liorer ce code?
Cordialement

8 réponses

Avatar
AV
J'ai un fichier de 35000 lignes dont les cellules de la colonne B
contiennent le matricule d'agents. Je souhaite supprimer les lignes
entières dont le matricule agent commence par E.


Sub zzz()
Application.ScreenUpdating = False
[B:B].AutoFilter Field:=1, Criteria1:="=e*"
Range("B2",
[B65536].End(3)).SpecialCells(xlCellTypeVisible).EntireRow.Delete
[A1].AutoFilter
End Sub

AV

Avatar
Jacky
Bonsoir,

'----------
If UCase(Left(Range("b" & i), 1)) = "E" Then .......
'-----------

--
Salutations
JJ

a écrit dans le message de news:

Bonjour,
J'ai un fichier de 35000 lignes dont les cellules de la colonne B
contiennent le matricule d'agents. Je souhaite supprimer les lignes
entières dont le matricule agent commence par E.
J'ai récuperé le code suivant:

Sub supprimerligneagentsexternes()
Dim i As Long
Application.ScreenUpdating = False
For i = 65536 To 1 Step -1
If Left(UCase(Range("b" & i)), 1) = "E" Then Range("b" &
i).EntireRow.Delete
Next
End Sub

Cependant ceci ne fontionne pas, les lignes ne sont pas supprimées.
Les codes sont sous la forme "E000000075" ou "00406588". Comment
améliorer ce code?
Cordialement
Avatar
AV
PS :

de.... " [B:B].AutoFilter Field:=........à .......Delete"
une seule ligne !

AV
Avatar
Jacky
Bonsoir AV
une seule ligne !
Deux tout de même, non ? ou alors j'ai pas compris


La première de:
[B:B]........à..."=e*"

La deuxième de:
Range ....à...delete

ou alors j'ai pas compris...
Une question stp
Pourquoi le deuxième "=" de Criteria1:="=e*" ???
J'ai testé avec Criteria1:="e*" et cela fonctionne aussi.

--
Salutations
JJ

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

PS :

de.... " [B:B].AutoFilter Field:=........à .......Delete"
une seule ligne !

AV



Avatar
AV
une seule ligne !



Mais non pas une seule ligne en tout mais l'instruction
Range("B2"... à ....Delete
sur une seule ligne.
Pour toi ça n'apparait sur 2 lignes sur le forum ?

Pourquoi le deuxième "=" de Criteria1:="=e*"


Pas de raison si ce n'est que c'est ce que renvoie l'enregistreur (dont j'use au
maximum) et que je n'ai pas "nettoyé" avant envoi !

AV


Avatar
Jacky
Pour toi ça n'apparait sur 2 lignes sur le forum ?
Si, Si , mais comme tu disais:

de.... " [B:B].AutoFilter Field:=........à .......Delete"
une seule ligne !

...et que je n'ai pas "nettoyé" avant envoi !
Ah !, c'est ok pour moi.


Reste plus qu'à Gael de d'employer ce filtre bien plus rapide qu'une boucle.
--
JJ (qui n'emploie pas assez souvent les filtres)

"AV" a écrit dans le message de news:
%
une seule ligne !



Mais non pas une seule ligne en tout mais l'instruction
Range("B2"... à ....Delete
sur une seule ligne.
Pour toi ça n'apparait sur 2 lignes sur le forum ?

Pourquoi le deuxième "=" de Criteria1:="=e*"


Pas de raison si ce n'est que c'est ce que renvoie l'enregistreur (dont
j'use au maximum) et que je n'ai pas "nettoyé" avant envoi !

AV





Avatar
AV
Pour toi ça n'apparait sur 2 lignes sur le forum ?
Si, Si , mais comme tu disais:

de.... " [B:B].AutoFilter Field:=........à .......Delete"
une seule ligne !




Pffff...j'avais même pas relu !

AV



Avatar
gael.beauverger1
Bonjour à AV et Jacky,
En reprenant l'enregistreur et les filtres auto, j'ai créé ceci qui
marche pas mal:
Sub Test()
ActiveWindow.SmallScroll ToRight:=-3
Range("A2").Select
Selection.AutoFilter
Selection.AutoFilter Field:=2, Criteria1:="E*", Operator:=xlAnd
Set x = Range("_FilterDataBase").Offset(1,
0).Resize(Range("_FilterDataBase"). _
Rows.Count - 1,
Range("_FilterDataBase").Columns.Count).SpecialCells(xlCellTypeVisible)
x.EntireRow.Delete
ActiveSheet.ShowAllData
End Sub

Merci à tout les deux pour l'aide!
Cordialement