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 :

Attendre 1/2 seconde [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre actif
    Femme Profil pro
    statisticienne
    Inscrit en
    Mai 2011
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : statisticienne
    Secteur : Santé

    Informations forums :
    Inscription : Mai 2011
    Messages : 40
    Par défaut Attendre 1/2 seconde
    Bonjour à tous,

    Je me tourne vers vous pour avoir un conseil en vba sur la fonction Application.Wait.

    En effet, j'ai créé un graphique dynamique et je souhaite que les points du graphique apparaissent les uns après les autres. Ça marche bien. Sauf que je souhaite que ça aille plus vite et n'attendre d'1/2 seconde entre chaque point.
    Voilà la fonction attendre que j'utilise:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.Wait TimeSerial(Hour(Now()), Minute(Now()), Second(Now()) + 1)
    Le troisième paramètre doit être un integer, je ne peux donc pas remplir une demi seconde. Y-a-t-il un autre moyen de faire?

    Je joins mon fichier Excel à ce message.

    Merci d'avance pour vos réponses.
    Fichiers attachés Fichiers attachés

  2. #2
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Salut, via Sleep
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Option Explicit
     
    Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
     
    Sub Essai()
    .......
            Sleep 500
    .......
    End Sub

  3. #3
    Membre actif
    Femme Profil pro
    statisticienne
    Inscrit en
    Mai 2011
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : statisticienne
    Secteur : Santé

    Informations forums :
    Inscription : Mai 2011
    Messages : 40
    Par défaut
    Merci kiki29, seulement ça ne fonctionne pas. Au lieu de m'afficher le graphique point par point au fur et à mesure, il attend un moment puis m'affiche tout le graphique en entier.

    Voilà mon code:
    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
    33
    34
    Option Explicit
     
     
    Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
     
    Sub AnimerAuto()
    Dim i
     
    ActiveSheet.ChartObjects("Graphique 1").Activate
    RAZ
    For i = 2 To 32
        ActiveChart.SeriesCollection(1).Values = "=Feuil1!$B$2:$B$" & i
        ActiveChart.SeriesCollection(2).Values = "=Feuil1!$C$2:$C$" & i
        ActiveChart.SeriesCollection(3).Values = "=Feuil1!$D$2:$D$" & i
        ActiveChart.SeriesCollection(4).Values = "=Feuil1!$E$2:$E$" & i
        ActiveChart.SeriesCollection(5).Values = "=Feuil1!$F$2:$F$" & i
        ActiveChart.SeriesCollection(6).Values = "=Feuil1!$G$2:$G$" & i
        ActiveChart.SeriesCollection(7).Values = "=Feuil1!$H$2:$H$" & i
        'Application.Wait TimeSerial(Hour(Now()), Minute(Now()), Second(Now()) + 1)
        Sleep 500
    Next i
     
    End Sub
     
    Sub RAZ()
        ActiveSheet.ChartObjects("Graphique 1").Activate
        ActiveChart.SeriesCollection(1).Values = "=Feuil1!$B$1:$B$1"
        ActiveChart.SeriesCollection(2).Values = "=Feuil1!$C$1:$C$1"
        ActiveChart.SeriesCollection(3).Values = "=Feuil1!$D$1:$D$1"
        ActiveChart.SeriesCollection(4).Values = "=Feuil1!$E$1:$E$1"
        ActiveChart.SeriesCollection(5).Values = "=Feuil1!$F$1:$F$1"
        ActiveChart.SeriesCollection(6).Values = "=Feuil1!$G$1:$G$1"
        ActiveChart.SeriesCollection(7).Values = "=Feuil1!$H$1:$H$1"
    End Sub
    Merci pour votre aide !

  4. #4
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Salut, autant pour moi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
            Sleep 500
            DoEvents
    sinon en pj un exemple différent du tien et qui lui fonctionne ( exemple sorti des décombres )
    Fichiers attachés Fichiers attachés

  5. #5
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut utiliser api GetTickcount
    Bonjour.

    Tu peux essayer d'utiliser l'API Gettickcount.

    Tu déclares l'API. Si tu as une version 32 bits d'Office
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Declare Function GetTickCount Lib "kernel32" () As Long
    Si tu utilises une version 64 bits, tu devras chercher et adapter.
    Ensuite tu peux créer une procédure d'attente qui ne bloque pas le fonctionnement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub subWait(ByVal lDuree As Long)
    'temporisation, lDuree en ms
    Dim lDep As Long
     
    lDep = GetTickCount
    While GetTickCount - lDep < lDuree
        DoEvents
    Wend
     
    End Sub
    Et tu l'utilises dans ton code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    For i = 2 To 32
       ...
        ActiveChart.SeriesCollection(7).Values = "=Feuil1!$H$2:$H$" & i
        'Application.Wait TimeSerial(Hour(Now()), Minute(Now()), Second(Now()) + 1)
        Call subWait(500)
    Next i
    ...
    Cordialement,

    PGZ

  6. #6
    Membre actif
    Femme Profil pro
    statisticienne
    Inscrit en
    Mai 2011
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : statisticienne
    Secteur : Santé

    Informations forums :
    Inscription : Mai 2011
    Messages : 40
    Par défaut
    Merci kiki29 et pgz, j'ai testé toutes vos propositions et cela fonctionne parfaitement. Merci beaucoup!

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

Discussions similaires

  1. Attendre moins d'une seconde - Temporisation
    Par zoumzoum59 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 21/01/2009, 11h58
  2. attendre 1 seconde entre deux fonctions
    Par urousseau dans le forum C++Builder
    Réponses: 8
    Dernier message: 08/06/2008, 19h14
  3. Réponses: 3
    Dernier message: 02/10/2006, 22h51
  4. Attendre 5 secondes avant Next Action
    Par Lux interior dans le forum XMLRAD
    Réponses: 4
    Dernier message: 24/08/2006, 10h15
  5. Timer en µsecondes
    Par Dagobert dans le forum x86 16-bits
    Réponses: 3
    Dernier message: 25/11/2002, 00h59

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