Format label compte à rebour

Temjeh

XLDnaute Accro
Supporter XLD
Bonjour et merci d'avance
J'ai ceci qui fonctionne.

Dans cell je met une valeur example 120.
Le label affiche le countdown jusqu'à 0.

Le problème est que j'aimerais le format minute et seconde.

Code:
For I = ActiveCell.Offset(0, 3).Value To 0 Step -1

        Application.Wait Now + TimeValue("00:00:01")
        Label1.Caption = I
 
    Next

Pas 120 ...119 ...118
Mais 1:59 ...1:58 ...1:57

Aussi avec ce code une fois démarré, impossible de l'arrêter? (bouton impossible)

Merci de votre aide
 
Dernière édition:

Modeste geedee

XLDnaute Barbatruc
Re : Format label compte à rebour

Bonsour®

VB:
Public Marche As Boolean

Sub Ellipse1_Clic()
Dim fin As Double
marche = Not marche
fin = Now + ([macell ] * TimeValue("00:00:01"))
With ActiveSheet.Label21
        While fin >= Now And marche = True
                .ForeColor = vbGreen
                '.Caption = Format(fin - Now, "mm:ss") ' ????? affichage 12:xx
                .Caption = Minute(fin - Now) & ":" & Format(Second(fin - Now), "00")
                DoEvents
        Wend
        .ForeColor = vbRed
End With
End Sub
Capture.JPG

NB:
ce code , aussi bien que le précédent (application.wait)
interdit l'exécution d'autres actions Excel
pour contourner ce handicap, il faut passer par des procédures ON TIME avec start et stop
 

Pièces jointes

  • Capture.JPG
    Capture.JPG
    30.7 KB · Affichages: 84
  • Capture.JPG
    Capture.JPG
    30.7 KB · Affichages: 85
Dernière édition:

job75

XLDnaute Barbatruc
Re : Format label compte à rebour

Bonjour Temjeh, xhudi69, Modeste geedee,

Code:
Sub Compte_à_rebours()
Static arret As Boolean
Dim i&, t#
If arret Then End
arret = True
For i = ActiveCell.Offset(0, 3) To 0 Step -1
  Label1 = Int(i / 60) & ":" & Format(i - 60 * Int(i / 60), "00")
  t = Timer + 1 'temporisation 1 seconde
  While Timer < t: DoEvents: Wend
Next
arret = False
End Sub
On peut affecter la macro à un bouton.

Une fois lancée, il suffit de la relancer pour arrêter le compte à rebours.

Bonne journée.
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : Format label compte à rebour

Re,

Si la macro est dans un UserForm l'instruction End le ferme puisqu'elle arrête toutes les macros en cours.

On peut évidemment éviter cette instruction :

Code:
Sub Compte_à_rebours()
Static marche As Boolean
Dim i&, t#
If marche Then marche = False: Exit Sub
marche = True
For i = ActiveCell.Offset(0, 3) To 0 Step -1
  Label1 = Int(i / 60) & ":" & Format(i - 60 * Int(i / 60), "00")
  t = Timer + 1 'temporisation 1 seconde
  While Timer < t: DoEvents: Wend
  If Not marche Then Exit For
Next
marche = False
End Sub
A+
 

Membres actuellement en ligne

Statistiques des forums

Discussions
312 756
Messages
2 091 735
Membres
105 060
dernier inscrit
DEDJAN Gaston