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

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


5 réponses

Messages postés
13983
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
21 janvier 2021
785
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
15524
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
21 janvier 2021
1 437
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 ????
Messages postés
135
Date d'inscription
vendredi 10 juin 2016
Statut
Membre
Dernière intervention
31 mai 2017

toute la ligne vide !!!
Messages postés
13983
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
21 janvier 2021
785
combien de colonnes utilises-tu?
Messages postés
135
Date d'inscription
vendredi 10 juin 2016
Statut
Membre
Dernière intervention
31 mai 2017
>
Messages postés
13983
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
21 janvier 2021

une colonne!
Messages postés
13983
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
21 janvier 2021
785
CurrentRegion va s’arrêter à la première ligne vide, sois-y attentif!
Messages postés
135
Date d'inscription
vendredi 10 juin 2016
Statut
Membre
Dernière intervention
31 mai 2017

que dois je faire ?
Messages postés
15524
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
21 janvier 2021
1 437
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
Messages postés
135
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
16367
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
19 janvier 2021
3 112
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

Messages postés
135
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 !!!
Messages postés
16367
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
19 janvier 2021
3 112 >
Messages postés
135
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 ?
Messages postés
135
Date d'inscription
vendredi 10 juin 2016
Statut
Membre
Dernière intervention
31 mai 2017
>
Messages postés
16367
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
19 janvier 2021

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 !
Messages postés
15524
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
21 janvier 2021
1 437 >
Messages postés
135
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?
Messages postés
135
Date d'inscription
vendredi 10 juin 2016
Statut
Membre
Dernière intervention
31 mai 2017
>
Messages postés
15524
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
21 janvier 2021

Oui, très simple, merci beaucoup pour votre aide si précieuse. A bientôt !