Excel VBA - Code Delete Row
Résolu
Romdan
Messages postés
9
Date d'inscription
Statut
Membre
Dernière intervention
-
Romdan Messages postés 9 Date d'inscription Statut Membre Dernière intervention -
Romdan Messages postés 9 Date d'inscription Statut Membre Dernière intervention -
Bonjour tout le monde!
J'ai un souci avec un code VBA. Impossible de m'en sortir.
Je dispose d'un listing importe d'une page internet et que je souhaiterais nettoyer des lignes blanches qu'il comprend.
1. Le listing a son en-tete de colonne en ligne 4 et la premiere data est en A5
2. Je souhaite que l'epuration stoppe des lors que la boucle rencontre 2 lignes blanches successives. (implicitement, ca signifie que c'est la fin du listing).
J'ai tapé un petit code:
--------------------------------------------------------------------
Sub ()
Sheets("JIRA Extract").Select
Dim c As Integer
Dim d As Integer
c = 0
d = 1
Do While Range("A5").Offset(c, 0) <> "" And Range("A5").Offset(d, 0) <> ""
If Range("A5").Offset(c, 0) = "" Then
Range("A5").Offset(c, 0).EntireRow.Delete
c = c + 1
d = d + 1
End If
Loop
End Sub ()
--------------------------------------------------------------------
Pouvez-vous m'aider, je sais qu'il y a quelques pros qui pourront me sortir de ce probleme :)
Merci a tous de m'avoir lu jusque la!
Romdan
J'ai un souci avec un code VBA. Impossible de m'en sortir.
Je dispose d'un listing importe d'une page internet et que je souhaiterais nettoyer des lignes blanches qu'il comprend.
1. Le listing a son en-tete de colonne en ligne 4 et la premiere data est en A5
2. Je souhaite que l'epuration stoppe des lors que la boucle rencontre 2 lignes blanches successives. (implicitement, ca signifie que c'est la fin du listing).
J'ai tapé un petit code:
--------------------------------------------------------------------
Sub ()
Sheets("JIRA Extract").Select
Dim c As Integer
Dim d As Integer
c = 0
d = 1
Do While Range("A5").Offset(c, 0) <> "" And Range("A5").Offset(d, 0) <> ""
If Range("A5").Offset(c, 0) = "" Then
Range("A5").Offset(c, 0).EntireRow.Delete
c = c + 1
d = d + 1
End If
Loop
End Sub ()
--------------------------------------------------------------------
Pouvez-vous m'aider, je sais qu'il y a quelques pros qui pourront me sortir de ce probleme :)
Merci a tous de m'avoir lu jusque la!
Romdan
A voir également:
- Vba delete
- Hiberfil.sys delete - Guide
- Juste delete me - Guide
- Excel compter cellule couleur sans vba - Guide
- Find vba - Astuces et Solutions
- Incompatibilité de type vba ✓ - Forum VB / VBA
9 réponses
Bonjour,
Sans boucler
Sans boucler
Sub Supprimer_si_vide() Dim Ligne As Long 'on pourrait écrire activesheet au lieu de "Me" Ligne = Me.UsedRange.Rows.Count Me.Range("A:A" & Ligne).SpecialCells(xlCellTypeBlanks).EntireRow.Delete End Sub
Bonjour,
juste une tite correction en passant :
et une ptite remarque aussi (déjà présente en commentaire ds le code de michel_m) : il est préférable d'utiliser ActiveSheet à Me, Me ne fonctionnera que si le code est placé ds la feuille concernée, ne fonctionne pas depuis un module, userform ou ThisWorkbook....
EDIT : autre remarque, il serait préférable d'utiliser Ligne = ActiveSheet.range("A65536").End(xlUp).row (cas de lignes vides entre A1 et A5, les dernieres lignes ne seraient pas traitées....). A noter également qu'une erreur est renvoyée si aucune cellule vide n'est trouvée en colonne A...
juste une tite correction en passant :
Sub Supprimer_si_vide() Dim Ligne As Long 'on pourrait écrire activesheet au lieu de "Me" Ligne = Me.UsedRange.Rows.Count Me.Range("A5:A" & Ligne).SpecialCells(xlCellTypeBlanks).EntireRow.Delete End Sub
et une ptite remarque aussi (déjà présente en commentaire ds le code de michel_m) : il est préférable d'utiliser ActiveSheet à Me, Me ne fonctionnera que si le code est placé ds la feuille concernée, ne fonctionne pas depuis un module, userform ou ThisWorkbook....
EDIT : autre remarque, il serait préférable d'utiliser Ligne = ActiveSheet.range("A65536").End(xlUp).row (cas de lignes vides entre A1 et A5, les dernieres lignes ne seraient pas traitées....). A noter également qu'une erreur est renvoyée si aucune cellule vide n'est trouvée en colonne A...
Merci !
Voila la ligne que j'ai integré grace a votre aide
' Clean JIRA Extract Data
Sheets("JIRA Extract").Activate
ActiveSheet.Range("A5:A500").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Le fait est que maintenant, la macro saute quand il n'y a justement plus de ligne blanche a supprimer.
Il me reste a mettre cette opération conditionnelle. Avez vous une idée?
Voila la ligne que j'ai integré grace a votre aide
' Clean JIRA Extract Data
Sheets("JIRA Extract").Activate
ActiveSheet.Range("A5:A500").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Le fait est que maintenant, la macro saute quand il n'y a justement plus de ligne blanche a supprimer.
Il me reste a mettre cette opération conditionnelle. Avez vous une idée?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Salut,
Sheets("JIRA Extract").Activate
On error resume next
if not iserror(ActiveSheet.Range("A5:A500").SpecialCells(xlCellTypeBlanks)) then
ActiveSheet.Range("A5:A500").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
end if
on error goto 0
ça devrait le faire....
EDIT : un simple On error resume next....On error goto 0 aurait suffit, mais tu parlais de conditionnel....
Sheets("JIRA Extract").Activate
On error resume next
if not iserror(ActiveSheet.Range("A5:A500").SpecialCells(xlCellTypeBlanks)) then
ActiveSheet.Range("A5:A500").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
end if
on error goto 0
ça devrait le faire....
EDIT : un simple On error resume next....On error goto 0 aurait suffit, mais tu parlais de conditionnel....
bin...pinaillons
on error resume next & on error goto 0 est maladroit
on error resume next & on error goto 0 est maladroit
Sub pinailler() With Sheets("JIRA Extract") derlig = Range("A65536").End(xlUp).Row 'il est inutile de supprimer des lignes, passé la dernière ligne occupée, donc le A5:A500 est est à éviter s'il n'y a rien dessous On Error GoTo erreur: 'autant que faire se peut, il faut regrouper les sorties de macro .Range("A5:A" & derlig).SpecialCells(xlCellTypeBlanks).EntireRow.Delete End With erreur: End Sub
Bin, pinaillons...
Sub pinailler() With Sheets("JIRA Extract") derlig = Range("A65536").End(xlUp).Row 'il est inutile de supprimer des lignes, passé la dernière ligne occupée...s'il y a des données sous A 500 on remplace 65536 par 500l On Error GoTo erreur: 'préférable à resume next (à réserver pourles boucles); dans les 2 options le "if" était inutile .Range("A5:A" & derlig).SpecialCells(xlCellTypeBlanks).EntireRow.Delete End With erreur: End Sub
Re,
tt à fait d'accord, c un peu maladroit mais justement c'est bien pour faire le If que je faisait tout ça : "reste a mettre cette opération conditionnelle" => du coup on peut gerer le If iserror directement à ce niveau du code, sans renvoi ni sortie et le on error goto 0 retablit le truc pour continuer à executer du code (inutile ds ce cas là jdois bien dire)....
et pis ct pas vraiment du pinaillage, au contraire, j'avais jamais utillsé cette "façon" pour supprimer les lignes vides (specialcells) du coup jcolle ça ds un module de test => erreur (Me) ; je mets activesheet, teste une fois c nickel, jle refais sur une autre feuille avec plus de données et là erreur encore pour cause j'ai pas de ligne vides....d'où mon intervention...:)
tt à fait d'accord, c un peu maladroit mais justement c'est bien pour faire le If que je faisait tout ça : "reste a mettre cette opération conditionnelle" => du coup on peut gerer le If iserror directement à ce niveau du code, sans renvoi ni sortie et le on error goto 0 retablit le truc pour continuer à executer du code (inutile ds ce cas là jdois bien dire)....
et pis ct pas vraiment du pinaillage, au contraire, j'avais jamais utillsé cette "façon" pour supprimer les lignes vides (specialcells) du coup jcolle ça ds un module de test => erreur (Me) ; je mets activesheet, teste une fois c nickel, jle refais sur une autre feuille avec plus de données et là erreur encore pour cause j'ai pas de ligne vides....d'où mon intervention...:)
Bonjour tout le monde,
Voici la solution que j'ai mis en place grace a vous.
Dans l'import de la feuille JIRA Extract, j'insere une ligne blanche histoire qu'il y en ait au moins une...et ensuite je demande a supprimer toute les lignes entre la ligne 2 et 500 qui sont vides.
De cette facon, la macro tourne parfaitement.
Merci a tous pour votre aide, vive CCM ;)
Romdan
' Clean JIRA Extract Data of blank rows
Sheets("JIRA Extract").Activate
Rows("11:11").Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
ActiveSheet.Range("A2:A500").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Voici la solution que j'ai mis en place grace a vous.
Dans l'import de la feuille JIRA Extract, j'insere une ligne blanche histoire qu'il y en ait au moins une...et ensuite je demande a supprimer toute les lignes entre la ligne 2 et 500 qui sont vides.
De cette facon, la macro tourne parfaitement.
Merci a tous pour votre aide, vive CCM ;)
Romdan
' Clean JIRA Extract Data of blank rows
Sheets("JIRA Extract").Activate
Rows("11:11").Select
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
ActiveSheet.Range("A2:A500").SpecialCells(xlCellTypeBlanks).EntireRow.Delete