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 :

[VBA-E] ScreenUpdating pour le classeur sauf un form


Sujet :

Macros et VBA Excel

  1. #1
    Membre éclairé
    Avatar de repié
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    335
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 335
    Par défaut [VBA-E] ScreenUpdating pour le classeur sauf un form
    bonjour

    voila en fait c'est un peu compliqué

    j'ai une macro divisée en plusieurs module et j'ai un userform qui affiche l'évolution de la macro de telle manière que a la fin de chaque module, l'execution revient au form qui affiche que ce module est terminé et lance le suivant

    De plus, je doit désactiver la fonction ScreenUpdating sur l'ensemble de ma macro.
    Or pour que mon form affiche l'évolution, j'ai pensé réactiver ScreenUpdating le temps de le mettre a jour et enfin que désactiver ScreenUpdating pour le module suivant

    Pour chacun des modules, mon code est le suivant (en l'occurence le module Chargement)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Application.ScreenUpdating = True
    Label_extract.Caption = "Terminé"
    Label_chargement.Caption = "En cours"
    Application.ScreenUpdating = False
    Chargement
    Ainsi, avec ca, seul le form est censé afficher une évolution

    Mais ce n'est pas le cas : il ne se réaffiche pas correctement malgré le ScreenUpdating...

    Que puis-je faire pour ne mettre a jour l'affichage que de ce form?

  2. #2
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Par défaut
    remettre le ScreenUpdating... à True, une fois terminé le chargement... serait peut-être une idée inepte ?
    inpete ou non : essayes quand même

  3. #3
    Membre éclairé
    Avatar de repié
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    335
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 335
    Par défaut
    c'est ce que je fait

    en fait ce code ce répete autant de fois qu'il y a de modules

    donc a chaque fin de module, screenupdating se réactive

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Non, screnUpdating est fait pour éviter les mouvements dans ou entre feuilles de calculs quand des "Select la cellule ou la feuille" sont mis dans le code. Rien à voir avec l'userform.
    Pour l'Userform, tu as repaint (F1) et pour lui donner le temps de se refaire la face, tu peux utiliser, en plus, doevents (j'ai vu ça hier sur une question posée ici )

    Tu dis

    A+

    NB - Dans ton code, tu fais le contraire de ce que tu dis
    Application.ScreenUpdating = True 'Tu aurais dû mettre = False *******
    Label_extract.Caption = "Terminé"
    Label_chargement.Caption = "En cours"
    Application.ScreenUpdating = False 'Tu aurais dû mettre = True '********
    Chargement
    Mais de toutes façons, c'est ni l'un ni l'autre...

  5. #5
    Expert confirmé
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Par défaut
    un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Application.ScreenUpdating = True
    Doevents
    Label_extract.Caption = "Terminé"
    Label_chargement.Caption = "En cours"
    UserForm1.Repaint
    Application.ScreenUpdating = False
    Chargement
    :

  6. #6
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Par défaut
    Je ne sais pas, moi, mais il me semble que tu le réactives avant le chargement (donc à chaque module, c'est vrai)..... mais, pour ce qui est du dernier module ?... tu l'actives, le désacives avant le dernier chargement et... quid de la dernière activation (nécessaire) ?

  7. #7
    Membre éclairé
    Avatar de repié
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    335
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 335
    Par défaut
    C'est très intérressant tout ca

    de toutes facon, avec cette fonction Doevents jen'ai plus besoin de ScreenUpdating...

    Donc je vais tester ca maintenant!

  8. #8
    Membre éclairé
    Avatar de repié
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    335
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 335
    Par défaut
    Bon ca yest j'ai éssayer avec le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Doevents
    Label_extract.Caption = "Terminé"
    Label_chargement.Caption = "En cours"
    UserForm1.Repaint
    Chargement
    et ca marche!

    donc merci beaucoup!

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

Discussions similaires

  1. Aide pour Macro VBA copie lignes entre 2 classeur
    Par magicsismic dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 30/03/2015, 21h13
  2. [XL-2007] Fonction VBA pour un classeur excel
    Par dtsoro dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 23/01/2012, 21h28
  3. [XL-2003] Calcul auto pour tous les classeurs SAUF un
    Par choup67 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 12/05/2010, 10h51
  4. Réponses: 2
    Dernier message: 10/06/2006, 13h19
  5. [VBA excel] une variable pour 2 classeurs
    Par totoche dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 05/01/2006, 09h42

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