IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Excel Discussion :

Erreur : 50290 au changement de feuille quand des données arrivent en flux tendu


Sujet :

Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 18
    Points : 14
    Points
    14
    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

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 657
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 657
    Points : 34 350
    Points
    34 350
    Par défaut
    salut,

    y a-t-il possiblite d'ajouter dans le code de traitement un DoEvents ?

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 18
    Points : 14
    Points
    14
    Par défaut
    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

  4. #4
    Membre averti Avatar de arosec
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Mai 2009
    Messages
    167
    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 : 167
    Points : 324
    Points
    324
    Par défaut
    Bonsoir,

    La solution semble dangereuse:
    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,

  5. #5
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 18
    Points : 14
    Points
    14
    Par défaut
    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

  6. #6
    Membre averti Avatar de arosec
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Mai 2009
    Messages
    167
    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 : 167
    Points : 324
    Points
    324
    Par défaut
    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,

  7. #7
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 18
    Points : 14
    Points
    14
    Par défaut
    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 Fichiers attachés

  8. #8
    Membre averti Avatar de arosec
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Mai 2009
    Messages
    167
    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 : 167
    Points : 324
    Points
    324
    Par défaut
    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,

  9. #9
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 18
    Points : 14
    Points
    14
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 ...

Discussions similaires

  1. [AC-2003] erreur clé primaire lors de l'importation des données excel dans access
    Par makila64 dans le forum VBA Access
    Réponses: 3
    Dernier message: 29/06/2012, 13h43
  2. Réponses: 1
    Dernier message: 28/04/2008, 20h19
  3. Ecrire des donnes dans un flux xml
    Par jul-974 dans le forum ASP.NET
    Réponses: 1
    Dernier message: 02/06/2007, 02h48
  4. [RSS] extraction des données d'un flux
    Par toddy_101 dans le forum APIs
    Réponses: 4
    Dernier message: 23/02/2007, 18h28
  5. Extraire des données d'un flux (TStream)
    Par Sub0 dans le forum Delphi
    Réponses: 2
    Dernier message: 20/08/2006, 20h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo