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

Résolu
lolo38550 Messages postés 30 Date d'inscription mardi 25 juillet 2006 Statut Membre Dernière intervention 12 janvier 2010 - 28 juil. 2006 à 09:25
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 - 28 juil. 2006 à 19:59
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

drikce06 Messages postés 2236 Date d'inscription lundi 29 mai 2006 Statut Membre Dernière intervention 29 mai 2008 10
28 juil. 2006 à 09:28
Salut c'est, je pense, application.ScreenUpdating = true ou false.

 Drikce 06
3
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
28 juil. 2006 à 19:59
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"
3
tri_yann Messages postés 124 Date d'inscription mercredi 23 novembre 2005 Statut Membre Dernière intervention 19 septembre 2013 3
28 juil. 2006 à 13:35
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.
0
lolo38550 Messages postés 30 Date d'inscription mardi 25 juillet 2006 Statut Membre Dernière intervention 12 janvier 2010
28 juil. 2006 à 13:59
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.
0
Rejoignez-nous