Effacer lignes vides

ryadus

XLDnaute Junior
Bonjour à tous;
j'ai une page excel, qui contient des données, mais il y a beaucoup de lignes vides entre les lignes où il y a des infos, y a pas un moyen, une fonction ou une macro qui m'effazcerai ces lignes vides???

Merci
Bonne journée et bonne semaine
 

Hervé

XLDnaute Barbatruc
Re : Effacer lignes vides

Bonjour ryadus, sergio, le forum


une autre syntaxe possible :

PHP:
Sub supprimelignesvides()
  Dim i As Long
  
  For i = ActiveSheet.UsedRange.Rows.Count To 1 Step -1
      If Application.CountA(Rows(i)) = 0 Then Rows(i).Delete
  Next i
  
  End Sub

salut
 

cp4

XLDnaute Barbatruc
Bonjour softy69, ryadus, Hervé, Sergio, le fil,
VB:
Sub Supprimer_les_lignes_vides()
   Dim Ws As Worksheet, dl As Long
   'Boucle sur toutes les feuille de calcul du classeur. Les onglets graphiques ne sont pas pris en compte.
   'ThisWorkbook correspond à l'objet classeur contenant la macro
   For Each Ws In ThisWorkbook.Worksheets
      With Ws
         On Error Resume Next   'ignore erreur au cas où il n'y a pas de cellule vide
        dl = .UsedRange.Rows.Count 'derniere ligne non vide
         .Range("A1:A" & dl).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
      End With
    Next Ws
End Sub
Bon dimanche.
 

patricktoulon

XLDnaute Barbatruc
bonjour
beaucoup savent les bizarreries du résultat de la fonction specialcell quelque fois
1° j’adhère donc a celle de Hervé même si elle est plus lourde

2° mais c'est une erreur d'utiliser ActiveSheet.UsedRange.Rows.Count de cette maniere
CAR!!! le usedrange.rows.count va te donner le nombre de ligne UTILISE!!!
et donc si par exemple le usedrange commence en ligne 20 et termine en ligne 30
le calcul usedrange.rows.count va te donner 10

donc for i= 1 to userange.rows.count a l'envers ou a l'endroit va boucler sur les 10 premières lignes
c'est ballo!!! on passe a coté ;)

DE MÊME QUE :
si le usedrange COMMENCE!!!!! par exemple en ligne 10 et se termine en ligne 30
là encore c'est ballo!! on va scruter la moitié de la plage puisque l'on va arrêter la boucle a 20




il est donc très important de savoir des le départ si l'on veut travailler
1° avec le membre range du sheet (x) ou activesheet
2° avec le usedrange du sheets(x)ou activesheet


j'ai dis plus haut "même si elle est plus lourde"
c'est pas un problème on peut accélérer en collectionnant les ROWS et en supprimant la collection d'un coup !!!

voyons voir ;)

1° comment travailler sur le usedrange à fin de ne pas supprimer les éventuelles lignes précédentes qui n'en font pas partie
VB:
Sub deleteEmptyRowOnUsedrange()
    Dim i As Long, p As Range
    With ActiveSheet.UsedRange
        For i = 1 To .Rows.Count
            If Application.CountA(.Rows(i)) = 0 Then
                If p Is Nothing Then Set p = .Rows(i) Else Set p = Union(p, .Rows(i))
            End If
        Next i
    End With
    p.Delete
End Sub

2°comment travailler sur le range de la même manière
VB:
Sub deleteEmptyRowOnsheet()
    Dim i As Long, p As Range
    With ActiveSheet
        For i = 1 To .UsedRange.Cells(.UsedRange.Cells.Count).Row
            If Application.CountA(.Rows(i)) = 0 Then
                If p Is Nothing Then Set p = .Rows(i) Else Set p = Union(p, .Rows(i))
            End If
        Next i
    End With
    p.Delete
End Sub
j'attire votre attention sur le bloc with des deux ;)
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour à tous :),

Il y a quelques temps, j'avais fait une macro de suppression de lignes conditionnées à une plage de cellules. Si une ligne de cette plage est entièrement vide (la chaine vide est considérée comme vide) alors on supprime la ligne entière de la feuille. La macro était assez rapide.
Les cellules en beige sont les cellules qui contiennent la chaine vide.
 

Pièces jointes

  • mapomme- Suppr Lignes- v1.xlsm
    891.6 KB · Affichages: 66

jannine NOLAM

XLDnaute Nouveau
Bonjour à tous :),

Il y a quelques temps, j'avais fait une macro de suppression de lignes conditionnées à une plage de cellules. Si une ligne de cette plage est entièrement vide (la chaine vide est considérée comme vide) alors on supprime la ligne entière de la feuille. La macro était assez rapide.
Les cellules en beige sont les cellules qui contiennent la chaine vide.
Bonjour @mapomme,

J'aimerais réutiliser votre macro sur mon document Excel mais dès que je la copie/colle, cela ne marche pas et ça me met un message d'erreur.
Pouvez-vous m'expliquer comment on peut réutiliser votre macro s'il vous plaît ?

Bien à vous

Jannine Nolam
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 177
Messages
2 085 972
Membres
103 073
dernier inscrit
MSCHOE16