Compte à rebours dans un userform avec conditions
Bonjour,
Dans mon dossier "Concours hippique", j'ai un userform1 qui gére les données de la compétition.
Dans ce userform j'ai déja un chrono pour le tour et je souhaite ajouter un compte à rebours de 45s à 0s qui va s'afficher sur mon label chrono2
Voici sa fonction :
Le cavalier se présente devant le juge si ok le juge lance une sonnerie " ici macro Son3 "
ici par CommandButton10_Click() et cela doit donc déclencher automatiquement ma macro Son3 "sonnerie" ainssi que le départ de mon compte à rebour.
Ensuite le cavalier a 45s pour prendre le départ
2 conditions :
1/ Il prend le départ avant la fin du compte à rebours alors
Automatiquement compte à rebours a 0 et lance le chrono tour ici par BTN_Depart_Click() de mon userform1
2/ Il prend le départ aprés le 00:00: alors "éliminé" et donc les boutons du chrono enable et report donnée en
Range("Y" & Ligne) = 100
Range("AA" & Ligne) = "Eliminé(e)"
En fin de tour RAZ par BTN_RAZ_Click()
Voila mon usine à gaz
Mes codes
Userform
Private fin_chrono As Long
Public EpreuveAdresse As String
Public EpreuveNom As Variant
Private Sub BTN_Annule_Click()
Unload Me
End Sub
Private Sub BTN_Copie_resultat_Click()
Dim Ligne As Long
Dim Point As Integer
Dim L As Integer
Point_obstacle = 0
Point_Refus = 0
Ligne = [B65536].End(xlUp).Row + 1
Range("AB" & Ligne) = Chrono.Caption ' Chrono
Range("A" & Ligne) = Liste_cavalier ' cavalier
Range("AW25") = Liste_cavalier
Range("B" & Ligne) = Cheval ' Cheval
Range("C" & Ligne) = Ecurie ' Ecurie
'=== Decompte des points=======
'========== Points fautes obstacles
If UserForm1.Obstacle_1 = True Then
Range("D" & Ligne) = 4
End If
If UserForm1.Obstacle_2 = True Then
Range("E" & Ligne) = 4
End If
If UserForm1.Obstacle_3 = True Then
Range("F" & Ligne) = 4
End If
If UserForm1.Obstacle_4 = True Then
Range("G" & Ligne) = 4
End If
If UserForm1.Obstacle_5 = True Then
Range("H" & Ligne) = 4
End If
If UserForm1.Obstacle_6 = True Then
Range("I" & Ligne) = 4
End If
If UserForm1.Obstacle_7 = True Then
Range("J" & Ligne) = 4
End If
If UserForm1.Obstacle_8 = True Then
Range("K" & Ligne) = 4
End If
If UserForm1.Obstacle_9 = True Then
Range("L" & Ligne) = 4
End If
If UserForm1.Obstacle_10 = True Then
Range("M" & Ligne) = 4
End If
If UserForm1.Obstacle_11 = True Then
Range("N" & Ligne) = 4
End If
If UserForm1.Obstacle_12 = True Then
Range("O" & Ligne) = 4
End If
'======== POINTS REFUS
If UserForm1.refus_1 = True Then
Range("P" & Ligne) = 4
End If
If UserForm1.refus_2 = True Then
Range("Q" & Ligne) = 4
End If
'======= REFUS 3 100 point éliminé
If UserForm1.refus_3 = True Then
Range("R" & Ligne) = 100
Range("AA" & Ligne) = "Eliminé(e)"
End If
'======== CHUTE Elimination
If UserForm1.Chute_1 = True Then
Range("S" & Ligne) = 100
Range("AA" & Ligne) = "Eliminé(e)"
End If
'========== FAUTES Techniques
If UserForm1.Faute_Tech_1 = True Then
Range("T" & Ligne) = 4
End If
If UserForm1.Faute_Tech_2 = True Then
Range("U" & Ligne) = 4
End If
If UserForm1.Faute_Tech_3 = True Then
Range("V" & Ligne) = 4
End If
If UserForm1.Faute_Tech_4 = True Then
Range("W" & Ligne) = 4
End If
If UserForm1.Faute_Tech_5 = True Then
Range("X" & Ligne) = 4
End If
If UserForm1.Faute_Tech_Elimine = True Then
Range("Y" & Ligne) = 100
Range("AA" & Ligne) = "Eliminé(e)"
End If
'======== TRIE en sortant============
'Dim L As Integer
L = Range("A65536").End(xlUp).Row
Range("A4:AB" & L).Select
If Range("A4").Value = "" Then
MsgBox ("Pas de Participants")
Else
Selection.Sort Key1:=Range("Z4"), Order1:=xlAscending, Key2:=Range("AB4"), Order2:=xlAscending
If Range("A4") = Range("AW25") Then
Call Son4
End If
End If
End Sub
Private Sub BTN_Depart_Click()
CumulTimer = 0
GoTimer = Timer
'Précision de IntervalT à adapter selon possibilités d'affichage
TimerOn IntervalT:=50 'en millièmes de seconde
BTN_Depart.Enabled = False
BTN_Reprendre.Enabled = False
BTN_Fin.Enabled = True
BTN_Pause.Enabled = True
End Sub
Private Sub BTN_Pause_Click()
TimerOff
CumulTimer = CumulTimer + (Timer - GoTimer)
BTN_Pause.Enabled = False
BTN_Reprendre.Enabled = True
End Sub
Private Sub BTN_Reprendre_Click()
GoTimer = Timer
TimerOn IntervalT:=50 'en millièmes de seconde
BTN_Pause.Enabled = True
BTN_Reprendre.Enabled = False
End Sub
Private Sub BTN_Fin_Click()
TimerOff
BTN_Depart.Enabled = True
BTN_Pause.Enabled = False
BTN_Reprendre.Enabled = False
BTN_Fin.Enabled = False
'MsgBox "Le chrono est de : " & Chrono.Caption & vbLf & vbLf & "Attention: cette valeur n'est pas numérique (= chaine de caractères) !"
End Sub
Private Sub CommandButton6_click()
End Sub
Private Sub Concurent_Click()
End Sub
Private Sub Label7_Click()
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
TimerOff
End Sub
'Private Sub BTN_Depart_Click() ' Depart du Chrono
'Dim DEPART As Double
'Dim Temps As Double
'BTN_Depart.Enabled = False
'fin_chrono = 0
'DEPART = [now()]
'Do While fin_chrono = 0
'Temps = [now()] - DEPART
'If CheckBox1 = False Then
'Chrono.Caption = WorksheetFunction.Text(Temps, "hh:mm:ss.00")
'Else
'Chrono.Caption = WorksheetFunction.Text(Temps, "hh:mm:ss")
'End If
'DoEvents
'Loop
'End Sub
'Private Sub BTN_Fin_Click() 'Arrete le Chrono
'FIN
'End Sub
'==== SI CHUTE Arrete le Chrono
Private Sub Chute_1_Click() 'Case chute clic arrete le chrono
FIN
End Sub
'==== SI FAUTE Elimine Arrete le Chrono
Private Sub Faute_Tech_Elimine_Click() 'Case Faute tech elimine clic arrete le chrono
FIN
End Sub
'==== SI 3 refus Arrete le Chrono
Private Sub refus_3_Click() 'Case Refu 3 clic arrete le chrono
FIN
End Sub
Function FIN()
TimerOff
BTN_Depart.Enabled = True
BTN_Pause.Enabled = False
BTN_Reprendre.Enabled = False
BTN_Fin.Enabled = False
End Function
Private Sub Liste_cavalier_Change()
Dim EpreuveColonneCheval As String
Dim EpreuveColonneClub As String
Dim EpreuveColonneNuméro As String
'Dim EpreuveNom As Variant
EpreuveNom = ActiveWorkbook.ActiveSheet.Name
EpreuveColonneCheval = EpreuveNom & "!AE" 'Affiche le nom du cheval
EpreuveColonneClub = EpreuveNom & "!AF" 'Affiche le non du club
EpreuveColonneNuméro = EpreuveNom & "!AG" 'Affiche le Numéro
If Liste_cavalier.ListIndex = -1 Then Exit Sub
Me.Cheval.Value = Range(EpreuveColonneCheval & Liste_cavalier.ListIndex + 2)
Me.Ecurie.Value = Range(EpreuveColonneClub & Liste_cavalier.ListIndex + 2)
Me.Numéro.Value = Range(EpreuveColonneNuméro & Liste_cavalier.ListIndex + 2)
End Sub
Private Sub userForm_Initialize()
Dim T_limite As Double
Dim T_depasse As Double
'Dim EpreuveAdresse As String
'Dim EpreuveNom As Variant
Me.Liste_cavalier.ColumnCount = 3 'affecte 3 colonnes à la liste
Me.Nom_Epeuve = ActiveWorkbook.ActiveSheet.Name 'Affiche le nom de l'epreuve dans le Formulaire
EpreuveNom = ActiveWorkbook.ActiveSheet.Name 'Range("A1").Value
EpreuveAdresse = EpreuveNom & "!AD2:AF9" 'position de la liste
'MsgBox (EpreuveAdresse)
'========= Alimentation de la liste
Me.Liste_cavalier.RowSource = EpreuveAdresse & Sheets(EpreuveNom).Cells(1, 1).End(xlDown).Row
Me.Liste_cavalier.ColumnWidths = "130;75;60" 'Dimention des colone dans la liste
Me.Liste_cavalier.ListIndex = 0 ' affiche les données de la ligne 1
T_depasse = Sheets("Paramétres").Range("B2").Value
Me.Temps_depasse.Caption = WorksheetFunction.Text(T_depasse, "mm:ss.00")
T_limite = Sheets("Paramétres").Range("C2").Value
Me.Temps_limite.Caption = WorksheetFunction.Text(T_limite, "mm:ss.00")
T_Départ = Sheets("Paramétres").Range("D2").Value
Me.Temps_avant_départ.Caption = WorksheetFunction.Text(T_Départ, "mm:ss.00")
With Me
.StartUpPosition = 3
.Width = Application.Width
.Height = Application.Height
.Left = 0
.Top = 0
End With
End Sub
Private Sub CommandButton10_Click()
Call Son3
End Sub
Private Sub CommandButton11_Click()
Call Son4
End Sub
Private Sub BTN_RAZ_Click()
TimerOff
Chrono.Caption = "00:00:00"
Dim Ctrl As Control, TheNum As Byte
For Each Ctrl In Me.Controls
If TypeOf Ctrl Is MSForms.CheckBox Then
With Ctrl
.Value = False
End With
End If
Next Ctrl
End SubModule timer
Option Explicit
Private Declare Function SetTimer Lib "User32" (ByVal hWnd As Long, _
ByVal nIDEvent As Long, ByVal uElapse As Long, _
ByVal lpTimerFunc As Long) As Long
Private Declare Function KillTimer Lib "User32" (ByVal hWnd As Long, _
ByVal nIDEvent As Long) As Long
Dim TimerID As Long
Public GoTimer As Single, CumulTimer As Single
Sub TimerOff()
'Timer désactivé
KillTimer 0, TimerID
End Sub
Sub TimerOn(IntervalT As Long)
'Timer actif
TimerID = SetTimer(0, 0, IntervalT, AddressOf Chrono)
End Sub
Sub Chrono()
Dim T As String
Dim h As Single
'MAJ de l'afficheur Chrono
h = Round(CumulTimer + (Timer - GoTimer), 2)
T = Format(TimeSerial(0, 0, h), "nn:ss")
With UserForm1
If Not .chk10em.Value Then 'Affichage centième CheckBox1
T = T & "." & Format(Int((h - Int(h)) * 100), "00")
End If
.Chrono.Caption = T
End With
End SubVoila j'ai essayer de vous expliquer au mieux mon besoin
Merci pour votre aide
Hello tout le monde,
Joins ton fichier si tu peux...
Bonjour,
Je ne souhaite pas envoyer tout mon fichier, car j'ai déja été victime de récupération d'un de mes fichiers qui, par la suite a été modifier et vendu
En ce qui me concerne ce n'est pas le cas, juste une utilisation dans mon club
J'èspere que vous pourrez m'aider avec les codes que je vous mets sur le forum
Merci pour votre aide
Cordialement
Hello,
Soit, je comprends.
En revanche je ne vais pas pouvoir continuer à vous aider.