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

VB 6 et antérieur Discussion :

Pourquoi cette fonction ne fonctionne pas correctement


Sujet :

VB 6 et antérieur

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : Italie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2014
    Messages : 46
    Points : 27
    Points
    27
    Par défaut Pourquoi cette fonction ne fonctionne pas correctement
    bonsoir!!
    j'ai une petite fonction qui ne fonctionne pas comme prévu voila le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub Form_Load()
    Call initializ
    Me.Refresh
    Label3.Caption = "Get Ready"
    Me.Refresh
    Sleep 2000
    Label3.Caption = "3"
    Timer1.Enabled = True
    Timer1.Interval = 1000
     
    End Sub
    en principe lors de l’exécution je vois un label affiche Get Ready puis 3 alors que dès la fenetre est lancé je vois directement 3
    et merci d'avance

  2. #2
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 172
    Points
    17 172
    Par défaut
    Salut
    La fonction Sleep n'existe pas sous VB6, elle appartient au code VBScript.
    Un équivalent
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Public Sub RetarD(DureR As Single)
    DureR = Round((Timer + DureR), 2)
    Do While Time > DureR: DoEvents: Loop
    End Sub
    son emploi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RetarD 1.5 ' 1.55 = 1 Sc 55 centiémes.
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  3. #3
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 130
    Points : 3 118
    Points
    3 118
    Par défaut
    Citation Envoyé par ProgElecT Voir le message
    Salut
    La fonction Sleep n'existe pas sous VB6, elle appartient au code VBScript.
    Un équivalent
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Public Sub RetarD(DureR As Single)
    DureR = Round((Timer + DureR), 2)
    Do While Time > DureR: DoEvents: Loop
    End Sub
    son emploi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RetarD 1.5 ' 1.55 = 1 Sc 55 centiémes.
    Sleep n'est pas spécifique à VBScript ; elle est délivrée comme SleepEx par kernel32 : elle est donc utilisable sous VB6.

    Sinon, tu es sur de ton code prog ?

    Concernant Sleep, elle a le désavantage d'être bloquante
    ... contrairement à Wait de la librairie VB6i

  4. #4
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 172
    Points
    17 172
    Par défaut
    Citation Envoyé par DarkVader Voir le message
    Sleep n'est pas spécifique à VBScript ; elle est délivrée comme SleepEx par kernel32 : elle est donc utilisable sous VB6.
    Concernant Sleep, elle a le désavantage d'être bloquante
    ... contrairement à Wait de la librairie VB6i
    Oui mais dans ce cas il faut déclarer la fonction de l'API.

    Par contre
    Citation Envoyé par DarkVader Voir le message
    Sinon, tu es sur de ton code prog ?
    J'ai proposé écrit ce code de mémoire, sans vérifier.
    je commence à me faire vieux
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Public Sub RetarD(DureR As Single)
    DureR = Round((Timer + DureR), 2)
    Do While Timer < DureR: DoEvents: Loop
    End Sub
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : Italie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2014
    Messages : 46
    Points : 27
    Points
    27
    Par défaut
    nn le problème n'est pas dans sleep car j'ai fait la declaration a partir de lib kernel32 mais le problème est lors de l’exécution je vois un label qui affiche 3 directement alors que dès la fenetre doit affiché get ready d'abord dans Label3

  6. #6
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 415
    Points : 5 805
    Points
    5 805
    Par défaut
    lors de l’exécution je vois un label qui affiche 3 directement alors que ....
    Il faut savoir que le code est exécuté séquentiellement: une instruction à la fois. La feuille n'est affichée que si toutes les instructions de Form_Load sont exécutées et qu'en plus, la fonction Sleep interrompt toute exécution jusqu'à expiration du délai d'attente(2000 ms). Avant cette instruction, Label3 contient bien "Get ready" mais il n'est pas encore visible. Après(chargement de la feuille), il est visible(la forme est affichée) et affiche 3.
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
    Vous pouvez consulter mes contributions
    Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

  7. #7
    Membre éprouvé Avatar de DAUDET78
    Homme Profil pro
    retraité
    Inscrit en
    Janvier 2008
    Messages
    634
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 81
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2008
    Messages : 634
    Points : 1 161
    Points
    1 161
    Par défaut
    Citation Envoyé par l_autodidacte Voir le message
    Label3 contient bien "Get ready" mais il n'est pas encore visible.
    de l’intérêt de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Label3.Caption = "Get Ready"
    DoEvents

  8. #8
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 415
    Points : 5 805
    Points
    5 805
    Par défaut
    de l’intérêt de
    Envoyé par MSDN :
    DoEvents passe la main au système d'exploitation jusqu'à ce que ce dernier ait terminé de traiter les événements de sa file d'attente et que tous les codes de la file d'attente SendKeys aient été transmis.
    Donc ce que je disais .....et après plusieurs tests.
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
    Vous pouvez consulter mes contributions
    Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : Italie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2014
    Messages : 46
    Points : 27
    Points
    27
    Par défaut
    Citation Envoyé par l_autodidacte Voir le message
    Il faut savoir que le code est exécuté séquentiellement: une instruction à la fois. La feuille n'est affichée que si toutes les instructions de Form_Load sont exécutées et qu'en plus, la fonction Sleep interrompt toute exécution jusqu'à expiration du délai d'attente(2000 ms). Avant cette instruction, Label3 contient bien "Get ready" mais il n'est pas encore visible. Après(chargement de la feuille), il est visible(la forme est affichée) et affiche 3.
    votre explication est un peut claire mais comment corrigé sa et afficher Get Ready au debut

  10. #10
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 172
    Points
    17 172
    Par défaut
    Citation Envoyé par cabiste007 Voir le message
    bonsoir!!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub Form_Load()
    Call initializ
    Me.Refresh
    Label3.Caption = "Get Ready"
    Me.Refresh
    Sleep 2000
    Label3.Caption = "3"
    Timer1.Enabled = True
    Timer1.Interval = 1000
     
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub Form_Load()
    Call initializ
    Label3.Caption = "Get Ready"
    Me.Visible = True   '<----------- Demande d'affichage avant la fin du Load
    Me.Refresh  '<----------- je ne suis pas sur que cela soit utile
    Sleep 2000
    Label3.Caption = "3"
    ' perso je permuterai comme suit
    Timer1.Interval = 1000
    Timer1.Enabled = True
     
    End Sub
    Le code modifié n'a pas été essayé, (voir plus haut Aujourd'hui, 12h39)
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  11. #11
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : Italie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2014
    Messages : 46
    Points : 27
    Points
    27
    Par défaut
    merci tout le monde bour l'aide

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

Discussions similaires

  1. [XL-2003] Pourquoi cette macro ne fonctionne pas?
    Par Un Internaute dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 25/10/2014, 07h30
  2. Fonction mail ne fonctionne pas correctement
    Par yfchauer dans le forum Langage
    Réponses: 4
    Dernier message: 03/02/2014, 14h45
  3. Réponses: 7
    Dernier message: 23/08/2008, 11h34
  4. pourquoi cette fonction ne marche pas?
    Par kazannova dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 16/04/2008, 01h59
  5. [BCB5][FB1.5]Pourquoi cette commande ne fonctionne pas ?
    Par Sitting Bull dans le forum Débuter
    Réponses: 1
    Dernier message: 17/11/2004, 16h27

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