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

10 réponses

1 2
Avatar
LeSteph
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
JC
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 Bonjour,
Ne vois pas bien pourquoi
chez moi cela marche impec
quel est le message erreur?
essaie sans les commentaires et sans indentation
et copie bien tout de sub à end sub inclus
comme ceci:
'******
Sub supsitraits()
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:
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
...et peut être remplace
next r
par
next
et
next c
par
next

...les indices ici ne servent pas
Avatar
Joel
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
LeSteph
Bonjour,
j'avais pas envie de boucler sur les 65536 lignes
d'où mon idéede commence en haut , en plus je boucle
sur les cellule dans la ligne car
les premières cellules peuvent très bien
être vides et pourtant ainsi les premiers caractères être -- à la colonne 2
ou3
Il n'ya donc pas lieu de supprimer deux lignes d'un seul coup
mais une par une.
Quoiqu'il en soit cela ne m'explique pas comment une erreur
survient chez JC sur Dim r as Range

merci quand même

lSteph



"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
Joel
Re ;-)

Ce que je voulais dire, c'est que quand tu commences par le haut, dans une
boucle for each etc, et que 2 lignes consécutives doivent être supprimées,
il en restera 1 qui ne sera pas supprimée...

Pour le reste, OK,

Bon week-end...

--

Bien cordialement,

Joël GARBE
www.joelgarbe.fr
"LeSteph" a écrit dans le message de news:

Bonjour,
j'avais pas envie de boucler sur les 65536 lignes
d'où mon idéede commence en haut , en plus je boucle
sur les cellule dans la ligne car
les premières cellules peuvent très bien
être vides et pourtant ainsi les premiers caractères être -- à la colonne
2 ou3
Il n'ya donc pas lieu de supprimer deux lignes d'un seul coup
mais une par une.
Quoiqu'il en soit cela ne m'explique pas comment une erreur
survient chez JC sur Dim r as Range

merci quand même

lSteph



"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
LeSteph
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
Ave Steph,

La remarque de Joël est judicieuse...

j'avais pas envie de boucler sur les 65536 lignes
Pour boucler à partir de la dernière ligne renseignée :


For i = Cells.Find("*", , 1, , 1, 2).Row To 1 Step -1

Quoiqu'il en soit cela ne m'explique pas comment une erreur
survient chez JC sur Dim r as Range


Moi non plus... !

AV

Avatar
Joel
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











1 2