Signaler

Suppression des lignes vides [Résolu]

Posez votre question jeandchanel 140Messages postés vendredi 10 juin 2016Date d'inscription 31 mai 2017 Dernière intervention - Dernière réponse le 6 janv. 2017 à 13:57 par jeandchanel
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


Utile
+0
plus moins
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.
Donnez votre avis
Utile
+0
plus moins
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 140Messages postés vendredi 10 juin 2016Date d'inscription 31 mai 2017 Dernière intervention - 5 janv. 2017 à 17:20
toute la ligne vide !!!
Répondre
yg_be 3569Messages postés lundi 9 juin 2008Date d'inscription ContributeurStatut 17 octobre 2017 Dernière intervention - 5 janv. 2017 à 18:42
combien de colonnes utilises-tu?
Répondre
jeandchanel 140Messages postés vendredi 10 juin 2016Date d'inscription 31 mai 2017 Dernière intervention - 6 janv. 2017 à 07:31
une colonne!
Répondre
Donnez votre avis
Utile
+0
plus moins
CurrentRegion va s’arrêter à la première ligne vide, sois-y attentif!
jeandchanel 140Messages postés vendredi 10 juin 2016Date d'inscription 31 mai 2017 Dernière intervention - 6 janv. 2017 à 07:31
que dois je faire ?
Répondre
Donnez votre avis
Utile
+0
plus moins
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 140Messages postés vendredi 10 juin 2016Date d'inscription 31 mai 2017 Dernière intervention - 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 !!!
Répondre
Donnez votre avis
Utile
+0
plus moins
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 140Messages postés vendredi 10 juin 2016Date d'inscription 31 mai 2017 Dernière intervention - 6 janv. 2017 à 12:19
bonjour

vraiment court et simple mais malheureusement supprime aussi les entêtes !!!
Répondre
michel_m 14877Messages postés lundi 12 septembre 2005Date d'inscription ContributeurStatut 17 octobre 2017 Dernière intervention - 6 janv. 2017 à 12:29
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 ?
Répondre
jeandchanel 140Messages postés vendredi 10 juin 2016Date d'inscription 31 mai 2017 Dernière intervention - 6 janv. 2017 à 12:39
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 !
Répondre
f894009 12293Messages postés dimanche 25 novembre 2007Date d'inscription 17 octobre 2017 Dernière intervention - 6 janv. 2017 à 13:42
Bonjour,
Vous connaissez le VBA Excel, car il suffit de remplacer A1 par A3, simple non?
Répondre
jeandchanel 140Messages postés vendredi 10 juin 2016Date d'inscription 31 mai 2017 Dernière intervention - 6 janv. 2017 à 13:57
Oui, très simple, merci beaucoup pour votre aide si précieuse. A bientôt !
Répondre
Donnez votre avis

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !