Menu

Comment supprimer des lignes vides à la fin de mon fichier Excel

Sylvie - 5 déc. 2017 à 16:00 - Dernière réponse :  sylmarco
- 13 févr. 2018 à 18:04
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 

Votre réponse

6 réponses

ccm81 8519 Messages postés lundi 18 octobre 2010Date d'inscription 15 juillet 2018 Dernière intervention - 5 déc. 2017 à 17:26
0
Merci
Bonjour

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

Cdlmnt
Commenter la réponse de ccm81
sylmarco 7 Messages postés mercredi 6 décembre 2017Date d'inscription 16 mars 2018 Dernière intervention - 6 déc. 2017 à 17:59
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
Commenter la réponse de sylmarco
The_boss_68 512 Messages postés dimanche 15 novembre 2015Date d'inscription 31 mai 2018 Dernière intervention - Modifié par The_boss_68 le 6/12/2017 à 20:03
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 :-)
Commenter la réponse de The_boss_68
thev 1722 Messages postés lundi 7 avril 2008Date d'inscription 1 juillet 2018 Dernière intervention - Modifié par thev le 7/12/2017 à 20:47
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 :-)
Commenter la réponse de thev