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

Sylvie - 5 déc. 2017 à 16:00 - Dernière réponse : thev 1691 Messages postés lundi 7 avril 2008Date d'inscription 14 décembre 2017 Dernière intervention
- 7 déc. 2017 à 20:41
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

Répondre au sujet
ccm81 8204 Messages postés lundi 18 octobre 2010Date d'inscription 12 décembre 2017 Dernière intervention - 5 déc. 2017 à 17:26
0
Utile
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 1 Messages postés mercredi 6 décembre 2017Date d'inscription 6 décembre 2017 Dernière intervention - 6 déc. 2017 à 17:59
0
Utile
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 395 Messages postés dimanche 15 novembre 2015Date d'inscription 13 décembre 2017 Dernière intervention - Modifié par The_boss_68 le 6/12/2017 à 20:03
0
Utile
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
Commenter la réponse de The_boss_68
thev 1691 Messages postés lundi 7 avril 2008Date d'inscription 14 décembre 2017 Dernière intervention - Modifié par thev le 7/12/2017 à 20:47
0
Utile
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


 
Commenter la réponse de thev