macro lente

micie1509

XLDnaute Junior
Bonjour,

J’ai cette macro qui efface les lignes vides :

Sub efface_vide()
Dim l As Long
For l = Cells.SpecialCells(xlCellTypeLastCell).Row To 1 Step -1
If Cells(l, "A").Value = "" Then Cells(l, 1).EntireRow.Delete
Next l
End Sub



Ensuite, je veux exécuter cette macro sur 30 feuilles qui elles, sont masquées. Le code que j’utilise pour exécuter la macro sur les feuilles choisies, fonctionnent très bien mais il prend environ une minute à s’exécuter. Est-ce que quelqu’un saurait ce que je pourrais faire afin d’accélérer l’exécution de cette macro ?

Merci d’avance au génie qui trouvera. :)

Voici le code que j’utilise :

Sub efface_vide2()

Sheets("Feuil00").Visible = True
Sheets("Feuil00").Select
Call efface_vide
Sheets("Feuil00").Visible = False


Sheets("Feuil1").Visible = True
Sheets("Feuil1").Select
Call efface_vide
Sheets("Feuil1").Visible = False

Sheets("Feuil2").Visible = True
Sheets("Feuil2").Select
Call efface_vide
Sheets("Feuil2").Visible = False


Sheets("Feuil3").Visible = True
Sheets("Feuil3").Select
Call efface_vide
Sheets("Feuil3").Visible = False

Sheets("Feuil4").Visible = True
Sheets("Feuil4").Select
Call efface_vide
Sheets("Feuil4").Visible = False


Sheets("Feuil5").Visible = True
Sheets("Feuil5").Select
Call efface_vide
Sheets("Feuil5").Visible = False


Sheets("Feuil6").Visible = True
Sheets("Feuil6").Select
Call efface_vide
Sheets("Feuil6").Visible = False

Sheets("Feuil7").Visible = True
Sheets("Feuil7").Select
Call efface_vide
Sheets("Feuil7").Visible = False


Sheets("Feuil8").Visible = True
Sheets("Feuil8").Select
Call efface_vide
Sheets("Feuil8").Visible = False

Sheets("Feuil9").Visible = True
Sheets("Feuil9").Select
Call efface_vide
Sheets("Feuil9").Visible = False


Sheets("Feuil10").Visible = True
Sheets("Feuil10").Select
Call efface_vide
Sheets("Feuil10").Visible = False

Sheets("Feuil11").Visible = True
Sheets("Feuil11").Select
Call efface_vide
Sheets("Feuil11").Visible = False


Sheets("Feuil12").Visible = True
Sheets("Feuil12").Select
Call efface_vide
Sheets("Feuil12").Visible = False


Sheets("Feuil13").Visible = True
Sheets("Feuil13").Select
Call efface_vide
Sheets("Feuil13").Visible = False

Sheets("Feuil14").Visible = True
Sheets("Feuil14").Select
Call efface_vide
Sheets("Feuil14").Visible = False


Sheets("Feuil15").Visible = True
Sheets("Feuil15").Select
Call efface_vide
Sheets("Feuil15").Visible = False


Sheets("Feuil16").Visible = True
Sheets("Feuil16").Select
Call efface_vide
Sheets("Feuil16").Visible = False

Sheets("Feuil17").Visible = True
Sheets("Feuil17").Select
Call efface_vide
Sheets("Feuil17").Visible = False


Sheets("Feuil18").Visible = True
Sheets("Feuil18").Select
Call efface_vide
Sheets("Feuil18").Visible = False

Sheets("Feuil19").Visible = True
Sheets("Feuil19").Select
Call efface_vide
Sheets("Feuil19").Visible = False


Sheets("Feuil20").Visible = True
Sheets("Feuil20").Select
Call efface_vide
Sheets("Feuil20").Visible = False


Sheets("Feuil21").Visible = True
Sheets("Feuil21").Select
Call efface_vide
Sheets("Feuil21").Visible = False

Sheets("Feuil22").Visible = True
Sheets("Feuil22").Select
Call efface_vide
Sheets("Feuil22").Visible = False


Sheets("Feuil23").Visible = True
Sheets("Feuil23").Select
Call efface_vide
Sheets("Feuil23").Visible = False

Sheets("Feuil24").Visible = True
Sheets("Feuil24").Select
Call efface_vide
Sheets("Feuil24").Visible = False


Sheets("Feuil25").Visible = True
Sheets("Feuil25").Select
Call efface_vide
Sheets("Feuil25").Visible = False


Sheets("Feuil26").Visible = True
Sheets("Feuil26").Select
Call efface_vide
Sheets("Feuil26").Visible = False

Sheets("Feuil27").Visible = True
Sheets("Feuil27").Select
Call efface_vide
Sheets("Feuil27").Visible = False


Sheets("Feuil28").Visible = True
Sheets("Feuil28").Select
Call efface_vide
Sheets("Feuil28").Visible = False

Sheets("Feuil29").Visible = True
Sheets("Feuil29").Select
Call efface_vide
Sheets("Feuil29").Visible = False


Sheets("Feuil30").Visible = True
Sheets("Feuil30").Select
Call efface_vide
Sheets("Feuil30").Visible = False


Sheets("Commandes").Select

End Sub
 

Pièces jointes

  • Février 2015-test2.zip
    154.6 KB · Affichages: 29

JBARBE

XLDnaute Barbatruc
Re : macro lente

Bonjour à tous,

Un essai avec cette macro qui donne le même résultat, mais la macro "efface_vide" est interminable !:

Code:
Sub essai()
Dim i As Integer
Sheets("Feuil00").Visible = True
    Sheets("Feuil00").Select
    Call efface_vide
    Sheets("Feuil00").Visible = False
For i = 1 To 30
    Sheets("Feuil" & i).Visible = True
    Sheets("Feuil" & i).Select
    Call efface_vide
    Sheets("Feuil" & i).Visible = False
Next i
Sheets("Commandes").Select
End Sub

bonne journée
 
Dernière édition:

Cousinhub

XLDnaute Barbatruc
Re : macro lente

Bonjour,

Quelques dixièmes de secondes....

Code:
Sub Macro1()
Dim Sh As Worksheet
Application.ScreenUpdating = False
For Each Sh In Sheets
    With Sh
        If .Name Like "Feuil*" Then
            If Application.CountA(.Columns(1)) > Application.CountIf(.Columns(1), ">0") + 1 Then
                .Columns(1).SpecialCells(xlCellTypeFormulas, 22).EntireRow.Delete
            End If
        End If
    End With
Next Sh
End Sub

Bonne journée
 

Statistiques des forums

Discussions
312 460
Messages
2 088 599
Membres
103 887
dernier inscrit
Michel126