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

macro pour supprimer les lignes comportant certains caractères

14 réponses
Avatar
JC
Bonjour,

J'aimerai supprimer les lignes dont les premiiers caractères sont des traits
(---------) comment faire ???

merci

4 réponses

1 2
Avatar
LeSteph
Bonjoir,
Finalement pour les lignes entières de la feuille correspondant à une
sélection de cellules
soit si la première chaîne rencontrée dans la ligne comporte au moins "--"
deux tirêts
( ..désolé AV avec un .find , je ne trouve pas)

Sub supsitraits()

Dim firstR As Integer
firstR = Selection.Cells(1).Row
Application.ScreenUpdating = False

Selection.Rows(Selection.Rows.Count).Select
Do
For Each c In Selection.EntireRow.Cells
If c <> "" Then
If Mid(c, 1, 2) = "--" Then
c.EntireRow.Delete
Exit For
End If
Exit For
End If
Next
If Selection.Row = firstR Then End
Rows(Selection.Row - 1).EntireRow.Select
Loop While Selection.Row >= firstR

Application.ScreenUpdating = True
End Sub
'****
'lSteph

"JC" a écrit dans le message de news:
415e9416$0$7327$
euh ça ne marche pas
erreur dès dim r as range
"LeSteph" a écrit dans le message de news:

Bonjour,
Pour une sélection
Essaie celle-ci:
'*******
'dans module standard
'*****
Sub supsitraits()
'supprime de la sélection
'les lignes commençant par --
Dim r as range
Dim c as range
For Each r In Selection.Cells.Rows
For Each c In r.Cells
If c <> "" Then
If Mid(c, 1, 2) = "--" Then
c.EntireRow.Delete
Exit For
Else
Exit For
End If
End If
Next c
Next r
End Sub
'****
'lSteph
"JC" a écrit dans le message de news:
415e8194$0$7345$
Bonjour,

J'aimerai supprimer les lignes dont les premiiers caractères sont des
traits
(---------) comment faire ???

merci













Avatar
LeSteph
Re,
A propos(chez moi la tienne me met le sablier et s'arrête au bout de plein
de tours sans enlever les lignes à --).. mais tu as dû t'en rendre compte.
Aussi , dans l'entretemps j'en ai fait une qui semble fonctionner
sans problème sur la base d'une sélection et en tenant compte de tes
conseils
judicieux : j'ai mis un do loop while qui remonte les lignes et teste chaque
cellule
dès que l'une n'est pas vide la ligne entière est supprimée si le contenu
commence par deux tirets.

Merci encore et comme dirait qq'un d'autre
ce fut un plaisir
Bon week end à toi aussi.

lSteph



"Joel" a écrit dans le message de news:
415ea940$0$9474$
Comme dirait quelqu'un de connu ;-)

Content de t'avoir rendu service ...

Bon week-end ;-)
--

Bien cordialement,

Joël GARBE
www.joelgarbe.fr
"LeSteph" a écrit dans le message de news:
eUiMX$
oupss...
viens de comprendre
la branche sur laquelle je suis assis
ainsi une ligne sur deux
s'il y a des "--" partout
Bien vu!

Merci Joël

"Joel" a écrit dans le message de news:
415e9cc9$0$3035$
Bonjour Le Steph !!

Une suggestion (si je peux me permettre,

quand on supprime des lignes, ne vaut-il pas mieux ommencer par la
dernière (au cas où 2 lignes successives doivent être supprimées...)

Sub SupprimerTiret()
Dim i As Long
For i = 65536 To 1 Step -1
Application.StatusBar = "Test ligne " & i
If InStr(1, Cells(i, 1), "---") > 1 Then
Cells(i, 1).EntireRow.Delete
End If
Next
Application.StatusBar = False
End Sub


--

Bien cordialement,

Joël GARBE
www.joelgarbe.fr
"LeSteph" a écrit dans le message de news:
uHw$
...et peut être remplace
next r
par
next
et
next c
par
next

...les indices ici ne servent pas















Avatar
AV
( ..désolé AV avec un .find , je ne trouve pas)


If Not c.Find("--") Is Nothing Then...
ou encore
If Evaluate("isnumber(find(""--""," & """" & c & """" & "))") Then...

Mais avec "Mid" ou "Left" ça me semble très bien !

AV

Avatar
LeSteph
...merci,
en fait je parlais d'un find("*"...
comme tu le proposais pour limiter la recherche et exécuter récursivement
les suppressions de ligne
et c'est là que je coincais , pas pour l'extraction de chr
effectivement Mid ou autre font l'affaire ..;
Enfin je m'en sors avec un do loop while..mais j'avoues que c'est un peu
tordu.

Bonne soirée.



"AV" a écrit dans le message de news:
%23VogJ$
( ..désolé AV avec un .find , je ne trouve pas)


If Not c.Find("--") Is Nothing Then...
ou encore
If Evaluate("isnumber(find(""--""," & """" & c & """" & "))") Then...

Mais avec "Mid" ou "Left" ça me semble très bien !

AV





1 2