Suppression des lignes vides

Résolu
Bonjour,

j'ai un soucis avec le code ci-dessous. En fait ce code est sensé supprimer les lignes entières vides dans une base de données mais elle ne le fait pas. Quelqu'un pourrait il m'expliquer pourquoi ? merci d'avance.
Sub supprimeLignesVides()
'variables
Dim O As Worksheet, I As Integer, TV As Variant, J As Integer
Dim TL() As Variant
'valeurs
Set O = Worksheets("Feuil2")
TV = O.Range("A1").CurrentRegion

'boucle for
For I = 1 To UBound(TV, 1) - 1
   If TV(I + 1, 1) <> TV(I, 1) Then
   ReDim Preserve TL(J)
   TL(J) = I + 1
   J = J + 1
   End If
 Next I
 For J = UBound(TL) To LBound(TL) Step -1
 O.Rows(TL(J)).Delete shift:=xlShiftUp
 Next J
End Sub

Ci-joint le fichier Excel contenant la base de données en question (onglet Feuil2)
https://www.cjoint.com/c/GAfn7Hcl3SL

5 réponses

  1. Contributeur
    bonjour

    si cellule dans colonne A est vide, supprimer la ligne
    Sub virerligvide()
    Dim Derlig As Long

    Derlig = Columns("A").Find("*", , , , , xlPrevious).Row

    If Application.CountIf(Range("A1:A" & Derlig), "") > 0 Then
    Range("A1:A" & Derlig).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
    End If
    End Sub

    1. Bonjour,
      en effet, plus simple si simplement controle des cellules colonne A
    2. @f894009Si simple mais supprime malheureusement aussi les entêtes !!!
    3. bonjour

      vraiment court et simple mais malheureusement supprime aussi les entêtes !!!
    4. Contributeur
      @jeandchanelBonjour jeandchanel

      très sympa de merci et Bonjour aux bénévoles...Merci

      Parce que dans une base de données, tu n'as pas d'ent^te en colonne A ?

      pourtant quand on lit ton code
      TV = O.Range("A1").CurrentRegion
      For I = 1 To UBound(TV, 1) - 1

      a propos:
      If TV(I + 1, 1) <> TV(I, 1) Then
      ReDim Preserve TL(J)


      t'es sûr ?
    5. @michel_mmon code ne supprime pas les entêtes mais plutôt et rien que la première ligne du tableau c’était ça mon soucis !
  2. Bonjour,

    jeandchanel

    yg_be - 5 janv. 2017 à 18:42
    combien de colonnes utilises-tu?
    Répondre
    Signaler 6 jeandchanel - 6 janv. 2017 à 07:31
    une colonne!
    Répondre


    Ben alors le controle se fait sur les cellules de la colonne A pas sur une ligne complete de colonne A a L, faut savoir !!!

    Suite:
    une facon de faire pour controle cellules colonneA
    Sub Sup_Ligne()
        Dim Plage As Range
        
        On Error GoTo suite     'sortie si erreur avec defige ecran
        Application.ScreenUpdating = False      'fige ecran
        With Worksheets("feuil2")
            derligF = .Cells.Find("*", , , , xlByRows, xlPrevious).Row      'derniere cellule non vide colonne a
            Set Plage = .Range("A3:A" & derligF)        'mise en memoire plage cellules
            Nb = Plage.Count        'nombre de rang
            NCV = Application.CountIf(Plage, "")        'nombre de cellules "vide"
            'boucle sur cellules "vide"
            If NCV > 0 Then
                lig = 3     'ligne de depart
                For N = 1 To NCV
                    lig = .Columns(1).Find("", .Cells(lig, 1), , xlWhole).Row       'recherche ligne cellule "vide"
                    .Rows(lig).Delete           'suppression ligne
                    '¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
                    lig = lig - 1       '-1 en cas de cellules "vides" consecutives (a supprimer si jamais vrais)
                    '¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤¤
                Next N
            End If
        End With
    suite:
        Application.ScreenUpdating = True       'defige ecran
    End Sub
    1. bonjour et merci pour votre aide, ca marche mais c'est un peu compliqué pour moi, je suis un vrai bleu en VBA !!!
  3. Contributeur
    CurrentRegion va s’arrêter à la première ligne vide, sois-y attentif!
    1. que dois je faire ?
  4. Bonjour a vous deux,

    jeandchanel
    vous ecrivez: "supprimer lignes vides" et vous ne testez que la colonne A (TV(I,1)). Alors cellules A ou toute la ligne vide ????
    1. toute la ligne vide !!!
    2. Contributeur
      combien de colonnes utilises-tu?
  5. Contributeur
    Regarde la ligne 11: il me semble que ce code élimine les doublons.
    Si tu veux supprimer les lignes vides, modifie la ligne 11 pour tester que la ligne I est entièrement vide, et retire le +1 dans la ligne 13.