Macro pour supprimer les lignes entièrement vides d'un tableau Excel

benadry

XLDnaute Occasionnel
Bonjour le forum,

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.


Merci d'avance.

Cordialement.
 

Pièces jointes

  • Classeur2.xlsm
    25.5 KB · Affichages: 54
  • Classeur2.xlsm
    25.5 KB · Affichages: 52
  • Classeur2.xlsm
    25.5 KB · Affichages: 49

NezQuiCoule

XLDnaute Occasionnel
Re : Macro pour supprimer les lignes entièrement vides d'un tableau Excel

De rien, ravi que ton problème soit résolu un minimum ;)

Concernant tes formules qui ne se calculent pas, je sais pas si tu connais déjà cette fonctionnalité, mais dans Excel, sur l'onglet "Formules" tu as tout en haut à droite "Options de calcul", et c'est cette fonctionnalité là que l'on a modifié dans le code VBA avec ce que je t'ai donné.

Tu peux donc si tu le souhaites désactiver entièrement les formules, et lancer le calcul uniquement lorsque tu le souhaites, avec "Calculer maintenant" (ou F9). Cela peut être pratique dans ton cas où chaque opération, chaque modification de cellule va entraîner une perte de temps considérable.

En te souhaitant bonne chance et bonne journée :)
 

job75

XLDnaute Barbatruc
Re : Macro pour supprimer les lignes entièrement vides d'un tableau Excel

Bonjour benadry, NezQuiCoule,

L'inconvénient des fonctions INDIRECT, DECALER, AUJOURDHUI, MAINTENANT c'est qu'elles sont volatiles.

Les formules les contenant sont recalculées à chaque modification d'un classeur ouvert.

Au lieu de votre formule :

Code:
=INDEX(INDIRECT("'"&$AG$2&"'!C:C");EQUIV(1;(($A9=INDIRECT("'"&$AG$2&"'!A:A")))*(($A$1=INDIRECT("'"&$AG$2&"'!H:H")));0)+1)
voyez peut-être une formule de ce genre, non volatile :

Code:
=INDEX(SI($AG$2="Feuille 1";'Feuille 1'!$C:$C;'Feuille 2'!$C:$C);EQUIV(1;($A9=SI($AG$2="Feuille 1";'Feuille 1'!$A$1:$A$3000;'Feuille 2'!$A$1:$A$3000))*($A$1=SI($AG$2="Feuille 1";'Feuille 1'!$H$1:$H$3000;'Feuille 2'!$H$1:$H$3000));0)+1)
Bien sûr il faut limiter les plages dans une formule matricielle !!!

A+
 

Discussions similaires

Statistiques des forums

Discussions
312 198
Messages
2 086 124
Membres
103 126
dernier inscrit
Vuagno27