VBA excel condition supprimer lignes
Résolu
Fou_Du_Guidon
Messages postés
320
Date d'inscription
Statut
Membre
Dernière intervention
-
Fou_Du_Guidon Messages postés 320 Date d'inscription Statut Membre Dernière intervention -
Fou_Du_Guidon Messages postés 320 Date d'inscription Statut Membre Dernière intervention -
A voir également:
- Supprimer lignes excel avec condition vba
- Supprimer rond bleu whatsapp - Guide
- Excel cellule couleur si condition texte - Guide
- Liste déroulante excel - Guide
- Supprimer une page word - Guide
- Aller à la ligne excel - Guide
9 réponses
Bonjour,
une syntaxe possible :
A+
une syntaxe possible :
If Range("Y2") = "" And Range("Z2") = "" Then Rows(2).Delete Shift:=xlUp End If If Range("Y3") = "" And Range("Z3") = "" Then Rows(3).Delete Shift:=xlUp End If
A+
Oui possible mais il faudrai imbriquier les 2 IF du genre si Y vide on va voir a Z si Z vide on supprime.
Merci de te pencher sur la question.
Merci de te pencher sur la question.
Oui bien sur imbriquer les if ça peut avoir une utilité si tu as des traitements à faire si Y est vide tout seul ..
Voila une syntaxe pour l'imbrication :
Voila une syntaxe pour l'imbrication :
If Range("Y2") = "" Then '..... traitement si Y2 est vide et que Z2 soit vide ou pas If Range("Z2") = "" Then Rows(2).Delete Shift:=xlUp else '... traitement si Y2 est vide et Z2 non vide End If End If
C'est bon sa fonctionne , mais sa ne va pas jusqu'a la fin. Et aussi une ligne est traité deux fois si la suivante est supprimée avec ca sa fonctionne?
Rows(ligne).Delete
ligne = ligne - 1
Merci encore
Rows(ligne).Delete
ligne = ligne - 1
Merci encore
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Oui, habituellement quand on doit nettoyer un fichier en supprimant des lignes on fait un traitement qui remonte de la dernière ligne à la première du style :
EDIT : Le delete décale les lignes vers le haut même si on omet l'argument Shift, comme il s'agit de la suppression d'une ligne il décale par defaut vers le haut
For NumLigne = Derligne To 2 Step -1 If Range("Y" & NumLigne) = "" Then '..... If Range("Z" & NumLigne) = "" Then Rows(NumLigne).Delete Shift:=xlUp End If End If Next NumLigne
EDIT : Le delete décale les lignes vers le haut même si on omet l'argument Shift, comme il s'agit de la suppression d'une ligne il décale par defaut vers le haut
Arf sa ne supprime aucune lignes, et sa me décale d'une colonne le contenu de la colonne I est remplacer par celle d'aprés
Je comprend pas :-/
Je comprend pas :-/
Je met le code au besoin
Sub PréparationRetour()
'
' PréparationRetour Macro
'
'
nom_fichier = InputBox("Nom du fichier :", "Saisir le nom du fichier à traiter")
If nom_fichier = "" Then Exit Sub
If Right(nom_fichier, 4) <> ".xls" Then nom_fichier = nom_fichier & ".xls"
Workbooks(nom_fichier).Activate
'Workbooks("Zone 1.xls").Activate
For NumLigne = Derligne To 2 Step -1
If Range("W" & NumLigne) = "" Then
If Range("X" & NumLigne) = "" Then
Rows(NumLigne).Delete Shift:=xlUp
End If
End If
Next NumLigne
Columns("AE:AH").Select
Selection.Delete Shift:=xlToLeft
Columns("AB:AB").Select
Selection.Cut
Columns("I:I").Select
Selection.Insert Shift:=xlToRight
Windows("Retour44.xls").Activate
Workbooks(nom_fichier).Activate
Rows("1:1").Select
Selection.Delete Shift:=xlUp
Range("A1:AD500").Select
Selection.Copy
Windows("Retour44.xls").Activate
Range("A2").Select
ActiveSheet.Paste
End Sub
Sub PréparationRetour()
'
' PréparationRetour Macro
'
'
nom_fichier = InputBox("Nom du fichier :", "Saisir le nom du fichier à traiter")
If nom_fichier = "" Then Exit Sub
If Right(nom_fichier, 4) <> ".xls" Then nom_fichier = nom_fichier & ".xls"
Workbooks(nom_fichier).Activate
'Workbooks("Zone 1.xls").Activate
For NumLigne = Derligne To 2 Step -1
If Range("W" & NumLigne) = "" Then
If Range("X" & NumLigne) = "" Then
Rows(NumLigne).Delete Shift:=xlUp
End If
End If
Next NumLigne
Columns("AE:AH").Select
Selection.Delete Shift:=xlToLeft
Columns("AB:AB").Select
Selection.Cut
Columns("I:I").Select
Selection.Insert Shift:=xlToRight
Windows("Retour44.xls").Activate
Workbooks(nom_fichier).Activate
Rows("1:1").Select
Selection.Delete Shift:=xlUp
Range("A1:AD500").Select
Selection.Copy
Windows("Retour44.xls").Activate
Range("A2").Select
ActiveSheet.Paste
End Sub
C'est Derligne qui est à 0 donc il ne passe pas dans la boucle For.
En fait Derligne est une variable qui représente la dernière ligne mais il faut l'initialiser avant la boucle.
Si le nombre de ligne est connu il faut mettre la valeur avant le for (Derligne= 100 par exemple)
Sinon, il faut calculer la dernière ligne avec une instruction du type
Derligne = Range("A65536").End(xlUp).Row
Ici c'est la colonne A qui est testée. Cette instruction initialise Derligne avec le dernier numéro de ligne dans laquelle la cellule A n'est pas vide. Il faut donc l'adapter en trouvant la colonne qui est pertinente dans ton cas.
Je n'ai pas regardé le reste du code.
Teste avec Derligne initialisé et dis moi si le reste fonctionne comme tu le souhaites.
A+
En fait Derligne est une variable qui représente la dernière ligne mais il faut l'initialiser avant la boucle.
Si le nombre de ligne est connu il faut mettre la valeur avant le for (Derligne= 100 par exemple)
Sinon, il faut calculer la dernière ligne avec une instruction du type
Derligne = Range("A65536").End(xlUp).Row
Ici c'est la colonne A qui est testée. Cette instruction initialise Derligne avec le dernier numéro de ligne dans laquelle la cellule A n'est pas vide. Il faut donc l'adapter en trouvant la colonne qui est pertinente dans ton cas.
Je n'ai pas regardé le reste du code.
Teste avec Derligne initialisé et dis moi si le reste fonctionne comme tu le souhaites.
A+