Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Suppression lignes vides

  • Initiateur de la discussion Initiateur de la discussion dj dim
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

dj dim

XLDnaute Occasionnel
Bonjour à tous,

Le soleil tape fort et je n'arrive plus à réfléchir !

Voici mon problème :
J'ai un fichier avec des colonnes de A à Q complétées avec différents éléments.
Certaines lignes de ma colonne E sont vides.

Je souhaite que ces lignes vides soient supprimées par une macro.

Cordialement
 
Re : Suppression lignes vides

Salut Dj dim,

Pour ce que tu souhaites,
1) tu fais une boucle de la fin de ton tableau vers le début (Step -1)
2) Vérifier pour chaque ligne si la cellule de la colonne E est vide
3) Si oui, supprimer la ligne entière

A+
 
Re : Suppression lignes vides

Bonjour,


Code:
Sub DeleteLines()
    With ActiveSheet.Range("A1:Q1")
        Intersect(.CurrentRegion, .Columns(5).SpecialCells(xlCellTypeBlanks).EntireRow).Delete xlShiftUp
    End With
End Sub

[EDIT] Hello Bruno

A+
 
Re : Suppression lignes vides

Bonjour dj, Re Bruno

une autre approche sans boucle :
Code:
On Error Resume Next
Range("E1", Range("E65536").End(xlUp)).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
On Error GoTo 0
bonne journée
@+

Edition : bonjour Hasco🙂, Aarf effectivement, mon code risque fort de zapper les dernières lignes vides de la colonne E, fonction de la dernière cellule....
 
Dernière édition:
Re : Suppression lignes vides

BIJOUR LE FIL, BONJOUR LE FORUM
ESSAYE CE SUB
Sub sup_ligne()
'application manuelle
Application.Calculation = xlCalculationManual
'desactivation du rafraichissement de l'écran
Application.ScreenUpdating = False
Dim i%
With ActiveSheet
For i = Cells(Cells.Rows.Count, "E").End(xlUp).Row To 1 Step -1
If Cells(i, 5).Value = "0" Or Cells(i, 5).Value = "" Then Rows(i).Delete
Next
End With
'application autommatique
Application.Calculation = xlCalculationAutomatic
'activation du rafraichissement
Application.ScreenUpdating = True
End Sub
 
Re : Suppression lignes vides

Hello à tous et merci pour votre aide !

Je m'excuse par avance pour l'écriture du code mais je débute en vba ...

J'ai cumulé plusieurs fonctions. Cela fonctionne mais seulement une fois ensuite si je clik à nouveau j'obtiens une erreur 1004 : Pas de cellule ...

Le but ultime de cette macro est de :
- Supprimer les lignes vides de la Feuille A
- Trier les feuilles A et B
- Récuperer les données de 2 feuilles A et B.


Voici le massacre :

Code:
Sub Macro_Copy()

Application.ScreenUpdating = False

With Sheets("SERVICEETAMPLITUDE").Range("A2:P300")
Intersect(.CurrentRegion, .Columns(5).SpecialCells(xlCellTypeBlanks).EntireRow).Delete xlShiftUp
End With

