Re : Supprimer les lignes vides jusqu'à la fin de la feuille
Bonjour à toutes et à tous,
Désolé pour cette réponse tardive mais j’ai eu un contretemps et j’ai voulu mettre en œuvre chaque solution proposée.
Je m’étais avancé un peu vite hier en affirmant que certaines propositions fonctionnaient. En fait, pour un contrôle plus rapide, j’avais mis en couleur des lignes sous le bloc de données de mon fichier, ce qui permettait un contrôle visuel très rapide.
MAIS en tapant F5 et dernière cellule, je me suis rendu compte que le code n’était pas allé chercher la dernière contenant un élément (ici invisible : il avait dû y avoir une valeur avec une mise en forme, effacée depuis mais qui fait que le fichier devient obèse car apparemment, Excel considère que la feuille va du début A1 jusqu’à cette cellule placée très loin du début !) …
Effectivement, je m’étais peut-être mal exprimé, ma demande n’était pas de supprimer des lignes juste pour le plaisir mais bel et bien parce que mes fichiers gonflent du fait de la présence d’éléments (invisibles à l’œil …)
Pour répondre aux uns et aux autres :
Danreb : contrairement à ce que je pensais, le code suivant ne va pas chercher la dernière ligne ayant contenu une donnée
Sub Purger()
Dim Last As Long
Last = Range("A" & Rows.Count).End(xlUp).Row
MsgBox "La dernière ligne est la " & Last & "ième" ' juste pour se contrôler ...
Rows(Last + 1).Resize(Rows.Count - Last).Delete
End Sub
Par ailleurs, je suis désolé d’avoir « bricolé » une solution avec des Select (d’autant qu’elle ne marche pas) mais c’était pour moi quelque chose de plus « compréhensible », même si effectivement, le Select est à bannir.
Eric S : même constat, ça semble fonctionner mais ne va pas chercher la dernière ligne ayant contenu une donnée
SI … : idem
Staple 1600 : tu as mis le doigt sur le problème, j’aurais dû formuler ma demande plus précisément, en l’intitulant «besoin d’une cure d’amaigrissement »
Efgé : tu es clairvoyant et ton code marche !
Par ailleurs, comme mes données « enflant » sont toujours les mêmes dans leur structure, ce n’est qu’en nombre de lignes que se pose le problème et pas en colonne. Donc, comme j’ai du mal à comprendre la ligne
LastCol = Split(Cells(1, Columns.Count).End(xlToLeft).Offset(, 1).Address, "$")(1),
J’ai restreint le code à :
Sub Purge_autre()
Dim lastRow As Long
lastRow = Cells(Rows.Count, 1).End(xlUp).Row + 1
Application.ScreenUpdating = False
Rows(lastRow & ":" & Rows.Count).Delete
Application.ScreenUpdating = True
ActiveSheet.UsedRange
End Sub
Et ça marche (vu que les données que j’ajoute, enlève etc. sont toujours sur colonne de A à G, le seul élément variable étant le nombre de lignes …)
Mais par curiosité, j’ai saisi en cellule Z250000 un chiffre, que j’ai mis en forme puis j’ai tout effacé.
A la mano, avec CTRL maj flèche vers la droite et SUPPR, je supprime les colonnes (donc yc la colonne Z)
Malheureusement, cette manip reste sans effet ! Quand je saisis F5 dernière colonne, je vois que le curseur saute en Z250000.
Comment se fait-il que ma purge manuelle (allant de G à XFD) n’a pas été prise en compte ?
Merci pour vos lumières et surtout de vous être penché sur mon cas hier soir