Temps d'éxécution macro gros fichier

Bonjour

Etant très novice en VBA, je vous soumets un problème concernant la macro suivante :

Sub Macro1()

'

' Macro1 Macro

'

' Touche de raccourci du clavier: Ctrl+a

'

Dim num_col As Integer

Dim num_sem_col As Integer

Dim num_sem_colplus1 As Integer

Dim CA_hebdo As Double

Dim annee As Integer

Dim semaine As Integer

num_col = 2

For num_col = 2 To 1156

num_sem_col = Cells(31, num_col)

num_sem_colplus1 = Cells(31, num_col + 1)

CA_hebdo = Cells(38, num_col)

annee = Cells(29, num_col)

semaine = Cells(31, num_col)

If num_sem_col <> num_sem_colplus1 Then

Cells(43, num_col) = CA_hebdo

Cells(42, num_col) = "S" & semaine & " " & annee

End If

Next num_col

Dim i As Integer

num_col = 2

For i = 1 To 1156

If Not IsEmpty(Cells(43, num_col)) Then

num_col = num_col + 1

Else

Range(Cells(42, num_col), Cells(43, num_col)).Select

Selection.Delete Shift:=xlToLeft

End If

Next i

End Sub

Quand je la fais tourner sur un fichier exemple ne comportant que peu de lignes (10 environ) mais autant de colonnes, elle met 1 minute.

Quand c'est sur ma feuille de travail qui comporte 10 lignes de formules excel et 20 lignes de paramètres au-dessus, cela met 25 minutes. Il faut savoir que cette feuille est dans un classeur qui comporte plusieurs feuilles du même type. C'est la deuxième partie de la macro qui met du temps (à partir de For i=1 To 1156).

Comment faire pour améliorer cela ?

D'avance merci pour les conseils que vous pourrez me donner.

Jacques

Bonjour,

Essaie avec :

Sub Macro1()
Dim num_col As Long
Dim num_sem_col As Long
Dim num_sem_colplus1 As Long
Dim CA_hebdo As Double
Dim annee As Long
Dim semaine As Long
Dim i As Long
Dim modeCalc As XlCalculation

    With Application
        modeCalc = .Calculation
        .Calculation = xlCalculationManual
        .ScreenUpdating = False
    End With

    num_col = 2

    For num_col = 2 To 1156
        num_sem_col = Cells(31, num_col)
        num_sem_colplus1 = Cells(31, num_col + 1)
        CA_hebdo = Cells(38, num_col)
        annee = Cells(29, num_col)
        semaine = Cells(31, num_col)
        If num_sem_col <> num_sem_colplus1 Then
            Cells(43, num_col) = CA_hebdo
            Cells(42, num_col) = "S" & semaine & " " & annee
        End If
    Next num_col

    'num_col = 2

    For i = 1 To 1156
        If Not IsEmpty(Cells(43, num_col)) Then
            num_col = num_col + 1
        Else
           Range(Cells(42, num_col), Cells(43, num_col)).Delete Shift:=xlToLeft
        End If
    Next i

    Application.Calculation = modeCalc

End Sub

Bonjour Jean-Eric

Merci de ces conseils.

J'avoue que c'est hors de ma portée de comprendre les lignes que tu as changées. J'ai donc tout copié et j'ai fait tourner la macro (qui a tourné pendant longtemps) mais la seconde partie n'a pas donné d'action (c'est à dire que les colonnes vides n'ont pas été supprimées). Comme le num_col n'a pas été remis à 2 pour commencer à la colonne B, est ce que la macro n'aurait pas tournée sur les colonnes à partir de 1156 et donc supprimé des cellules dans la droite du fichier qui est vide ?

Cordialement

Jacques

Bonjour,

C'est une erreur de ma part.

Je n'aurai pas dû inhibé cette ligne.

Tu as certainement corrigé cette anomalie.

Cdlt.

Bonjour Jean-Eric

Un grand merci pour tes conseils.

J'ai corrigé et cela me fait gagner environ 10 minutes sur l'exécution de la macro.

Toutefois, il faut encore 15 minutes et c'est trop long !

J'ai donc pris le parti de copier mes données en valeurs seules dans une autre feuille que je crée dans le même classeur et de faire fonctionner la macro sur cette feuille. Là ça met 1-2 minutes et c'est acceptable pour moi.

Malheureusement j'ai perdu la liaison avec mes données d'origine par cette procédure donc si je veux changer mes données d'origine il faut tout recommencer, mais c'est la meilleure solution que j'ai trouvé jusqu'à maintenant.

Si jamais certains ont des idées pour éviter cela, je suis preneur.

En tous cas merci pour ton aide

Cordialement

Jacques

Bonjour,

Ne crois-tu pas qu'un fichier nous serait utile pour t'apporter une aide adaptée?

Cdlt.

12201511161312forum.zip (184.64 Ko)

Bonjour

Voici mon fichier

Cordialement

Jacques

Rechercher des sujets similaires à "temps execution macro gros fichier"