'Tri de l'onglet SERVICEETAMPLITUDE
Worksheets("SERVICEETAMPLITUDE").Select 'selection de la feuille ou tu veux selectionner les données a copier
Range("A2:P300").Select 'plage où sont tes noms et adresses
Selection.Sort Key1:=Range("H2"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom 'A5 est la cellule où il y a le premier nom
Range("A2").Select


'Tri de l'onglet garantie
Worksheets("garantie").Select 'selection de la feuille ou tu veux selectionner les données a copier
Range("A2:F300").Select 'plage où sont tes noms et adresses
Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom 'A6 est la cellule où il y a le premier nom
Range("A2").Select


'Copie des données de l'onglet SERVICEETAMPLITUDE
Worksheets("SERVICEETAMPLITUDE").Select 'selection de la feuille ou tu veux selectionner les données a copier
Range("A2:P300").Select 'plage de cellule a copier ici c'est de A2 à P300
Selection.Copy 'on copie
With Sheets("Synthèse").Range("A4")
.PasteSpecial Paste:=xlValues
End With


'Copie des données de l'onglet garantie
Worksheets("garantie").Select 'selection de la feuille ou tu veux selectionner les données a copier
Range("G2:G300").Select 'plage de cellule a copier ici c'est de G2 à G300
Selection.Copy 'on copie
With Sheets("Synthèse").Range("Q4")
.PasteSpecial Paste:=xlValues
End With

Application.ScreenUpdating = True

End Sub
 
Re : Suppression lignes vides

Re,

La demande n'est plus exactement la même que dans ton post initial où tu demandais une suppression des lignes du tableau pour lequel il y avait des cellules vides en colonne E.

Le message d'erreur est normal, quand il n'y a pas de cellules vides dans la colonne E de la plage.

Correction pour une plage clairement délimitée:
Code:
    With Sheets("SERVICEETAMPLITUDE")
        On Error Resume Next
        Intersect(.Range("A2:P300"), .Columns(5).SpecialCells(xlCellTypeBlanks).EntireRow).Delete xlShiftUp
        On Error GoTo 0
    End With

Supprimera dans le tableau A2😛300 les lignes pour lesquelles la colonne E (5ème colonne) est vide.

Ta macro complète et réécrite, bien que nous ne soyons pas dans un marché à la macro!
VB:
Sub Macro_Copy()
    With Sheets("SERVICEETAMPLITUDE").Range("A2:P300")
        On Error Resume Next
        Intersect(.CurrentRegion, .Columns(5).SpecialCells(xlCellTypeBlanks).EntireRow).Delete xlShiftUp
        On Error GoTo 0
        'Avec ce qui reste des lignes
        With .CurrentRegion
            'Tri des lignes restantes
            .Sort Key1:=Range("H2"), Order1:=xlAscending, Header:=xlGuess, _
                  OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
            'Copie des valeurs dans la feuille Synthèse
            Sheets("Synthèse").Range("A4").Resize(.Rows.Count, .Columns.Count).Value = .Value
        End With
    End With
    'Tri de l'onglet garantie
    With Worksheets("garantie")
        'Tri de la plage A2:F300
        .Range("A2:F300").Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlGuess, _
                               OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
        'Copie des valeurs  de G2:G300 dans la feuille synthèse à partir de Q4
        With .Range("G2:G300")
            Sheets("Synthèse").Range("Q4").Resize(.Rows.Count, .Columns.Count).Value = .Value
        End With
    End With
End Sub


A+
 
Dernière modification par un modérateur:
Re : Suppression lignes vides

Merci beaucoup Hasco et les autres !

J'ai malheureusement une erreur avec ce dernier code :

" Référence de tri non valide. Vérifiez qu'elle se trouve bien parmi les données à trier et que la zone Trier n'est pas identique ou vide. "

J'avoue que je suis totalement perdu de chez perdu!
 
Re : Suppression lignes vides

Re,

J'avoue que je suis totalement perdu de chez perdu!

Nous aussi sans fichier exemple anonymisé, il y a des choses qu'on ne peut deviner. N'aurais-tu pas un tableau qui commencerait en ligne >2?

Utilise l'aide F1 sur Sort.

A+
 
Re : Suppression lignes vides

Je tiens tout d'abord à vous remercier pour votre aide et spécialement Hasco.

A force d'essais, j'ai enfin pu réaliser un "code" certes dégeulasse mais qui fonctionne comme je le souhaite.

Je vous en fait donc profiter si ca peux aider quelqu'un :

Code:
Sub Macro_Copy()
    With Sheets("SERVICEETAMPLITUDE").Range("A2:P300")
        On Error Resume Next
        Intersect(.CurrentRegion, .Columns(5).SpecialCells(xlCellTypeBlanks).EntireRow).Delete xlShiftUp
        On Error GoTo 0
        
        'Tri des lignes restantes
       With Worksheets("SERVICEETAMPLITUDE").Select 'selection de la feuille ou tu veux selectionner les données a copier
Range("A2:P300").Select 'plage par exemple où sont tes noms et adresses
Selection.Sort Key1:=Range("H2"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom 'A5 est la cellule où il y a le premier nom
Range("H2").Select
    
            'Copie des valeurs dans la feuille Synthèse
            Worksheets("SERVICEETAMPLITUDE").Select 'selection de la feuille ou tu veux selectionner les données a copier
Range("A2:P300").Select 'plage de cellule a copier ici c'est de A5 à C200
Selection.Copy 'on copie
           With Sheets("Synthèse").Range("A4")
            .PasteSpecial Paste:=xlValues
        End With
    
    End With
    
    End With
    

        'Tri de la plage A2:F300
        With Worksheets("garantie").Select 'selection de la feuille ou tu veux selectionner les données a copier
Range("A2:F300").Select 'plage par exemple où sont tes noms et adresses
Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom 'A5 est la cellule où il y a le premier nom
Range("A2").Select
        

        'Copie des valeurs  de G2:G300 dans la feuille synthèse à partir de Q4
      Worksheets("garantie").Select 'selection de la feuille ou tu veux selectionner les données a copier
Range("F2:F300").Select 'plage de cellule a copier ici c'est de F2 à F300
Selection.Copy 'on copie
           With Sheets("Synthèse").Range("Q4")
            .PasteSpecial Paste:=xlValues
        End With
    
    End With

End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
6
Affichages
296
Réponses
3
Affichages
403
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…