Faire un compte à rebours

Mr_Skkay Messages postés 81 Date d'inscription   Statut Membre Dernière intervention   -  
 Yoda -
Salut, j'aimerai faire un compte à rebours en Visual Basic, j'ai réussi à en faire un mais pas comme je veux :
Le miens décompte seulement les secondes, c'est à dire que j'entre "x" secondes, puis il fait -1, jusqu'à 0.

Ce que j'aimerai faire, c'est un compte à rebours comme ça :
J'entre "x" heures, "x" minutes, "x" secondes, et qu'il me disent combien d'heures, minutes, secondes il me reste. Mais je ne vois pas trop comment faire... :/

Pour ceux qui sont là parce qu'il recherche comment en faire un qui décompte que les secondes, moi j'ai fait :

Une textBox1 : "j'écris le nbre de secondes"

Un bouton : "je mets le texte de la textBox dans le label1"
-> Label1.Text = TextBox1.Text

Un bouton : "qui démarre le timer"
-> Timer1.Enabled = True

Le timer (avec 1000ms d'intervalle), et dedans je mets :
-> Label1.Text = Label1.Text - 1
If Label1.Text = 0 Then
Timer1.Stop()
End If

Voilà.
Désoler je ne sais pas si il y a, et comment utiliser la balise pour le code.

1 réponse

  1. Yoda
     
    Salut,

    Pour réaliser ton compte à rebours, il suffit de gérer les heures minutes et secondes.

    'Variables globales
    Dim HR As Integer, MN As Integer, SC As Integer
    'Initialisation
    HR = Val(heures.Text): MN = Val(minutes.Text): SC = Val(secondes.Text)


    dans la procedure timer.tick
    SC = SC - 1
    If SC = -1 Then
    SC = 59
    MN = MN - 1
    End If

    If MN = -1 Then
    MN = 59
    HR = HR - 1
    End If

    'affichage dans les labels
    lb_HR.Caption = Format(HR, "00")
    lb_MN.Caption = Format(MN, "00")
    lb_SC.Caption = Format(SC, "00")

    'verifier sil le decompte est terminé
    If HR = 0 And MN = 0 And SC = 0 Then
    'arreter le timer
    Timer1.Stop
    MsgBox "Temps écoulé"
    End If
    End Sub


    A+
    0
    1. Mr_Skkay Messages postés 81 Date d'inscription   Statut Membre Dernière intervention   53
       
      Ouais super ! :D

      Juste pour les variables, j'avais des erreurs :
      "Erreur 1 'SC' n'est pas déclaré. Il peut être inaccessible en raison de son niveau de protection."
      Je sais pas trop pourquoi, mais j'ai remplacé les variables par les noms des labels, et ça marche parfaitement !
      Merci
      0
    2. Mr_Skkay Messages postés 81 Date d'inscription   Statut Membre Dernière intervention   53
       
      Et au passage, c'est possible, si oui comment, d'autoriser seulement l'écriture des chiffres dans des textBoxs ?

      Edit : Sinon utilisez des NumericUpDown ! Ils sont même mieux :p
      0
      1. Yoda > Mr_Skkay Messages postés 81 Date d'inscription   Statut Membre Dernière intervention  
         
        Salut,

        Pour l'erreur d'accès aux variables, il faut déclarer les variables globales dans un module (et non dans l'UserForm) afin quelles soient "visibles" dans tout le projet.

        En ce qui concerne la saisie des nombres dans un textbox, il faut gérer l'évènement Keypressed.

        Mais à ton niveau, il vaut mieux contrôler le contenu des textbox après saisie; par exemple pour les minutes:
        If Val(minutes.Text) < 0 Or Val(minutes.Text) > 59 Then
        MsgBox "Saisissez un nombre compris entre 0 et 59"
        minutes.SetFocus
        Exit Sub
        End If


        A+
        0