Autres Lignes vides et remonter les données colonne et plage

VIARD

XLDnaute Impliqué
Bonjours à toutes et tous

En partage je vous présente une manip de suppression des lignes vides avec remonté des données.
Feuil1: le premier test sur la colonne "A" avec 70 lignes dont 23 lignes vides, temps d'exécution 0,016 seconde
mais avec 11000 lignes dont 1/3 de vides ~ 4000, durée --> 36 secondes
Feuil2: test sur une plage en respectant le format.
Feuil3: les modules

A+ Jean-Paul
 

Pièces jointes

  • Manip_Sup_Lignes_Vides_Remonte_Données.xlsm
    87.9 KB · Affichages: 30

Rouge

XLDnaute Impliqué
Bonjour,

En faisant un filtre sur les lignes vides de la colonne A, ne reste plus qu'à supprimer ces lignes.

Exemple sur la feuille 2 de votre fichier
VB:
Sub Supprimer_Lignes_Vides()
    Dim DerLig As Long
    Dim f1 As Worksheet
    Application.ScreenUpdating = False
    Set f1 = Sheets("Feuil2")
    DerLig = f1.Range("A" & Rows.Count).End(xlUp).Row 'par rapport à la colonne A
    f1.Range("A10:G" & DerLig).AutoFilter Field:=1, Criteria1:="="
    f1.Rows("11:" & DerLig).SpecialCells(xlCellTypeVisible).Delete
    f1.ShowAllData
    Set f1 = Nothing
End Sub

Cdlt
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour à tous,

Une méthode que j'ai utilisée pour une autre question (intéressant si beaucoup de lignes dispersées à supprimer).
Dans le fichier joint, suppression des lignes si la cellule de la colonne A est vide ou contient la chaine vide.
100 000 lignes - 35 000 lignes à supprimer =>env. 1 sec. sur ma bécane.

edit : v2a (juste corrigé formules cellules colonne J - ne change rien au code vba)
 

Pièces jointes

  • suppr cellules vides yc chaine vide- v2.xlsm
    21.2 KB · Affichages: 19
  • suppr cellules vides yc chaine vide- v2a.xlsm
    21.3 KB · Affichages: 10
Dernière édition:

VIARD

XLDnaute Impliqué
Bonjour Rouge, mapomme et à tous

Mapomme --> pas mal du tout, je suis impressionné, sur la mienne 1,63 seconde
maintenant il me reste à bien comprendre, je n'ai pas l'habitude de coder comme ça.
et la seconde version 1,78 sec.
Rouge --> Merci pour ce code, j'étais sur que l'on pouvait faire mieux. Une instruction
que je ne connaissais pas "ShowAllData".
Je corrige juste la colonne de référence ("B").
Merci pour toutes ces informations.

A+ Jean-Paul
 

Rouge

XLDnaute Impliqué
Simple curiosité, combien avez-vous y trouvé en temps pour l'exécution de ma macro.

Le code adapté à votre fichier
VB:
Sub HOP()
    Dim deb
    deb = Timer
    Dim DerLig As Long
    Dim f1 As Worksheet
    Application.ScreenUpdating = False
    Set f1 = Sheets("Feuil2")
    DerLig = f1.Range("B" & Rows.Count).End(xlUp).Row 'par rapport à la colonne A
    f1.Range("A1:G" & DerLig).AutoFilter Field:=1, Criteria1:="="
    f1.Rows("2:" & DerLig).SpecialCells(xlCellTypeVisible).Delete
    f1.ShowAllData
    Set f1 = Nothing
    MsgBox Timer - deb & " Sec"
End Sub

Je vous retourne le fichier( j'y ai ajouté une ligne pour les titres), faites l'essai
 

Pièces jointes

  • VIARD_Lignes vides et remonter les données colonne et plage.xlsm
    17.3 KB · Affichages: 6

VIARD

XLDnaute Impliqué
Bonjour Rouge, mapomme et à tous

J'ai bien apprécié les codes commentés, pour ça ok.
Mais malheureusement, cela correspond pas avec ce que j'ai réalisé.
que ce soit pour le traitement d'une colonne ou d'une plage.
Pour la colonne (1), les colonnes suivantes ne sont pas touchées because données.
seul les cellules pleines de la colonne(1) sont remontées.
Idem pour la plage, seul la zone est concernée et sa taille conservée, seul les données remontes,
le reste de la feuille ne bouge pas.
- Je comprend pourquoi mes codes sont plus long à traiter.

A+ Jean-Paul
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour @VIARD :),

Mais malheureusement, cela correspond pas avec ce que j'ai réalisé.
que ce soit pour le traitement d'une colonne ou d'une plage.
Pour la colonne (1), les colonnes suivantes ne sont pas touchées because données.
seul les cellules pleines de la colonne(1) sont remontées.
Idem pour la plage, seul la zone est concernée et sa taille conservée, seul les données remontes,
le reste de la feuille ne bouge pas.

C'est quand même au demandeur d'expliquer clairement ce qu'il veut, non ?
Et non pas simplement nous fournir 3 bouts de code à décortiquer par les membres pour connaitre les tenants et les aboutissements. Rien n'est plus frustrant que d'avoir travailler pour rien.
Sans rancune :)
 

Discussions similaires