XL 2021 supprimer les lignes vides de la ligne 8 à la dernière ligne vide

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Bonjour à toutes et à tous,

Voilà une question que je ne m'étais pas posée jusqu'à présent lol

"Columns(1).SpecialCells(xlCellTypeBlanks).EntireRow.Delete"" supprime toutes les lignes colonne "A" vide.

Mais est-il possible de supprimer les lignes colonne "A" vide à partir d'une ligne ?
Par exemple, dans le petit fichier test joint, je voudrais supprimer les lignes colonne "A" vide à partir de la ligne 8 jusqu'à la dernière ligne.

Pas certain que ce soit possible.
Jusqu'à maintenant, je n'ai pas trouvé...
Merci pour vos retours...
:)
 

Pièces jointes

  • lignes vides effacer.xlsm
    9.6 KB · Affichages: 4
Dernière édition:

Lolote83

XLDnaute Barbatruc
Re bonjour,
Je me suis aperçu que si la macro était lancée une première fois, cela fonctionnait. Du coup, plus de ligne vide entre celle du début et celle de fin.
Cependant, si on relance la macro, cela bugg
En rajoutant un simple "On Error Resume Next", plus de souci

VB:
Sub SupprimeLigne()
    On Error Resume Next
    xPreLig = 9                                 'Première ligne
    xDerlig = Range("A65000").End(xlUp).Row     'Dernière ligne
    Range("A" & xPreLig & ":A" & xDerlig).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End Sub
@+ Lolote83
 

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Re bonjour,
Je me suis aperçu que si la macro était lancée une première fois, cela fonctionnait. Du coup, plus de ligne vide entre celle du début et celle de fin.
Cependant, si on relance la macro, cela bugg
En rajoutant un simple "On Error Resume Next", plus de souci

VB:
Sub SupprimeLigne()
    On Error Resume Next
    xPreLig = 9                                 'Première ligne
    xDerlig = Range("A65000").End(xlUp).Row     'Dernière ligne
    Range("A" & xPreLig & ":A" & xDerlig).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End Sub
@+ Lolote83
Merci Lolote :)
J'avais vu aussi et ajouté le On Error Resume Next
:)
 

Valtrase

XLDnaute Occasionnel
Salut le fil,
Je pense qu'il faut éviter de prendre l'habitude de balancer des Error Resume Next partout, surtout quand on peux l'éviter.
Ici, il suffit de tester si la colonne contient des vides
VB:
Sub SupprimeLigne()
    Dim xPreLig As Long
    xPreLig = 9                                 'Première ligne

    Dim xDerlig As Long
    xDerlig = Range("A65000").End(xlUp).Row     'Dernière ligne
    
    Dim TestingRange As Range
    Set TestingRange = Range("A" & xPreLig & ":A" & xDerlig)
    If WorksheetFunction.CountBlank(TestingRange) > 0 Then
        TestingRange.SpecialCells(xlCellTypeBlanks).EntireRow.Delete
    End If
End Sub
 

Lolote83

XLDnaute Barbatruc
Re bonjour,
Si comme tu le dis, en remplaçant "A" par "B", cela devrait être OK. Par contre, si cela supprime bien les lignes vides de la colonne B (mais sans tenir compte - pas testé) que la colonne A soit vide ou non
Dis nous
@+ Lolote83
 

Lolote83

XLDnaute Barbatruc
Re,
J'ai fait le test chez moi et cela supprime bien les lignes de la colonne B
VB:
Sub SupprimeLigneB()
    On Error Resume Next
    xPreLig = 9                                 'Première ligne
    xDerlig = Range("B65000").End(xlUp).Row     'Dernière ligne
    Range("B" & xPreLig & ":B" & xDerlig).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End Sub
Mais si une ligne de la colonne A n'est pas vide et que B est vide, cela supprime bien la ligne en question
@+ Lolote83
 

Lolote83

XLDnaute Barbatruc
Re,
Par contre, si tu souhaites conservé les données de la colonne A et celle de la colonne B
Code:
Sub SupprimeLigneVide()
    Call RemonteLesDonnées("A")
End Sub

Sub RemonteLesDonnées(xCol)
    Application.ScreenUpdating = False
    xPreLig = 9                                     'Première ligne
    xDerLig = Range(xCol & "65000").End(xlUp).Row   'Dernière ligne
    For F = xDerLig To xPreLig Step -1
        If Cells(F, xCol) = Empty Then
            Cells(F, xCol).Delete Shift:=xlUp
        End If
    Next F
    Application.ScreenUpdating = True
End Sub

Lancer une première fois avec "A" puis "B" dans le code Call RemonteLesDonnées

En fait, on ne sais pas trop si tu souhaites ou pas conserver les données des colonnes précédemment testées
@+ Lolote83
 

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Merci Lolote83 :)

L'objet de mon #post1 (mon besoin) est bien de supprimer les lignes colonne "A" vide à partir de la ligne 8 jusqu'à la dernière ligne = c'est bon, ton code fonctionne bien.

L'objet de mon #post9 (test) est de supprimer les lignes colonne "B" vide à partir de la ligne 8 jusqu'à la dernière ligne ? sans tenir compte de la colonne A, c'est à dire si en A, c'est vide et pas en B, on garde la ligne
:)
 

Discussions similaires

Réponses
6
Affichages
132

Statistiques des forums

Discussions
312 207
Messages
2 086 238
Membres
103 162
dernier inscrit
fcfg