Voilà, je pense que tout est dans le titre : je cherche une macro me permettant de supprimer toutes les lignes qui sont entièrement vides dans mon tableau et uniquement celles-là ! Le but est de ne plus laisser de lignes vides pour créer des plages dynamiques avec la fonction DECALER.
J'ai essayé deux macros, mais soit certaines lignes sont oubliées, soit la macro ne fait rien du tout :
Code:
Sub SupprimerLignesVides()
Dim c As Long
Dim vLigne As Long
vDernièreligne = Sheets(Sheets.Count).UsedRange.Rows.Count
Application.ScreenUpdating = False
For vLigne = vDernièreligne To 1 Step -1
If Application.CountA(Rows(vLigne)) = 0 Then Rows(vLigne).Delete
Next
End Sub
Code:
'Sub Supprimer_les_lignes_vides()
'Sheets(Sheets.Count).Range("A1:A65536").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
'End Sub
Le fichier test que je vous joins n'est qu'un tout petit exemple. Le fichier réel fait près de 2500 lignes. Il faudrait donc que la macro soit la plus légère possible pour pouvoir s'exécuter rapidement. Pour information, dans le fichier test, comme dans le réel, seules les colonnes A à G sont susceptibles d'être remplies.
Si quelqu'un pouvait m'aider, ce serait vraiment très bien.
Re : Macro pour supprimer les lignes entièrement vides d'un tableau Excel
Bonjour,
Je te renvoie le fichier avec les modifications nécessaires.
Ma méthode teste chaque celulle pour chaque ligne, dès qu'il rencontre une cellule non vide, il passe directement à la suivante, j'ai commenté mon code afin que tu puisses comprendre rapidement.
J'espère que cela va t'aider !
(Au passage, il y a beaucoup d'espaces inutiles et certaines lignes vides n'étaient pas considérées comme telles)
Re : Macro pour supprimer les lignes entièrement vides d'un tableau Excel
Re-bonjour benadry,
Je suis un peu embêté, car le fichier que tu as envoyé contenait environ 260 lignes, et ma macro a mit exactement 0,83 secondes pour s'exécuter..
D'après tes informations ton fichier réel fait 2500 lignes, cela ne devrait pas dépasser la dizaine de seconde en théorie. Peux tu, dans le code mettre un point d'arrêt juste après la ligne : vDernièreLigne = ... puis me dire que vaut cette variable ?
Re : Macro pour supprimer les lignes entièrement vides d'un tableau Excel
Pas de souci, on est tous là pour apprendre, moi y compris
Si tu as bien mis le point d'arrêt, le code va s'arrêter après la ligne, et tu n'as plus qu'à passer ta souris au dessus de ta variable "vDernièreLigne" pour qu'Excel t'affiche sa valeur. Dis moi si ça a fonctionné et donne moi cette valeur si tu peux.
L'autre solution est d'aller dans -> Affichage -> Variables Locales
Tu auras la liste des variables et leur valeur en temps réel lorsque tu utilises le mode pas à pas (F8)
Re : Macro pour supprimer les lignes entièrement vides d'un tableau Excel
Bonjour Job75, le forum,
Merci beaucoup pour votre aide.
Je viens de tester plusieurs fois ce matin et, à chaque fois, j'ai dû arrêter Excel après une dizaine de minutes, la macro étant complètement bloquée.
Comme je travaille en réseau, j'ai essayé de mettre le fichier sur mon disque dur avant de l'exécuter. J'ai aussi entièrement vidé mon classeur "réel" qui contient un bon nombre d'onglets pour ne plus avoir qu'une feuille avec le bouton de commande et une autre avec la feuille à traiter ... Même résultat.
Je travaille avec un PC récent, le fichier réel pèse à peine 350 Ko ! Evidemment, j'ai mis des tas et des tas de formules qui vont rechercher des données dans le tableau dont je veux supprimer les lignes vides. Comme je le disais hier en ouvrant cette discussion, mon but serait de remplacer mes formules de type :
en faisant référence à des noms de plages dynamiques plutôt qu'à des colonnes entières (C:C, A:A, H:H), pour éviter de "fatiguer" Excel. Mais, pour ça, il ne faut pas que j'aie de vides dans les colonnes !!! Je tourne donc un peu en rond.
Merci pour votre aide, en tout cas.
Si vous avez une solution, je suis évidemment preneur. Pour autant, ne perdez pas trop de temps avec ça !
Aaaah d'accord j'ai compris donc d'où venait le problème.. et il existe une solution à priori ! Hourra
En fait, à chaque fois que tu vas supprimer une ligne, tes formules vont toutes se recalculer automatiquement. Il faut donc désactiver le calcul automatique sur la feuille.
Pour ce faire, je te propose d'insérer ces lignes en début et en fin de code :
Code:
Application.Calculation = xlCalculationManual 'à mettre en début de procédure
Application.Calculation = xlCalculationAutomatic 'à mettre en fin de procédure
Fais un nouvel essai pour nous dire ce qu'il en est.
Re : Macro pour supprimer les lignes entièrement vides d'un tableau Excel
Bonjour NezQuiCoule,
Très bien vu !!!
J'ai inséré tes deux parties de code en début et en fin du dernier code de Job75, comme tu l'as demandé et la macro n'a mias que quelques secondes pour s'exécuter !
Magnifique ! Je ne connaissais pas du tout et je pense que ça pourra m'aider à l'avenir.
Je ne sais pas si ça va résoudre mon problème global, car toutes mes formules mettent un temps fou à s'exécuter et certaines ne le font même pas d'ailleurs. Cependant, je vais pouvoir mettre des plages dynamiques dans mes formules, ce sera déjà ça de gagné !
Merci encore pour votre aide, Job75 et NezQuiCoule.