Excel VBA:supprimer lignes ne contenant pas..
Résolu
Eaheru
Messages postés
205
Statut
Membre
-
Eaheru Messages postés 205 Statut Membre -
Eaheru Messages postés 205 Statut Membre -
Bonjour,
Je rédige une macro VBA destinée a supprimer les lignes ne contenant pas certains caractères dans une colonne donnée.
Le but est donc de scruter les lignes de la colonne "BI" depuis la ligne 3000 jusqu'à la ligne 2
et si le valeur qui s'y trouve ne comprend pas les chaines de caractères suivantes :"PROD" ou "REC" , je supprime la ligne.
J'en suis donc a cette macro :
Sub suppression()
Dim z$, i&, k&
k = Cells(3000, 61).Row
For i = k To 2 Step -1
z = Cells(i, 1).Value
If Not (Cells(i, 61) Like ("PROD*", "REC*")) Then Rows(i).Delete
Next
ActiveWorkbook.Save
End Sub
Et la, ça ne fonctionne pas. La macro fonctionne très bien si je n'ai qu'une des 2 valeurs de référence (PROD ou REC*) mais je ne vois pas comment lui demander une référence multiple (les terme de la macro ici en gras la font planter).
J'obtiens le message "erreur de syntaxe"
Quelqu'un saurait il dépanner cette macro svp ?
Merci d'avance pour votre aide.
Je rédige une macro VBA destinée a supprimer les lignes ne contenant pas certains caractères dans une colonne donnée.
Le but est donc de scruter les lignes de la colonne "BI" depuis la ligne 3000 jusqu'à la ligne 2
et si le valeur qui s'y trouve ne comprend pas les chaines de caractères suivantes :"PROD" ou "REC" , je supprime la ligne.
J'en suis donc a cette macro :
Sub suppression()
Dim z$, i&, k&
k = Cells(3000, 61).Row
For i = k To 2 Step -1
z = Cells(i, 1).Value
If Not (Cells(i, 61) Like ("PROD*", "REC*")) Then Rows(i).Delete
Next
ActiveWorkbook.Save
End Sub
Et la, ça ne fonctionne pas. La macro fonctionne très bien si je n'ai qu'une des 2 valeurs de référence (PROD ou REC*) mais je ne vois pas comment lui demander une référence multiple (les terme de la macro ici en gras la font planter).
J'obtiens le message "erreur de syntaxe"
Quelqu'un saurait il dépanner cette macro svp ?
Merci d'avance pour votre aide.
A voir également:
- Vba supprimer ligne si cellule ne contient pas
- Supprimer rond bleu whatsapp - Guide
- Excel cellule couleur si condition texte - Guide
- Partager photos en ligne - Guide
- Supprimer page word - Guide
- Aller à la ligne dans une cellule excel - Guide
7 réponses
Tant mieux, mais tu n'a pas tenu compte de la remarque de bacus13..
et pour Option compare texte c'est TOUT EN HAUT DU MODULE
Et vu que tu n'a pas mis Option Explicit tu ne vois pas l'ereur de déclaration...
z N'EST PAS EGALE à z$
pour employer z$ tu dois l'écrire z$ = Cells(i, 61).Value
ou alors dim z as String, alors z = Cells(i, 61).Value , c'est bon
Prend aussi l'habitude de mettre Option explicit dans tout tes modules.
Plus facile..dans l'éditeur VBA >> Outils >> options >> cocher >> Déclaration des variables obligatoire
et pour Option compare texte c'est TOUT EN HAUT DU MODULE
Et vu que tu n'a pas mis Option Explicit tu ne vois pas l'ereur de déclaration...
z N'EST PAS EGALE à z$
pour employer z$ tu dois l'écrire z$ = Cells(i, 61).Value
ou alors dim z as String, alors z = Cells(i, 61).Value , c'est bon
Prend aussi l'habitude de mettre Option explicit dans tout tes modules.
Plus facile..dans l'éditeur VBA >> Outils >> options >> cocher >> Déclaration des variables obligatoire
Option Explicit Option Compare Text Sub suppression() Dim z as String For i = 3000 To 2 Step -1 z = Cells(i, 61).Value If Not (Cells(i, 61) Like ("PROD*") Or Cells(i, 61) Like ("REC*")) Then Rows(i).Delete Next ActiveWorkbook.Save End Sub
Bonjour,
Les expressions PROD ou REC se trouve où dans le libellé de la cellule ?
A+
Edit:
Tu dois ajouter Option Compare Text en haut du module, si ce n'est fait.
et ta formule devrait être...
L'expérience instruit plus sûrement que le conseil. (André Gide)
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
Les expressions PROD ou REC se trouve où dans le libellé de la cellule ?
A+
Edit:
Tu dois ajouter Option Compare Text en haut du module, si ce n'est fait.
et ta formule devrait être...
If Not (Cells(i, 61) Like ("PROD*") Or Cells(i, 61) Like ("REC*")) Then Rows(i).Delete
L'expérience instruit plus sûrement que le conseil. (André Gide)
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
rien a voir mais pourquoi faire k = Cells(3000, 61).Row et pas k = 3000?
ou même For i = 3000 to 2 Step -1 ?
ou même For i = 3000 to 2 Step -1 ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour et merci pour cette réponse.
Donc ça fonctionne parfaitement, bien que je n'ai pas pu ajouter l'option : "Option Compare Text" dans ma macro;
Je reçois le retour : "Instruction incorrecte dans une procédure"
Malgré ce détail, la routine fonctionne très bien comme suit :
Sub suppression()
Dim z$, i&, k&
k = Cells(3000, 61).Row
For i = k To 2 Step -1
z = Cells(i, 61).Value
If Not (Cells(i, 61) Like ("PROD*") Or Cells(i, 61) Like ("REC*")) Then Rows(i).Delete
Next
ActiveWorkbook.Save
End Sub
Merci de ton aide :)
Donc ça fonctionne parfaitement, bien que je n'ai pas pu ajouter l'option : "Option Compare Text" dans ma macro;
Je reçois le retour : "Instruction incorrecte dans une procédure"
Malgré ce détail, la routine fonctionne très bien comme suit :
Sub suppression()
Dim z$, i&, k&
k = Cells(3000, 61).Row
For i = k To 2 Step -1
z = Cells(i, 61).Value
If Not (Cells(i, 61) Like ("PROD*") Or Cells(i, 61) Like ("REC*")) Then Rows(i).Delete
Next
ActiveWorkbook.Save
End Sub
Merci de ton aide :)