Erreur d'execution 50290

jeanlaracine

XLDnaute Nouveau
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. Cette erreur cible sur une ligne du CODE MODULE de traitement des données mais le truc c'est que ce n'est pas la même ligne à chaque fois...
En appronfondissant un peu, il s'avère qu'il n'y a aucun problème si je n'utilise pas le PC. Dès que je fait autre chose en parallèle, ça plante.

Je pense peut-être que cela vient que la fenêtre active n'est pas celle d'Excel...à voir...Comment garder la fenêtre Excel active (tout en restant réduite dans la barre de tâche) au moment de l'éxécution du code? C'est peut être une piste...:confused:

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


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
 

PMO2

XLDnaute Accro
Re : Erreur d'execution 50290

Bonjour,

A tout hasard, essayez le code suivant

Code:
Sub Traitement(tampon As String)
Dim S As Worksheet

'activer la feuille excel
Feuil3.Visible = True

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

S.Cells(2, 2).Value = tampon
S.Cells(3, 2).Value = tampon
Application.DisplayAlerts = False
 
S.Range("B3").TextToColumns Destination:=S.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

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

'sauvegarde du fichier
ActiveWorkbook.Save

'activer la feuille excel
Feuil3.Visible = True

End Sub

L'idée est d'éviter toute sélection. N'étant pas en situation de pouvoir tester le bon fonctionnement de ce code il faudra certainement l'aménager.

Cordialement.

PMO
Patrick Morange
 

jeanlaracine

XLDnaute Nouveau
Re : Erreur d'execution 50290

pas d'amélioration, merci quand même

en fait, j'ai l'impression que l'erreur cible sur la 1ère ligne du CODE MODULE de traitement des données quelles qu'elle soit dès que j'utilise une autre fenetre que le classeur excel.
N'y aurait-il pas une fonction pour activer le classeur excel ainsi que la feuille à chaque début de traitement de donnée?

merci d'avance
 

Discussions similaires

Réponses
1
Affichages
168

Statistiques des forums

Discussions
312 236
Messages
2 086 481
Membres
103 232
dernier inscrit
logan035