Bonjour à tous,
Avant toute chose, je précise que je suis débutant.
Voici mon problème, je désir récupérer des données provenant d’une balance (paramètre : bauds 9600, parité aucune, bits de données 8, Bits d’arrêt 1).
Le but est de faire une série de 18 mesures, pour faire une courbe et ensuite d’effacer ces données pour pouvoir refaire une série.
J’arrive à communiqué avec la balance, mais je suis obligé de passé par une UserForm. Lorsque je valide « OK » avec la MsgBox , la première valeur est correcte, mais si je revalide « OK » celle-ci n’est pas toujours correcte. Je suis obligé de faire « Cancel » et de relancer les étapes.
J’aimerai savoir, si je suis obligé de passer par une UserForm ?
Ou quel est le code pour empêcher la MsgBox à réapparaître après la 1er mesure ?
Comment faire une série de 18 mesures, puis revenir à la 1ère ?
Je vous joins le code que j’applique :
Je vous remercie d’avance
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 Private Sub CommandButton1_Click() 'Vider le buffer MSComm1.InBufferCount = 0 'Choisir un port série MSComm1.CommPort = 1 '1 est le n° de port 'Paramétrage du port; les valeurs sont fournies par le constructeur de l'appareil. 'les valeurs :bauds, parité, bits de données, bit d'arrêt MSComm1.Settings = "9600,n,8,1" 'Ouvre le port MSComm1.PortOpen = True 'Lecture de la trame Dim Reponse As Variant, Msg$, Pds$ On Error Resume Next: Err.Clear Do Reponse = MsgBox("Appuyer sur OK" & vbCrLf & Msg$, vbOKCancel, "Lire la valeur") If Reponse <> vbOK Then Exit Do MSComm1.InputLen = 20 Msg$ = MSComm1.Input: If Err Then Exit Do T! = Timer: While Abs(Timer - T) < 0.3: DoEvents: Wend 'delay Pds$ = Mid(Msg$, 11, 4) ActiveCell.Value = Pds$ 'colle le poids dans la cellule active ActiveCell.Offset(1, 0).Activate 'cellule suivante Loop 'Ferme le port MSComm1.PortOpen = False End Sub
Partager