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

Supprimer une ligne vide seulement si elle est precedee d'une autre ligne vide

  • Initiateur de la discussion Initiateur de la discussion wblondel
  • 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 !

W

wblondel

Guest
Salut a tous!

J'ai actuellement environ 2000 lignes qui contiennent des donnees, et entre chacune d'elles il y a quelques lignes vides. Je voudrais qu'il n'en reste plus qu'une entre chaque. En resume : je voudrais supprimer chaque ligne vide si et seulement si la ligne precedente est vide aussi.

Comment faire cela?

Merci d'avance.
 
Re : Supprimer une ligne vide seulement si elle est precedee d'une autre ligne vide

Bonjour wblondel

Essaye ce code à adapter
Code:
Sub SupLigne()
  Dim Lig As Long, DLig As Long
  ' Avec la feuille
  With Sheets("NomDeLaFeuille")
    ' Récupérer le numéro de la dernière ligne remplie
    DLig = .Range("A" & Rows.Count).End(xlUp).Row
    ' Première est à renseigner
    For Lig = DLig To Première Step -1
      ' Vérifier le nombre de valeur de la ligne, si = 0 = vide
      If Application.CountA(Lig) = 0 And Application.CountA(Lig - 1) = 0 Then
        .Rows(Lig).Delete
      End If
    Next Lig
  End With
End Sub

A+
 
Dernière modification par un modérateur:
Re : Supprimer une ligne vide seulement si elle est precedee d'une autre ligne vide

Est-ce que cela convient à messire ? 😀
Code:
Sub test()
Dim a As Long
For a = 2 To Split(UsedRange.Address, "$")(UBound(Split(UsedRange.Address, "$")))
If Application.CountA(Rows(a)) = 0 And Application.CountA(Rows(a - 1)) = 0 Then
Rows(a).Delete
End If
Next
End Sub


EDIT : grilled by BrunoM45 ><
 
Re : Supprimer une ligne vide seulement si elle est precedee d'une autre ligne vide

Bonjour à tous,

Avec un filtre avancé (élaboré) c'est plus rapide :

Code:
Sub SupprimerLignes()
Dim plage As Range, col%
Application.ScreenUpdating = False
Set plage = ActiveSheet.UsedRange
col = plage.Columns.Count + 1
plage(2, col).FormulaR1C1 = "=COUNTA(RC1:R[1]C[-1])=0"
plage.AdvancedFilter xlFilterInPlace, plage(1, col).Resize(2)
plage.Offset(1).SpecialCells(xlCellTypeVisible).Delete xlUp
plage.AdvancedFilter xlFilterInPlace, ""
plage(2, col) = ""
End Sub
Edit : ajouté Application.ScreenUpdating = False

A+
 
Dernière édition:
Re : Supprimer une ligne vide seulement si elle est precedee d'une autre ligne vide

Merci beaucoup a vous ! Cela fonctionne a merveille 🙂
J'ai utilise le code de job75 car c'est le premier que j'ai vu, en 4 secondes c'etait termine !
 
Re : Supprimer une ligne vide seulement si elle est precedee d'une autre ligne vide

Re,

Ben non, le filtre avancé ce n'est pas la gloire, contrairement à ce que je croyais.

Sur le fichier joint (10000 lignes), j'ai testée la macro de Bruno (un chouia corrigée).

Chez moi (Win7-Excel 2010) elle s'exécute en 0,9 s contre 2,4 s pour ma macro !!

Fichier joint.

A+
 

Pièces jointes

Re : Supprimer une ligne vide seulement si elle est precedee d'une autre ligne vide

Re,

Avec 2000 lignes (400 lignes supprimées) les 2 macros sont à peu près équivalentes (0,15 s).

Fichier (2).

A+
 

Pièces jointes

Re : Supprimer une ligne vide seulement si elle est precedee d'une autre ligne vide

Bonjour le fil, le forum,

En entrant la formule sur toute la colonne et un tri :

Code:
Sub SupprimerLignes()
Dim plage As Range, col%
Application.ScreenUpdating = False
Set plage = ActiveSheet.UsedRange
col = plage.Columns.Count + 1
plage.Columns(col).FormulaR1C1 = "=COUNTA(RC1:R[1]C[-1])=0"
plage.Columns(col) = plage.Columns(col).Value 'uniquement les valeurs
plage.Resize(, col).Sort plage(1, col), xlAscending 'tri
plage.Columns(col).ClearContents
End Sub
Sur 10000 lignes on descend à 0,4 seconde.

Fichier (3).

A+
 

Pièces jointes

Dernière édition:
Re : Supprimer une ligne vide seulement si elle est precedee d'une autre ligne vide

De toute maniere, c'est juste pour l'excuter une seule fois, donc que ca dure 0,5 sec ou 4 sec ca ne m'importe peu 😛 ! En revanche vos differents codes me serviront pour apprendre !

Merci encore 😉
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

E
Réponses
4
Affichages
2 K
elisa05000
E
A
Réponses
20
Affichages
2 K
Aurélie13008
A
F
Réponses
7
Affichages
2 K
Fradet1990
F
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…