[Déplacé .Net --> VBA] ERREUR EXECUTION 50290

lasuede001 Messages postés 2 Date d'inscription mercredi 20 janvier 2010 Statut Membre Dernière intervention 20 janvier 2010 - 20 janv. 2010 à 09:41
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 - 20 janv. 2010 à 14:13
Bonjour,

j'ai développpé une macro excel qui permet de récupérer les données d'un baromètre via le port serie RS232 d'un PC.
J'ai crée un Userform avec des boutons pour démarrer l'acquisition et un module pour ma routine de traitement des données récupérer et l'affichage. Avec la commande MsComm event, j'attend que le baromètre envoie les données sur le port pour les récupérer et les traiter. A chaque nouvelle acquisition, j'enregistre le fichier sur le disque dur du PC (l'ensemble du code est disponible ci-dessous). Toutes les 10s le baromètre envoie la mesure sur le port serie.

L'ensemble fonctionne pendant quelques minutes et de façon aléatoire "une erreur d'exécution 50290" apparait ce qui bloque l'execution de la macro.

Si vous avez une idée pour comprendre et résoudre cette erreur, je suis preneur car je ne vois pas ce qui bloque !


CODE USER FORM:

Private Sub CommandButton1_Click()

'Vider le buffer
MSComm1.InBufferCount = 0
MSComm1.OutBufferCount = 0

'fixe la taille de la memoire tampon d'entrée à 2048 octets'
MSComm1.InBufferSize = 4096

'fixe la taille de la memoire tampon de sortie à 2048 octets'
MSComm1.OutBufferSize = 4096

'choisir un port série
MSComm1.CommPort = 2

' Indique au contrôle qu'il doit lire la totalité du tampon si la propriété Input est utilisée.
MSComm1.InputLen = 0

'paramétrage du port
MSComm1.Settings = "4800,E,7,1"

MSComm1.RTSEnable = False

MSComm1.RThreshold = 1

MSComm1.SThreshold = 1

MSComm1.Handshaking = 0

'ouvre le port
MSComm1.PortOpen = True

End Sub

--------------------------------------

Private Sub CommandButton2_Click()

'ferme le port
MSComm1.PortOpen = False

Unload Me
End Sub

--------------------------------

Public Sub MSComm1_OnComm()

'création de la variable tampon
Dim tampon As String

Select Case MSComm1.CommEvent
Case comEvReceive ' Si on reçoit des données
tampon = MSComm1.Input 'la variable tampon est remplie'
Call Traitement(tampon) ' Routine de traitement de l'affichage sous tableau excel'
End Select

End Sub
--------------------------------------------------

CODE MODULE :

Sub Traitement(tampon As String)

'activer la feuille excel
Feuil3.Visible = True

'affichage et mise en forme dans une cellule texte
ActiveSheet.Visible = True

Cells(2, 2).Value = tampon
Cells(3, 2).Value = tampon
Application.DisplayAlerts = False
Range("B3").Select
Selection.TextToColumns Destination:=Range("B3"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=False, Comma:=False, Space:=False, Other:=True, OtherChar _
:=" ", FieldInfo:=Array(Array(1, 9), Array(2, 9), Array(3, 9), Array(4, 9), Array(5, _
9), Array(6, 1), Array(7, 9)), TrailingMinusNumbers:=True

Range("E9").Select
ActiveCell.FormulaR1C1 = "=R[-6]C[-3]/10"
Application.DisplayAlerts = True
'affichage date et heure
Application.DisplayAlerts = False
Range("B9:C9").Select
Selection.ClearContents
Range("B9").Select
ActiveCell.FormulaR1C1 = "=NOW()"
Range("B9").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Selection.TextToColumns Destination:=Range("B9"), DataType:=xlFixedWidth, _
FieldInfo:=Array(Array(0, 4), Array(10, 9), Array(12, 1)), TrailingMinusNumbers _
:=True
Range("C9").Select
Selection.NumberFormat = "h:mm;@"
Application.DisplayAlerts = True

'sauvegarde du fichier
ActiveWorkbook.Save

'activer la feuille excel
Feuil3.Visible = True

End Sub
---------------------------



Merci d'avance de vos suggestion

Vivien

3 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
20 janv. 2010 à 12:31
Salut
L'erreur apparait sur quelle ligne ? (qui apparaitra si tu cliques sur Debug sur la fenêtre d'erreur)
Ensuite, tu feras une recherche de "vba error 50290" sur ton explorateur internet favori, et tu regarderas si qqun parle de cette erreur dans le même contexte que toi (nom de fichier, problème de date ...)

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
lasuede001 Messages postés 2 Date d'inscription mercredi 20 janvier 2010 Statut Membre Dernière intervention 20 janvier 2010
20 janv. 2010 à 12:54
En fait l'erreur apparait dans le CODE MODULE du traitement + affichage des données mais la ligne cible n'est jamais la même. C'est ça qui est ennuyeu!
J'ai déjà fait des recherches sur internet et fait des petites modif de mon code sans succès.
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
20 janv. 2010 à 14:13
Peut-être un problème de rapidité.
Essaye de mettre des DoEvents par-ci par-là.

Ajoute cette ligne par-ci par-là pour vérifier si les procédures ont bien le temps de se dérouler entre deux appels :
Par exemple :
dans la Sub OnComm : Debug.Print Time, "OnComm"
dans la Sub Traitement : Debug.Print Time, "Traitement"
etc, histoire de vérifier que Traitement est bien terminé avant d'avoir un nouveau OnComm
Cette heure et texte apparaitront dans la fenêtre de debug (Ctrl-G)

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
Rejoignez-nous