IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Masquer l'exécution d'une macro


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 21
    Par défaut Masquer l'exécution d'une macro
    Bonjour,

    Sur une feuille Excel, ma macro s'exécute en cliquant sur un bouton et, lors de son exécution, on voit tout ce qui se passe...

    Est-il possible de masquer ce carnaval ? En faisant afficher/apparaître une image... ce serait bien !

    J'espère que c'est clair, merci pour vos aides.

  2. #2
    Membre confirmé Avatar de Oh!Tofocus
    Profil pro
    Inscrit en
    Août 2007
    Messages
    217
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 217
    Par défaut
    SALUT !
    tu peux essayer ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Sub Et_hop()
    'bloque le rafraichissement de l'affichage
    Application.ScreenUpdating = False
     
    'ici ta macro
     
    Application.ScreenUpdating = True
    End Sub
    par contre pour la belle image je cherche......

  3. #3
    Membre chevronné
    Avatar de Bigalo
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    445
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 445
    Par défaut
    Bonsoir,

    Tu peux afficher au premier plan une feuille avec une image, puis utiliser le ScreenUpdating que t’a signalé Oh!Tofocus :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub Ton Traitement
        ' Appel le cas échéant du classeur contenant la feuille avec l’image
        Sheets("BelleImage").Activate
        Application.ScreenUpdating = False
        ' Ton Traitement proprement dit
        ' Ici tu actives la feuille qui doit être visible à la fin du traitement
        Application.ScreenUpdating = True
    End Sub
    Cordialement,

  4. #4
    Membre confirmé
    Inscrit en
    Décembre 2007
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 172
    Par défaut
    Juste au passage est-ce que le fait de mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.ScreenUpdating = False
    fait gagner du temps ??

    car par exemple sur un soft nommé Matlab, le fait d'afficher ou pas fait gagner un temps monstre lors de l'exécution du code

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2007
    Messages
    491
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 491
    Par défaut
    Juste au passage est-ce que le fait de mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.ScreenUpdating = False
    fait gagner du temps ??
    je repondrais tout depend du code.

    Application.ScreenUpdating sert a empecher le rafraichissement de l ecran,
    donc s il y a de nombreux select ou activate dans la procedure le gain de temps est important.

    Par contre si les feuilles,ranges etc ... sont utilisés en tant qu objet => gain de tps "nul"

  6. #6
    Membre confirmé
    Inscrit en
    Décembre 2007
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 172
    Par défaut
    ouais c'est logique quelque part ..

    chouette je vais pouvoir booster quelques fichiers !!

  7. #7
    Membre chevronné
    Avatar de Bigalo
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    445
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 445
    Par défaut
    Bonsoir,

    Si tu veux accélérer certains traitements de manière significative, c’est le passage en calcul manuel qui est le plus efficace.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Application.Calculation = xlManual
    et pour revenir en calcul auto,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Application.Calculation = xlAutomatic
    Attention, des tests sont nécessaires : si par exemple on affecte à une variable la valeur d’une cellule, et que celle-ci n’est pas à jour, parce qu’on est en calcul manuel, on ne risque pas d’aboutir au résultat correct.

    Par conséquent, il peut être nécessaire de redonner la valeur xlAutomatic à la propriété Calculation, avant la fin du traitement, quitte à repasser en calcul manuel à une phase ultérieure :

    Selon les cas on aura

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        Application.Calculation = xlManual
       ' Ici le traitement
        Application.Calculation = xlAutomatic
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        ' Phase 1 du traitement
        Application.Calculation = xlManual
       ' Phase 2 du traitement
        Application.Calculation = xlAutomatic
       ' ...
        Application.Calculation = xlManual
       ' Phase N du traitement
        Application.Calculation = xlAutomatic
       ' Phase N + 1 du traitement
    NB - il faut penser à redonner la valeur xlAutomatic à Calculation en cas d’interruption avant la fin du traitement (point d’arrêt et interruption ou erreur macro par exempl).

    Le principe est le même avec Application.EnableEvents à qui il faut, le cas échéant, redonner la valeur True.

    Cordialement,

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2003] Masquer l'ouverture de fichiers pendant l'exécution d'une macro
    Par thibane dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 30/04/2009, 08h10
  2. Revenir sur la cellule sélectionné après exécution d'une macro
    Par Daniel-Gérald dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 25/02/2007, 21h50
  3. [EXCEL] interrompre l'exécution d'une macro
    Par ustilago dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 06/10/2006, 10h24
  4. [VBA-E]Exécution d'une macro en arrière-plan
    Par Mirx1 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 25/04/2006, 23h13
  5. Allongement d'uin temps d'exécution d'une macro
    Par avanrill dans le forum Access
    Réponses: 2
    Dernier message: 06/03/2006, 19h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo