Bonjour à tous,
Je suis étudiant et j'ai un petit soucis. J'ai commandé une carte avec deux relais que je souhaite piloter via VBA.
Je souhaite que l'utilisateur entre une tempo et que celle-ci active et désactive à tour de rôle mes deux relais.

J'arrive à caler une tempo qui marche mais l'utilisateur ne peut pas la choisir. En voici le programme (en rouge ma tempo) :

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
Private Sub Lancer_Click()
Lancer.Enabled = False
Arreter.Enabled = True

Arret = True
x = 1
Do While x < 10000000000#
    If (phid.OutputState(0) = False) Then
        phid.OutputState(0) = True
    Else
        phid.OutputState(0) = False
    End If
    Application.Wait (Now + TimeValue("00:00:02"))
    If (phid.OutputState(1) = False) Then
        phid.OutputState(1) = True
    Else
        phid.OutputState(1) = False
    End If
    If Arret = False Then
    phid.OutputState(0) = False
    phid.OutputState(1) = False
    Arreter.Enabled = False
    Lancer.Enabled = True
    
        Exit Do
    End If
x = x + 1
DoEvents
Loop
End Sub
J'ai alors consulté l'aide de VBA et modifié ma tempo de la sorte seulement le programme plante (pas de tempo et impossible de l'arrêter) :

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
Private Sub Lancer_Click()
Lancer.Enabled = False
Arreter.Enabled = True
newHour = Hour(Now())
newMinute = Minute(Now())
newSecond = Second(Now()) + a '(avec a=TextBox1.text pour récupérer la tempo utilisateur)
WaitTime = TimeSerial(newHour, newMinute, newSecond)

Arret = True
x = 1
Do While x < 10000000000#
    If (phid.OutputState(0) = False) Then
        phid.OutputState(0) = True
    Else
        phid.OutputState(0) = False
    End If
    Application.Wait WaitTime
    If (phid.OutputState(1) = False) Then
        phid.OutputState(1) = True
    Else
        phid.OutputState(1) = False
    End If
    If Arret = False Then
    phid.OutputState(0) = False
    phid.OutputState(1) = False
    Arreter.Enabled = False
    Lancer.Enabled = True
    
        Exit Do
    End If
x = x + 1
DoEvents
Loop
End Sub
Pouvez-vous m'aider s'il vous plaît ?

Cordialement

Guillaume