Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel
Excel Forum d'entraide sur Excel. Vos questions sur les fonctions, formules, manipulations, et tout sujet qui ne trouve pas sa place dans un sous-forum.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 31/05/2011, 13h33   #1
Invité de passage
 
Homme
Inscription : avril 2011
Messages : 14
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : avril 2011
Messages : 14
Points : 3
Points : 3
Par défaut Erreur : 50290 au changement de feuille quand des données arrivent en flux tendu

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
Quent4491 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/05/2011, 14h11   #2
Rédacteur/Modérateur
 
Avatar de jpcheck
 
Jean-Philippe ANDRÉ
Inscription : juillet 2007
Messages : 7 863
Détails du profil
Informations personnelles :
Nom : Jean-Philippe ANDRÉ
Âge : 28
Localisation : France

Informations forums :
Inscription : juillet 2007
Messages : 7 863
Points : 10 737
Points : 10 737
Envoyer un message via MSN à jpcheck
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
jpcheck est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/05/2011, 14h51   #3
Invité de passage
 
Homme
Inscription : avril 2011
Messages : 14
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : avril 2011
Messages : 14
Points : 3
Points : 3
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
Quent4491 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/06/2011, 00h06   #4
Membre régulier
 
Avatar de arosec
 
Homme
Chef de projet en SSII
Inscription : mai 2009
Messages : 50
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Marne (Champagne Ardenne)

Informations professionnelles :
Activité : Chef de projet en SSII
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : mai 2009
Messages : 50
Points : 99
Points : 99
Bonsoir,

La solution semble dangereuse:
Citation:
affiché en direct ligne par ligne dans un tableur excel
Le module de récupération de la liaison série devrait stocker les données dans un fichier spécifique (type csv, txt ou même mdb).
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,
arosec est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 01/06/2011, 09h18   #5
Invité de passage
 
Homme
Inscription : avril 2011
Messages : 14
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : avril 2011
Messages : 14
Points : 3
Points : 3
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
Quent4491 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/06/2011, 14h16   #6
Membre régulier
 
Avatar de arosec
 
Homme
Chef de projet en SSII
Inscription : mai 2009
Messages : 50
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Marne (Champagne Ardenne)

Informations professionnelles :
Activité : Chef de projet en SSII
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : mai 2009
Messages : 50
Points : 99
Points : 99
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,
arosec est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/06/2011, 15h20   #7
Invité de passage
 
Homme
Inscription : avril 2011
Messages : 14
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : avril 2011
Messages : 14
Points : 3
Points : 3
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 ^^)
Fichiers attachés
Type de fichier : zip MAP1000.zip (423,2 Ko, 3 affichages)
Quent4491 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/06/2011, 15h41   #8
Membre régulier
 
Avatar de arosec
 
Homme
Chef de projet en SSII
Inscription : mai 2009
Messages : 50
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Marne (Champagne Ardenne)

Informations professionnelles :
Activité : Chef de projet en SSII
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : mai 2009
Messages : 50
Points : 99
Points : 99
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,
arosec est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/06/2011, 15h56   #9
Invité de passage
 
Homme
Inscription : avril 2011
Messages : 14
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : avril 2011
Messages : 14
Points : 3
Points : 3
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"
lorsque l'appareil qui émet les données est en "Mode Mesure" sinon faut changer dans la ligne le "Mode Mesure" par "Mode Harmonique" parce qu'en fait je peux avec cette application programmer pas mal de chose sur l'appareil émetteur.

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 ...
Quent4491 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h39.


 
 
 
 
Partenaires

Hébergement Web