VBA test de ligne vide et suppression

Résolu
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.

9 réponses

  1. Bonjour,
    Au passage remplacer [Empty] par [0].
    2
    1. Pourquoi? cela ne change rien a mon probleme.
      0
  2. 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
    1. 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
      1. et puis mettre

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

        Bonne soirée
        1
        1. Bonjour,
          Dans ce cas le problème est ailleurs, sur quelle ligne la procédure code est arrêté?
          0
          1. 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
            1. 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
              1. Contributeur
                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
                1. Merci pour l'astuce.
                  0
              2. 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