Macro pour supprimer lignes selon texte en colonne C

  • Initiateur de la discussion Initiateur de la discussion WITER
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

WITER

XLDnaute Occasionnel
Bonjour à tous , je cherche ubne macro pour supprimer dans ma feuille toutes les lignes qui ont dans la colonne B un nombre qui commence par 6***** ou par 7*****

Voici en piece jointe le fichier exemple
en feuille1 avant la macro
et en feuille2 apres la macro



merci d avance pour votre aide
 

Pièces jointes

Re : Macro pour supprimer lignes selon texte en colonne C

Bonsoir,

Je propose le code suivant.
Voir fichier joint.

Sub Test()
For i = Range("C65536").End(xlUp).Row To 2 Step -1
If Left(Cells(i, 3).Value, 1) = 6 Or Left(Cells(i, 3).Value, 1) = 7 Then
Cells(i, 3).EntireRow.Delete
End If
Next
End Sub
 

Pièces jointes

Re : Macro pour supprimer lignes selon texte en colonne C

Bonsoir

Chez moi ca fonctionne
(je viens de rectifier une tite erreur)
Code:
Sub test1()
Dim cell As Range
For Each cell In ActiveSheet.UsedRange
If cell.Value Like "6*" Or cell.Value Like "7*" Then
cell.EntireRow.Delete
End If
Next cell
End Sub
 
Dernière édition:
Re : Macro pour supprimer lignes selon texte en colonne C

Staple1600,

chez moi ça fonctionne partiellement ...
En tous les cas je n'obtient pas le resultat escompté dans par Witer dans l'onglet Feuil2.
Le Delete fait passer à la ligne suivante et oublie des 6* et des 7*
 
Re : Macro pour supprimer lignes selon texte en colonne C

Rebonsoir

Je ne comprens pas pourquoi ce code ne fonctionne
pas

Quelqu'un peut-il m'expliquer svp?

Code:
Sub test2()
Dim cell As Range

For Each cell In ActiveSheet.UsedRange
If cell.Value Like "6#####" Then 'Or cell.Value j'ai oublié d'effacer
cell.EntireRow.Delete
End If
Next

For Each cell In ActiveSheet.UsedRange
If cell.Value Like "7#####" Then
cell.EntireRow.Delete
End If
Next
End Sub
 
Dernière édition:
Re : Macro pour supprimer lignes selon texte en colonne C

Bonsoir Staple1600,

2 causes :

1)Il y a
Code:
Or cell.Value
dans ton code qui ne sert à rien.


2)Si on vire le PB 1 : Cela ne fonctionne pas car tu progresse dans le fichier de haut en bas. tu supprime donc une ligne sur 2. Pour t'en convaicre, j'ai symplifier le fichier d'origine
Jete un oeil 😉


XanorK
 

Pièces jointes

Re : Macro pour supprimer lignes selon texte en colonne C

Bonsoir,

Je l'ai simplifié de la façon suivante (je n'ai ps compris le "Or cell.Value") :

Sub test2()
Dim cell As Range
For Each X In ActiveSheet.UsedRange
MsgBox X.Value
If X.Value Like "6#####" Then
X.EntireRow.Delete
End If
Next
End Sub

Ce qui se passe, c'est que X se déplace ce G à D et de H en B.
donc s'il y a par exemple un 600000 en B10, B11 et B12

En arrivant en B10, la ligne est supprimée.
X passe en B11 (mais B10 contient un 600000, puisquon vient de decaler vers le haut).
X continue son chemin et passe en ligne 11 qd il rencontre 600000 il supprime la ligne mais le decalage rajoute un 600000 qui ne sera pas traité etc ...
 
Re : Macro pour supprimer lignes selon texte en colonne C

Re

Ca non plus ca ne marche pas du tout
Pourquoi svp?

sub test3()
For Each cell In Worsheets("Feuil1").Columns(3).Value' c'est la que ca coince
If cell.Value Like "6#####" ThenOr cell.Value Like "7#####"
cell.EntireRow.Delete
End If
Next
end sub
 
Re : Macro pour supprimer lignes selon texte en colonne C

Bonsoir,
a mon avis, le .value de la ligne "où çà coince" n'a rien à faire là !!
Remplace Worsheets par WorKsheets
le Then ne me semble pas à sa place...

Cà, ça marche:

Sub test3()
derlig = Range("C65536").End(xlUp).Row
For lig = 1 To derlig
a = Range("C" & lig).Value
If IsNumeric(a) Then a = Left((Trim(Str(a))), 1)
If a = "6" Or a = "7" Then
Range("C" & lig).EntireRow.Delete
End If
Next
End Sub
 
Re : Macro pour supprimer lignes selon texte en colonne C

Et çà c'est encore mieux puisque çà traite indifféremment les nombres et les chaines de caractère:

Sub test3()
derlig = Range("C65536").End(xlUp).Row
For lig = 1 To derlig
a = Range("C" & lig).Value
If IsNumeric(a) Then a = Left((Trim(Str(a))), 1) Else a = Left(Trim(a), 1)
If a = "6" Or a = "7" Then
Range("C" & lig).EntireRow.Delete
End If
Next
End Sub

Bonne nuit à tous

A+
Philippe
 
Re : Macro pour supprimer lignes selon texte en colonne C

Re


Je suis enteté

Mais je voudrais réussir à faire une macro
(pour le problème posé)

qui utilise Like

Ce n'est pas possible dans ce cas là?

Deuxième question
Pourquoi, svp
For each cell in ActiveSheet.UsedaAnge fonctionne
mais pas la ligne ci-dessous.
For Each cell In Worsheets("Feuil1").Columns(3).Value'

Merci d'éclairer ma lanterne.
 
Re : Macro pour supprimer lignes selon texte en colonne C

Salut Staple,

Tu ne peux pas appliquer la propriété ".value" à l'objet "column", celà n'a pas de sens !!!

Essaie ceci, qui marche très bien:

Sub test3()
For Each cell In Worksheets("Feuil1").Columns(3).Cells
If cell.Value Like "6*" Or cell.Value Like "7*" Then
cell.EntireRow.Delete
End If
Next
End Sub

A+
Philippe
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour