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] fonction DoEvents ?


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 2005
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 44
    Par défaut [VBA-E] fonction DoEvents ?
    Bonjour,

    Grace à l'aide d'une personne du forum (que je remercie encore), j'ai pu aboutir à ce code qui permet de faire évoluer la mise en forme des courbes d'un graphe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
     
    Sub Macro1()
    Dim graph As Chart
    Dim j As Single
    Set graph = Feuil1.ChartObjects("Graphique 3").Chart
     
    For j = 1 To 240 'ttes courbes désactivées
      graph.SeriesCollection(j).Border.LineStyle = xlNone
      graph.SeriesCollection(j).MarkerBackgroundColorIndex = xlNone
      graph.SeriesCollection(j).MarkerForegroundColorIndex = xlNone
    Next j
     
    For j = 1 To 240 'courbe active
     graph.SeriesCollection(j).Border.ColorIndex = 11
     graph.SeriesCollection(j).Border.Weight = xlThick
     graph.SeriesCollection(j).MarkerBackgroundColorIndex = 11
     graph.SeriesCollection(j).MarkerForegroundColorIndex = 11
     
     If j > 1 Then 'on désactive courbe précédente
        graph.SeriesCollection(j - 1).Border.LineStyle = xlNone
        graph.SeriesCollection(j - 1).MarkerBackgroundColorIndex = xlNone
        graph.SeriesCollection(j - 1).MarkerForegroundColorIndex = xlNone
     End If
     
     Sleep (100)
     DoEvents 'exécution des commandes
     
    Next j
     
    End Sub
    Je ne comprends pas le rôle de la fonction DoEvents ici : si on ne la met pas, les mises en forme des courbes ne se font pas.

    Pourquoi ? (J'ai bien sur regarder l'aide sur la fonction mais ça ne m'aide pas justement).

  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
    DoEvents (voir dans aide en ligne) permet de "passer la main" au système pour qu'il exécute ses tâches (explications complètes dans l'aide en ligne)

  3. #3
    Membre émérite
    Inscrit en
    Septembre 2005
    Messages
    617
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 617
    Par défaut
    Franchement j'ai bien recu ton mp mais je ne pourrais pas te répondre... Si tu ne le met pas, le code s'exécute mais l'affichage n'est pas remis a jour, tu peux tester remet tout en noir et lance... Tu verra a la fin la derniere est rouge. Je me suis d'abord dis oui c'est une histoire de screenupdating=false mais non.

    Alors j'ai mis ce DoEvents, cela lais en quelque sorte le programme le temps de réagir pour actualiser la courbe...

  4. #4
    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
    NON !
    Voir mon dernier message ! Celà donne la main au système, voilà !

  5. #5
    Membre émérite
    Inscrit en
    Septembre 2005
    Messages
    617
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 617
    Par défaut
    Oui jfmarques mais ce n'est pas le systeme qui change la couleur de la courbe qd meme? si? Ou alors c'est de l'affichage a l'ecran qu'il se charge

    En tout cas sans ce Doevents, les courbes changes de couleurs sans s'afficher

  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
    Et c'est qui, alors ? une fée ?
    Elle mettrait un msgbox et attendrait un peu : même résultat : tout bon car le système profiterait de ce temps pour faire ce qu'il a à faire !
    Lire DoEvents dans aide en ligne !

  7. #7
    Membre émérite
    Inscrit en
    Septembre 2005
    Messages
    617
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 617
    Par défaut
    Citation Envoyé par jmfmarques
    Et c'est qui, alors ? une fée ?
    Elle mettrait un msgbox et attendrait un peu : même résultat : tout bon car le système profiterait de ce temps pour faire ce qu'il a à faire !
    Lire DoEvents dans aide en ligne !
    :p t'es vraiment grave mon ptit jmfmarques... Je vais jeter un coup d'oeuil en ligne promis... Je sais qu'il faut parfois s'en servir et c'est pour ca que je l'ai mis, je vois a peu pres ce que ca fait mais je ne pensais pas que ca allait jusque la...

    Merci pour l'info jmfmarques

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 44
    Par défaut
    Ok merci

    Ce que je ne saisis pas c'est que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ActiveChart.SeriesCollection(j).Border.ColorIndex = 11
    n'a pas besoin de DoEvents pour fonctionner par exemple.

    Enfin, ça marche, c'est l'essentiel, il faut juste que le garde dans un coin, ça pourrait me resservir un jour

Discussions similaires

  1. [VBA/Excel] Fonction open sous Excel 97
    Par nico01984 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 04/01/2006, 14h19
  2. [VBA EXCEL] Fonction Instr
    Par thulvar dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 03/01/2006, 14h43
  3. [VBA-E] Fonction "FIND"
    Par cinc dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 06/09/2005, 11h16
  4. [VBA-E] lien en VBA et fonction generatrice
    Par Smoke666 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 15/07/2004, 11h47
  5. [VBA-E] Fonction sum() dans une cellule
    Par Gonzo dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 16/12/2002, 10h18

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