Suppression des lignes vides [Résolu/Fermé]

Messages postés
140
Date d'inscription
vendredi 10 juin 2016
Statut
Membre
Dernière intervention
31 mai 2017
-
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)
http://www.cjoint.com/c/GAfn7Hcl3SL


Afficher la suite 

5 réponses

Messages postés
8717
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
17 octobre 2019
436
0
Merci
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.
Messages postés
14794
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
17 octobre 2019
1177
0
Merci
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 ????
jeandchanel
Messages postés
140
Date d'inscription
vendredi 10 juin 2016
Statut
Membre
Dernière intervention
31 mai 2017
-
toute la ligne vide !!!
yg_be
Messages postés
8717
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
17 octobre 2019
436 -
combien de colonnes utilises-tu?
jeandchanel
Messages postés
140
Date d'inscription
vendredi 10 juin 2016
Statut
Membre
Dernière intervention
31 mai 2017
> yg_be
Messages postés
8717
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
17 octobre 2019
-
une colonne!
Messages postés
8717
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
17 octobre 2019
436
0
Merci
CurrentRegion va s’arrêter à la première ligne vide, sois-y attentif!
jeandchanel
Messages postés
140
Date d'inscription
vendredi 10 juin 2016
Statut
Membre
Dernière intervention
31 mai 2017
-
que dois je faire ?
Messages postés
14794
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
17 octobre 2019
1177
0
Merci
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
jeandchanel
Messages postés
140
Date d'inscription
vendredi 10 juin 2016
Statut
Membre
Dernière intervention
31 mai 2017
-
bonjour et merci pour votre aide, ca marche mais c'est un peu compliqué pour moi, je suis un vrai bleu en VBA !!!
Messages postés
15934
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 octobre 2019
2811
0
Merci
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

jeandchanel
Messages postés
140
Date d'inscription
vendredi 10 juin 2016
Statut
Membre
Dernière intervention
31 mai 2017
-
bonjour

vraiment court et simple mais malheureusement supprime aussi les entêtes !!!
michel_m
Messages postés
15934
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 octobre 2019
2811 > jeandchanel
Messages postés
140
Date d'inscription
vendredi 10 juin 2016
Statut
Membre
Dernière intervention
31 mai 2017
-
Bonjour 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 ?
jeandchanel
Messages postés
140
Date d'inscription
vendredi 10 juin 2016
Statut
Membre
Dernière intervention
31 mai 2017
> michel_m
Messages postés
15934
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 octobre 2019
-
mon code ne supprime pas les entêtes mais plutôt et rien que la première ligne du tableau c’était ça mon soucis !
f894009
Messages postés
14794
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
17 octobre 2019
1177 > jeandchanel
Messages postés
140
Date d'inscription
vendredi 10 juin 2016
Statut
Membre
Dernière intervention
31 mai 2017
-
Bonjour,
Vous connaissez le VBA Excel, car il suffit de remplacer A1 par A3, simple non?
jeandchanel
Messages postés
140
Date d'inscription
vendredi 10 juin 2016
Statut
Membre
Dernière intervention
31 mai 2017
> f894009
Messages postés
14794
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
17 octobre 2019
-
Oui, très simple, merci beaucoup pour votre aide si précieuse. A bientôt !