Excel VBA - Code Delete Row
Résolu/Fermé
Romdan
Messages postés
9
Date d'inscription
lundi 26 octobre 2009
Statut
Membre
Dernière intervention
9 mars 2010
-
22 janv. 2010 à 11:15
Romdan Messages postés 9 Date d'inscription lundi 26 octobre 2009 Statut Membre Dernière intervention 9 mars 2010 - 1 févr. 2010 à 11:29
Romdan Messages postés 9 Date d'inscription lundi 26 octobre 2009 Statut Membre Dernière intervention 9 mars 2010 - 1 févr. 2010 à 11:29
A voir également:
- Vba delete
- Just delete me - Guide
- Hiberfil.sys delete - Guide
- Vba attendre 1 seconde ✓ - Forum VB / VBA
- Mkdir vba ✓ - Forum VB / VBA
- Vba récupérer valeur cellule ✓ - Forum VB / VBA
9 réponses
teebo
Messages postés
33491
Date d'inscription
jeudi 14 octobre 2004
Statut
Modérateur
Dernière intervention
24 février 2011
1 793
22 janv. 2010 à 11:20
22 janv. 2010 à 11:20
Salut,
Non?
If Range("A5").Offset(c, 0) = "" AND Range("A5").Offset(d, 0) <> "" Then
Non?
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
22 janv. 2010 à 13:01
22 janv. 2010 à 13:01
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
tompols
Messages postés
1273
Date d'inscription
jeudi 29 juillet 2004
Statut
Contributeur
Dernière intervention
25 novembre 2013
435
22 janv. 2010 à 13:18
22 janv. 2010 à 13:18
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...
Romdan
Messages postés
9
Date d'inscription
lundi 26 octobre 2009
Statut
Membre
Dernière intervention
9 mars 2010
22 janv. 2010 à 14:07
22 janv. 2010 à 14:07
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
tompols
Messages postés
1273
Date d'inscription
jeudi 29 juillet 2004
Statut
Contributeur
Dernière intervention
25 novembre 2013
435
22 janv. 2010 à 14:50
22 janv. 2010 à 14:50
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....
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
22 janv. 2010 à 18:00
22 janv. 2010 à 18:00
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
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
22 janv. 2010 à 18:06
22 janv. 2010 à 18:06
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
tompols
Messages postés
1273
Date d'inscription
jeudi 29 juillet 2004
Statut
Contributeur
Dernière intervention
25 novembre 2013
435
23 janv. 2010 à 15:45
23 janv. 2010 à 15:45
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...:)
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
23 janv. 2010 à 10:10
23 janv. 2010 à 10:10
Bonjour,
Excusez le doublon, mais hier-fin d'aprem CCM ne montrait pas que le message était posté
Excusez le doublon, mais hier-fin d'aprem CCM ne montrait pas que le message était posté
Romdan
Messages postés
9
Date d'inscription
lundi 26 octobre 2009
Statut
Membre
Dernière intervention
9 mars 2010
1 févr. 2010 à 11:29
1 févr. 2010 à 11:29
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