Menu

Comment supprimer des lignes vides à la fin de mon fichier Excel [Fermé]

-
Bonjour, J'utilise Excel 2010 avec Windows 10. J'ai un gros fichier Excel que j'ai monté et qui est mon outil de base de travail. Cependant, il me créé toujours des lignes vides à la fin de mon fichier et il m'est impossible de les supprimer. J'avais trouvé une macro qui fonctionnait super bien et ça avait résolu tous mes problèmes.

Par contre, depuis 2 mois, ça ne fonctionne malheureusement plus car ça m'indique erreur d'exécution 438. Je n'ai absolument rien changé de mon fichier ni aucune version d'aucun programme dans mon ordinateur. La seule chose que je peux voir, c'est une mise à jour qui a pu faire planter ma macro. Je ne suis pas très habile non plus dans les macros. C'est en fouillant sur internet que je l'avais trouvée.

Sub Purger()
Dim last As Variant
Dim ligne_libre As Variant
last = Range("A" & Rows.Count).End(xlUp).Row
MsgBox "La derniere ligne est la " & last & "ième" 'juste pour se contrôler ...
Rows(last + 1 & ":" & Rows.Counts).Select
Selection.Delete Shift:=xlUp

End Sub


Est-ce que quelqu'un peut m'aider à trouver le problème S.V.P. Il semblerait que ce soit dans la ligne rows qu'il y a un problème.



Afficher la suite 

4 réponses

Messages postés
8944
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
20 mai 2019
1944
0
Merci
Bonjour

Peut être un "s" de trop pour Count à Rows.Count
Au passage que vaut last quand ça plante ?

Cdlmnt
Messages postés
28
Date d'inscription
mercredi 6 décembre 2017
Statut
Membre
Dernière intervention
17 mai 2019
0
Merci
Merci beaucoup, en enlevant le « s » je n’ai plus de message d’erreur mais la macro ne fonctionne plus correctement. Elle m’indique bien la bonne dernière ligne mais elle n’efface plus lignes en dessous comme avant. Même si je les sélectionne et que je les delete, ça fonctionne pas non plus.

Je viens de me rendre compte qù'à chaque fois que j'essaie de rouler ma macro, ça m'ajoute environ 30,000 lignes :-(

Mon fichier est rendu à presque 120,000 lignes de trop

Un gros merci
Messages postés
603
Date d'inscription
dimanche 15 novembre 2015
Statut
Membre
Dernière intervention
14 mai 2019
70
0
Merci
Bonsoir,

A tester

Sub Purge()
Dim last As Variant
Dim i As Variant
last = Range("A" & Rows.Count).End(xlUp).Row
MsgBox "La dernière ligne est la " & last & "ième" ' juste pour se contrôler ...
i = last + 1 ' pour se mettre à la première ligne vide
Rows(i).EntireRow.Select ' avec cette nouvelle instruction, je sélectionne la ligne entière
Range(Selection, Selection.End(xlDown)).Select
Selection.Delete Shift:=xlUp

End Sub



Slts
Cette macro fonctionne très bien car elle m'indique exactement la dernière ligne réelle de mon fichier mais elle ne m'efface pas toutes les lignes vides à la suite. Lorsque je sauvegardais mon fichier après cette étape et que je le réouvrais, mon ascenseur à la droite de mon fichier lorsque j'allais jusqu'en bas arrivait à ma dernière ligne de mon fichier mais maintenant il va à ma dernière ligne vide (Mon fichier réel à tout près de 68,000 lignes)

À chaque fois que j'essaie de rouler mon ancienne macro ou ta proposition, ça m'ajoute environ 30,000 lignes :-(

Mon fichier est rendu à presque 170,000 lignes de trop. Je sais tellement plus quoi faire et ou regarder. Tout fonctionnait super bien avant :-(

Merci beaucoup de ta précieuse aide :-)
Messages postés
1770
Date d'inscription
lundi 7 avril 2008
Statut
Membre
Dernière intervention
20 mars 2019
377
0
Merci
Bonsoir,

Autre proposition à tester

     
Sub purger()

Dim last_row_used As Range, last_row_filled As Range, first_row_to_delete As Range

With ActiveSheet
'dernière ligne utilisée
Set last_row_used = .Rows(.UsedRange.Rows.Count)
'dernière ligne remplie
Set last_row_filled = .Rows.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).EntireRow
'suppression lignes vides si existantes
If last_row_used.Address > last_row_filled.Address Then
'première ligne à supprimer
Set first_row_to_delete = last_row_filled.Offset(1)
'suppression lignes vides après dernière ligne remplie
Range(first_row_to_delete, last_row_used).Delete
End If
End With

'sauvegarde classeur
ActiveWorkbook.Save

End Sub


 
Ta macro fonctionne très bien aussi car elle m'indique exactement la dernière ligne réelle de mon fichier mais elle ne m'efface pas toutes les lignes vides à la suite. Lorsque je sauvegardais mon fichier après cette étape et que je le réouvrais, mon ascenseur à la droite de mon fichier lorsque j'allais jusqu'en bas arrivait à ma dernière ligne de mon fichier mais maintenant il va à ma dernière ligne vide (Mon fichier réel à tout près de 68,000 lignes)

À chaque fois que j'essaie de rouler mon ancienne macro ou ta proposition, ça m'ajoute environ 30,000 lignes :-(

Mon fichier est rendu à presque 170,000 lignes de trop. Je sais tellement plus quoi faire et ou regarder. Tout fonctionnait super bien avant :-(

Merci beaucoup de ta précieuse aide :-)