Suppression des lignes vides

Résolu/Fermé
jeandchanel
Messages postés
135
Date d'inscription
vendredi 10 juin 2016
Statut
Membre
Dernière intervention
31 mai 2017
- Modifié par jeandchanel le 5/01/2017 à 15:01
jeandchanel
Messages postés
135
Date d'inscription
vendredi 10 juin 2016
Statut
Membre
Dernière intervention
31 mai 2017
- 6 janv. 2017 à 13:57
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

yg_be
Messages postés
19341
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
28 mai 2022
1 116
5 janv. 2017 à 15:11
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.
0
f894009
Messages postés
16508
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
28 mai 2022
1 635
Modifié par f894009 le 5/01/2017 à 15:51
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 ????
0
jeandchanel
Messages postés
135
Date d'inscription
vendredi 10 juin 2016
Statut
Membre
Dernière intervention
31 mai 2017

5 janv. 2017 à 17:20
toute la ligne vide !!!
0
yg_be
Messages postés
19341
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
28 mai 2022
1 116
5 janv. 2017 à 18:42
combien de colonnes utilises-tu?
0
jeandchanel
Messages postés
135
Date d'inscription
vendredi 10 juin 2016
Statut
Membre
Dernière intervention
31 mai 2017
> yg_be
Messages postés
19341
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
28 mai 2022

6 janv. 2017 à 07:31
une colonne!
0
yg_be
Messages postés
19341
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
28 mai 2022
1 116
5 janv. 2017 à 20:26
CurrentRegion va s’arrêter à la première ligne vide, sois-y attentif!
0
jeandchanel
Messages postés
135
Date d'inscription
vendredi 10 juin 2016
Statut
Membre
Dernière intervention
31 mai 2017

6 janv. 2017 à 07:31
que dois je faire ?
0
f894009
Messages postés
16508
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
28 mai 2022
1 635
Modifié par f894009 le 6/01/2017 à 08:32
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
0
jeandchanel
Messages postés
135
Date d'inscription
vendredi 10 juin 2016
Statut
Membre
Dernière intervention
31 mai 2017

6 janv. 2017 à 12:22
bonjour et merci pour votre aide, ca marche mais c'est un peu compliqué pour moi, je suis un vrai bleu en VBA !!!
0

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

Posez votre question
michel_m
Messages postés
16570
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
26 mai 2022
3 280
6 janv. 2017 à 09:40
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

0
f894009
Messages postés
16508
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
28 mai 2022
1 635
6 janv. 2017 à 10:11
Bonjour,
en effet, plus simple si simplement controle des cellules colonne A
0
jeandchanel
Messages postés
135
Date d'inscription
vendredi 10 juin 2016
Statut
Membre
Dernière intervention
31 mai 2017
> f894009
Messages postés
16508
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
28 mai 2022

6 janv. 2017 à 12:17
Si simple mais supprime malheureusement aussi les entêtes !!!
0
jeandchanel
Messages postés
135
Date d'inscription
vendredi 10 juin 2016
Statut
Membre
Dernière intervention
31 mai 2017

6 janv. 2017 à 12:19
bonjour

vraiment court et simple mais malheureusement supprime aussi les entêtes !!!
0
michel_m
Messages postés
16570
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
26 mai 2022
3 280 > jeandchanel
Messages postés
135
Date d'inscription
vendredi 10 juin 2016
Statut
Membre
Dernière intervention
31 mai 2017

Modifié par michel_m le 6/01/2017 à 12:31
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 ?
0
jeandchanel
Messages postés
135
Date d'inscription
vendredi 10 juin 2016
Statut
Membre
Dernière intervention
31 mai 2017
> michel_m
Messages postés
16570
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
26 mai 2022

Modifié par jeandchanel le 6/01/2017 à 12:40
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 !
0