Etapes d'exécution de macro invisible par l'utilisateur

[Résolu]
Signaler
Messages postés
30
Date d'inscription
mardi 25 juillet 2006
Statut
Membre
Dernière intervention
12 janvier 2010
-
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
-
Bonjour à tous,

J'ai besoin d'un coup de main car j'ai un trou de mémoire. J'avais trouvée une instruction permettant lors de l'écution d'une macro excel, de ne voir que le résultat final, toutes les manipulation du classeur (changement de page active, effacement...) n'était pas visible. Le problème, c'est que j'ai oubliée cette instruction et l'endroit où je l'avais trouvé. En fait, si je n'ai pas les bonnes réponse sous google, c'est que je ne dois pas lui poser les bonnes questions mais j'ai essayer plusieurs mots-clés... en vain.

Donc s'il quelqu'un connaît cette instruction, ça serait super sympa!!

Merci d'avance

4 réponses

Messages postés
2237
Date d'inscription
lundi 29 mai 2006
Statut
Membre
Dernière intervention
29 mai 2008
11
Salut c'est, je pense, application.ScreenUpdating = true ou false.

 Drikce 06
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
Humm Drikce t'a donné la réponse !

ScreenUpdating, propriété
Cette propriété a la valeur True si la mise à jour de
l'écran est activée. Type de données Boolean en
lecture-écriture.

Notes
Désactivez la mise à jour de l'écran pour accélérer l'exécution du code de
votre macro. Vous ne pourrez suivre le déroulement de la macro mais en revanche
celle-ci sera exécutée plus rapidement.

N'oubliez pas d'affecter de nouveau la valeur True à la
propriété ScreenUpdating à la fin de la macro.

Exemple
Cet exemple démontre combien la désactivation de la mise à jour de l'écran
peut accélérer l'exécution du code de votre macro. L'exemple montre comment
masquer une colonne sur deux de la feuille Sheet1 tout en notant le temps mis
pour effectuer cette opération. La première fois que l'exemple masque les
colonnes, la mise à jour de l'écran est activée ; la seconde fois, elle est
désactivée. Lancez cet exemple et comparez les durées affichées dans le
message.

Dim elapsedTime(2)
Application.ScreenUpdating =  True
For i = 1 To 2    If i 2 Then Application. ScreenUpdating   False
    startTime =  Time
    Worksheets("Sheet1").Activate
    For Each c In ActiveSheet.Columns
        If c.Column Mod 2 = 0 Then
            c.Hidden = True
        End If
    Next c
    stopTime = Time
    elapsedTime(i) = (stopTime - startTime) * 24 * 60 * 60
Next i
Application. ScreenUpdating   = True
MsgBox "Elapsed time, screen updating on: " & elapsedTime(1) & _
        " sec." & Chr(13) & _
        "Elapsed time, screen updating off: " & elapsedTime(2) & _
        " sec."


@++

  Mortalino
Le mystérieux chevalier, "Provençal, le Gaulois"
Messages postés
124
Date d'inscription
mercredi 23 novembre 2005
Statut
Membre
Dernière intervention
19 septembre 2013
3
Est-ce que ce n'est pas parceque tu as fait une macro avec l'assistant ? Si tu codes toutes les manip en VB, tu n'auras pas ce problème. C'est le contraire, il faut lui demander pour afficher l'évolution du code.
Messages postés
30
Date d'inscription
mardi 25 juillet 2006
Statut
Membre
Dernière intervention
12 janvier 2010

Salut Try_yann!

Non, c'est du code VB "made in moi" !! Lorsque dans mon code j'ai besoin d'une info se trouvant dans un autre classeur, il faut que je l'active. Et quand j'exécute la macro, je "vois" les traitements en directs: les pages courantes qui changent, les calculs,etc. Je ne sais pas si j'ai été très clair...

Et ce que j'aimerai c'est que le raffraichissment de mon classeur ne se fasse qu'une fois toutes les procédures éxécutées.