Menu

VBA test de ligne vide et suppression [Résolu/Fermé]

Messages postés
185
Date d'inscription
jeudi 20 septembre 2007
Statut
Membre
Dernière intervention
17 août 2018
- - Dernière réponse :  camanagro - 28 févr. 2013 à 21:54
Bonjour,

J'ai pas mal parcouru le forum et je n'ai pas trouver la réponse a ma question.

Je souhaite supprimer les lignes qui sont entierement vide d'un tableau. Ma macro marche mais affiche ce message d'erreur et je ne comprend pas pourquoi?

Run-time error '1004':
Application-defined or object-defined error


Voici la dite macro:
sub supligne
Dim lastline,firstline as integer

'trouve la derniere ligne du tableau
lastline = ActiveSheet.UsedRange.Rows.Count


'trouve la premiere ligne du tableau de donnée
For a = 1 To lastline Step 1
If Cells(a, 1).Value = "Priority" Then
firstline = a + 1
End If
Next a

'Supprime les lignes vide

For r = lastline To fistline Step -1
If Application.CountA(Rows(r)) = Empty Then Rows(r).EntireRow.Delete

Next r
end sub

J'ai essayé de changer le empty par "" mais cela marche encore moins bien.

Quelqu'un peux me dire ou je ne suis planté?

Merci beaucoup

PS: désoler si je ne mets pas tout les accents mais je travail acctuelement avec un clavier qwerty.

Afficher la suite 

9 réponses

Meilleure réponse
Messages postés
9468
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
14 décembre 2018
961
2
Merci
Bonjour,
Au passage remplacer [Empty] par [0].

Dire « Merci » 2

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 40988 internautes nous ont dit merci ce mois-ci

Mrfrize
Messages postés
185
Date d'inscription
jeudi 20 septembre 2007
Statut
Membre
Dernière intervention
17 août 2018
5 -
Pourquoi? cela ne change rien a mon probleme.
Messages postés
185
Date d'inscription
jeudi 20 septembre 2007
Statut
Membre
Dernière intervention
17 août 2018
5
1
Merci
Sur la ligne :
If Application.CountA(Rows(r)) = Empty Then Rows(r).EntireRow.Delete

Ce qui est souligné est ce qui est surligné en mode débugage.
Messages postés
16900
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
4 juin 2019
3477
1
Merci
Salut le fil,

j'arrive après la bataille mais bon

Option Explicit

Sub supligne()
Dim lastline, firstline As Integer
Dim a, r As Long
'trouve la derniere ligne du tableau
lastline = ActiveSheet.UsedRange.Rows.Count
'trouve la premiere ligne du tableau de donnée
For a = 1 To lastline Step 1
If Cells(a, 1).Value = "Priority" Then
firstline = a + 1
End If
Next a
For r = ActiveSheet.UsedRange.Rows.Count To 1 Step -1
If Application.CountA(Rows(r)) = 0 Then Rows(r).Delete
Next r
End Sub

ou plus simplement

Sub Suplignvides()
Dim r As Long
For r = ActiveSheet.UsedRange.Rows.Count To 1 Step -1
If Application.CountA(Rows(r)) = 0 Then Rows(r).Delete
Next r
End Sub
Messages postés
9468
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
14 décembre 2018
961
0
Merci
Bonjour,
Dans ce cas le problème est ailleurs, sur quelle ligne la procédure code est arrêté?
Messages postés
11
Date d'inscription
samedi 26 novembre 2005
Statut
Membre
Dernière intervention
28 novembre 2011
0
Merci
Mauvaise définition de la variable. Au lieu de
For r = lastline To fistline Step -1

il faut
For r = lastline To firstline Step -1

et ca tourne.
Salutations
Messages postés
11
Date d'inscription
samedi 26 novembre 2005
Statut
Membre
Dernière intervention
28 novembre 2011
0
Merci
et puis mettre

If Application.CountA(Rows(r)) = Empty Then Rows(r).EntireRow.Delete

Bonne soirée
Messages postés
185
Date d'inscription
jeudi 20 septembre 2007
Statut
Membre
Dernière intervention
17 août 2018
5
0
Merci
Merci beaucoup,

Et dire que j'ai cherché pendant plusieurs heure pourquoi ca ne marchait pas. Je fairais plus attention les foix prochaines, c'est vraiment bete de perdre autant de temps pour ca.

Merci encore.
Messages postés
22748
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
11 juin 2019
5491
0
Merci
Bonjour,

Pour éviter les erreurs de nom de variable aller dans 'options / editeur' (de VBE) et cocher 'Déclaration des variables obligatoire'
Tous tes modules commenceront par Option Explicit et tu ne pourras pas saisir un nom non déclaré.

eric
Mrfrize
Messages postés
185
Date d'inscription
jeudi 20 septembre 2007
Statut
Membre
Dernière intervention
17 août 2018
5 -
Merci pour l'astuce.
0
Merci
Bonjour,

Je voudrais également supprimer les lignes vides de mon tableau et j'ai donc recopier ce qui a été dit, exactement..Sauf que bien que la macro fonctionne, j'ai également ce message d'erreur..(j'ai bien remplace fist par first, et meme en utilisant la dernière macro Suplignvides(), j'ai ce message..

Question subsidiaire, dans l'idéal j'aimerai supprimer toutes les lignes vides de mon tableur sauf celles suivies d'une ligne dont la première cellule est non vide .J'ai essayé avec des boucles if "bidouillage" qui ne fonctionnent pas du tout donc je suppose qu'il y a une meilleure manière du même genre que celle mentionnée ci dessus.

Je vous remercie pour votre aide!!