VBA test de ligne vide et suppression

Résolu/Fermé
Mrfrize Messages postés 188 Date d'inscription jeudi 20 septembre 2007 Statut Membre Dernière intervention 28 novembre 2023 - 28 nov. 2011 à 12:26
 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.

A voir également:

9 réponses

Le Pingou Messages postés 12035 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 1 avril 2024 1 425
28 nov. 2011 à 16:32
Bonjour,
Au passage remplacer [Empty] par [0].
2
Mrfrize Messages postés 188 Date d'inscription jeudi 20 septembre 2007 Statut Membre Dernière intervention 28 novembre 2023 6
28 nov. 2011 à 16:46
Pourquoi? cela ne change rien a mon probleme.
0
Mike-31 Messages postés 18310 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 29 mars 2024 5 073
28 nov. 2011 à 18:14
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
2
Mrfrize Messages postés 188 Date d'inscription jeudi 20 septembre 2007 Statut Membre Dernière intervention 28 novembre 2023 6
28 nov. 2011 à 17:14
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.
1
Charles-Daniel Messages postés 11 Date d'inscription samedi 26 novembre 2005 Statut Membre Dernière intervention 28 novembre 2011 1
28 nov. 2011 à 17:38
et puis mettre

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

Bonne soirée
1

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Le Pingou Messages postés 12035 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 1 avril 2024 1 425
28 nov. 2011 à 17:06
Bonjour,
Dans ce cas le problème est ailleurs, sur quelle ligne la procédure code est arrêté?
0
Charles-Daniel Messages postés 11 Date d'inscription samedi 26 novembre 2005 Statut Membre Dernière intervention 28 novembre 2011 1
28 nov. 2011 à 17:36
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
0
Mrfrize Messages postés 188 Date d'inscription jeudi 20 septembre 2007 Statut Membre Dernière intervention 28 novembre 2023 6
28 nov. 2011 à 17:41
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.
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 207
Modifié par eriiic le 28/11/2011 à 17:49
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
0
Mrfrize Messages postés 188 Date d'inscription jeudi 20 septembre 2007 Statut Membre Dernière intervention 28 novembre 2023 6
28 nov. 2011 à 17:55
Merci pour l'astuce.
0
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!!
0