|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : avril 2011 Messages : 14 ![]() |
Bonjour à tous,
Je travaille toujours sur le même projet pour ceux qui m'ont déjà lu. L'erreur dont je ne trouve pas la solution si situe ici à l'affichage des données que je reçois. Le contexte : Une partie de mon projet sert à récupérer des données d'une liaison série. Mon programme récupère donc par évènement et jusqu'à 3fois par seconde une série de données qui est ensuite traité et affiché en direct ligne par ligne dans un tableur excel. Le problème : Mon programme fonctionne très lorsque je reste statique sur une feuille lors de la réception de données ou lorsque je change de feuille entre deux saisies de données. Seulement voilà lorsque je reçois 3série de données par seconde, il est difficile de reussir à changer de feuille entre deux séries... J'aimerais donc pouvoir changer de feuille à n'importe quel moment sans que cette erreur apparaisse : Erreur d'exécution '50290': Erreur définie par l'application ou par l'objet. Je remercie d'avance ceux qui liront ce post et encore plus ceux qui aurait des idées sur l'origine du problème. PS : Après avoir essayé de reproduire mon problème dans un exemple en dehors de mon projet, je peux vous passer une partie de mon projet puisque je n'y suis pas arrivé. A savoir que mon projet fonctionnera uniquement sur les PC disposant de NETComm32 Merci d'avance, Quentin |
|
|
00
|
|
|
#2 |
![]() ![]() |
salut,
y a-t-il possiblite d'ajouter dans le code de traitement un DoEvents ?
__________________
Pas de question technique par MP, je ne réponds pas ![]() Mon perso ? Une vraie brute Tutos Access, Tâches planifiées et Batch,Tables de Paramètres sous Access, Excel et Batch, Tâches planifiées et Access |
|
00
|
|
|
#3 |
|
Invité de passage
![]() Inscription : avril 2011 Messages : 14 ![]() |
Bonjour,
Je n'ai pas l'habitude d'utiliser les DoEvents donc je sais pas pourquoi je ne pourrais pas ou pourquoi je pourrais. Sachant que ce que je traite s'apparente a du temps réel et que de ce que j'ai lu le DoEvents arrète l'execution de ce qu'il est entrain de faire pour traiter un autre evenement (changement de feuille par exemple c'est ça ?). L'arrêt et le temps réel de ce que je sais ne font pas très bon ménage... Après je sais pas si c'est là que tu voulais en venir. J'attend le fond de ton idée. Et je peux toujours essayer de placer un DoEvents si tu m'explique un peu mieux que ce que j'ai vu sur sa fonction et où le placer à peu près selon toi |
|
|
00
|
|
|
#4 | |
|
Membre régulier
![]() Chef de projet en SSII Inscription : mai 2009 Messages : 50 ![]() |
Bonsoir,
La solution semble dangereuse: Citation:
Le fichier Excel devrait ensuite intéroger ce fichier (via requête par exemple) à la demande de l'utilisateur ou à l'activation d'un onglet... Le mélange "temps réel", "base de données", "interface utilisateur" semple périeuse au final et l'erreur rencontrée le prouve... ![]() Cdt, |
|
|
|
10
|
|
|
#5 |
|
Invité de passage
![]() Inscription : avril 2011 Messages : 14 ![]() |
Bonjour,
Pourrais-tu m'expliquer quel serait l'intérêt de passer par un intermédiaire tel que le stockage dans un fichier texte au préalable ? Ce que je ne comprend pas c'est que je récupère une trame via la procédure NETComm_OnComm de l'ocx NETComm32 si tu connais et ensuite ya une macro de traitement/mise en forme puis une macro pour l'affichage, alors pourquoi selon toi je devrais me rajouter une étape de stockage dans un fichier texte puisque je devrais quand même scruter jusqu'à 3fois par seconde ce fichier ? et que donc selon moi mon problème ne disparaitrait pas avec cette solution En attente de plus d'explication, Cdt Quentin |
|
|
00
|
|
|
#6 |
|
Membre régulier
![]() Chef de projet en SSII Inscription : mai 2009 Messages : 50 ![]() |
Bonjour,
Par principe, je n'aime pas mélanger les genres... Pour ma part, j'aurais fait un module VBS autonomme pour récupérer les données séries. Ce module serait presqu'un copier/coller de ta macro dans un fichier vbs. Il faudra juste adapter le stockage de l'information (non plus dans Excel mais dans un fichier txt unique à chaque fois par exemple ou alimentation d'une base acces ou génération d'un xml...) ET ensuite Excel comme interface utilisateur... L'intégration des données dans Excel pourrait se faire qu'à le demande de l'utilisateur (click bouton dans Excel ou lors du déclenchement d'un évènement comme le changement d'onglet). CAR Je n'ai pas le détail mais il est très rare qu'une personne normalement constituée analyse un onglet Excel 3 fois par seconde ![]() SINON si tu es certain que l'architecture de ton application est la bonne ou que tu ne puisses ou veuilles pas la changer,..., Peux-tu me montrer ta macro d'intégration des données "série" dans ton fichier Excel? Cdt, |
|
|
00
|
|
|
#7 |
|
Invité de passage
![]() Inscription : avril 2011 Messages : 14 ![]() |
Merci de ta réponse, et pour tout te dire, j'ai appris à me servir de VBA il y a uniquement 6 semaines... pour cette seule et même application et à vrai dire à l'époque j'ai pas vraiment réfléchi à l'architecture de mon application et je suis plutôt parti sur ce qu'il m'a paru le mieux à première vu. Mais au final, pour un débutant comme moi, elle fonctionne plutôt pas mal et y'aurait quelques truc qui m'embéterai avec ta solution. A savoir, avec ce que j'ai commencé à développer je peux créer et afficher des graphiques en direct.
Puisqu'en fait les données que je reçois sont du type puissance électrique, harmonique et j'en passe ... Et il est interessant de voir par exemple les pics de puissance graphiquement ou bien l'évolution des harmoniques. Donc je préférerais si possible garder l'architecture globale de ce que j'ai fait et je te propose de t'envoyer mon projet ou un bout mais je comprendrais qu'il te fasse fuir... Parce que je développe un peu au "feeling" et au fur et à mesure que j'avance je découvre des nouveaux trucs avec VBA qui m'aurait simplifier la vie au départ et tout du coup je me retrouve avec un code un peu "fouilli"... ^^ M'enfin si tu te penches dessus je t'en remercie d'avance PS: Ci-joint mon projet + extrait de celui-ci la partie du code comportant la réception et l'affichage des données (No comment sur la qualité du code :p ^^) |
|
|
00
|
|
|
#8 |
|
Membre régulier
![]() Chef de projet en SSII Inscription : mai 2009 Messages : 50 ![]() |
Il y a effectivement du monde dans ton fichier
Peux tu m'indiquer la ligne qui plante? (Pour la trouver, tu peux exécuter ton code en mode pas à pas en utilisant la touche F8 dans le VBA et/ou mettre des points d'arrêt dans ton code en cliquant dans la marge grise à la gauche de ton code VBA) Cdt, |
|
|
00
|
|
|
#9 |
|
Invité de passage
![]() Inscription : avril 2011 Messages : 14 ![]() |
Oui il y a un peu de monde mais qui je pense pourrait être bien moins nombreux avec quelqu'un de plus calé que moi
la ligne qui plante c'est celle dans la procédure NETComm_OnComm et c'est la ligne Code :
WorkSheets("Mode Mesure").Cells(1,1).Value = "Nombre de mesures" Je reprécise également que cette erreur ne se produit pas nécessairement à chaque fois que lors de l'acquisition de mesure je veux changer de feuille. Des fois ça passe comme ça "casse". Je pense donc que cette erreur se produit si au moment ou je veux changer de feuille la macro est entrain d'exécuter une ligne de code du style de celle dite précédemment. Donc cette erreur quand je reçois 3 trames par secondes apparait assez souvent alors que si je programme mon appareil pour obtenir des données toutes les 10 secondes les chances que je me retrouve avec cette erreur seront très faibles ... |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com