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

 Delphi Discussion :

delai ouverture fichier excel


Sujet :

Delphi

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    223
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 223
    Points : 72
    Points
    72
    Par défaut delai ouverture fichier excel
    mon programme ouvre un fichier excel qui est lui même en relation par lien OLE avec un autre programme.
    puis je copie la colonne A dans le presse papier.
    le délai d'ouverture d'excel étant plus ou moins long, j'ai essayé ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    vXLWorkbooks := vMSExcel.workbooks;
            vXLWorkbook := vXLWorkbooks.Open('C:\monfichier.xls',vlink,vreadonly);
            sleep(1000); //laisse le temps de s'ouvrir
            try
                     vXLWorkbook.Worksheets[1].Range['A:A'].copy;     
            except
                     on Error: EOLEsyserror do             
            showmessage('rate');
            end;
    mais ça ne m'évite pas un plantage
    comment faire pour ne tenter la copie de la colonne que lorsqu'elle est accessible?
    merci pour votre aide
    Jean Pierre

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    223
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 223
    Points : 72
    Points
    72
    Par défaut
    pas de réponse... mon problème est peut etre insoluble ?
    ou alors y a t il un moyen détourné de connaitre le nombre de fenetre ouvertes dans microsoft office sans passer par le test dans excel?
    mais je ne connais pas.

  3. #3
    rsc
    rsc est déconnecté
    Membre éprouvé
    Avatar de rsc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 711
    Points : 918
    Points
    918
    Par défaut
    Puisque personne n'a d'idée, je peux t'en donner une générique : c'est de mettre ton try dans une boucle while :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Flag := False;
    while not Flag do
      try
        Application.ProcessMessages;
        vXLWorkbook.Worksheets[1].Range['A:A'].copy; 
        Flag := True;
      except
      end;
    end;
    Le Flag ne passant à True que si ton traitement a réussi, et le Application.ProcessMessages;
    étant là pour te permettre de prévoir de forcer ton Flag à True si tu veux sortir "en force" en cas de traitement trop long.
    Tu peux effectivement insérer un Sleep si tu veux ralentir ta boucle.
    Roland

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    223
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 223
    Points : 72
    Points
    72
    Par défaut
    merci pour cette réponse, mais ça ne peut pas fonctionner
    toute tentative de "copy" trop précoce se soldera par le message d'erreur et le plantage de l'application.
    l'utilisation du sleep est délicate car le temps d'accès varie enormément et je serais obligé de prendre une marge de sécurité trop importante

  5. #5
    rsc
    rsc est déconnecté
    Membre éprouvé
    Avatar de rsc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 711
    Points : 918
    Points
    918
    Par défaut
    Tu veux dire que le try n'intercepte pas l'erreur ?? Et donc que l'exécution s'arrête après erreur et ne passe pas dans le expect (message "Raté" dans ton code) ?
    Roland

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    223
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 223
    Points : 72
    Points
    72
    Par défaut
    exactement!

  7. #7
    rsc
    rsc est déconnecté
    Membre éprouvé
    Avatar de rsc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 711
    Points : 918
    Points
    918
    Par défaut
    Ca c'est ennuyeux

    Et si tu testes si ton vXlWorkBook est assigné ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if Assigned(vXlWorkBook)...
    ça donne quoi ?
    Roland

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    223
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 223
    Points : 72
    Points
    72
    Par défaut
    désolé, pas répondu plus tôt, j'étais au boulot
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
            pro :=vXLWorkbook.Worksheets[1];
            if   assigned( @pro)  then showmessage('pas ouvert');
    fait un plantage aussi...

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    223
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 223
    Points : 72
    Points
    72
    Par défaut
    ça me parait tout de même pas normal que le message 'raté' ne soit pas affiché dans mon code (cf plus haut).
    peut être que je gère mal l'erreur?

  10. #10
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 667
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 667
    Points : 6 996
    Points
    6 996
    Par défaut
    Citation Envoyé par potili2 Voir le message
    ça me parait tout de même pas normal que le message 'raté' ne soit pas affiché dans mon code (cf plus haut).
    peut être que je gère mal l'erreur?
    Peut-être que l'erreur déclanchée n'est pas une EOLEsyserror.
    Ratisse plus large avec un Exception.
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. ___ Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.3.2 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.1 Entreprise
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.4)

  11. #11
    rsc
    rsc est déconnecté
    Membre éprouvé
    Avatar de rsc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 711
    Points : 918
    Points
    918
    Par défaut
    Citation Envoyé par potili2 Voir le message
    désolé, pas répondu plus tôt, j'étais au boulot
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
            pro :=vXLWorkbook.Worksheets[1];
            if   assigned( @pro)  then showmessage('pas ouvert');
    fait un plantage aussi...
    On s'est mal compris. je me disais que peut-être vXLWorkBook n'était assigné qu'à la fin de l'ouverture, et je pensais donc à un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
            if   assigned (xXlWorkBook) 
     then  pro :=vXLWorkbook.Worksheets[1];
    ou peut-être une boucle du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while not assigned (vXlWorkBook) do;
    Roland

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    223
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 223
    Points : 72
    Points
    72
    Par défaut
    merci pour vos suggestions

    c'est bien une eolesyserror "l'appel a été rejeté par l'appelé"

    vXLWorkbooks est assigned dès le début (excel est ouvert au départ pour une autre application qui tourne en fond de tache)
    mais le test sur vXLWorkbook.Worksheets[1] déclenche l'erreur

    donc j'ai toujours pas de solution: ça me fait penser au principe de "Peter" je crois où le fait d'observer modifie le comportement du sujet...

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    223
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 223
    Points : 72
    Points
    72
    Par défaut
    je pense à un truc:
    mon problème est peut être plus complexe du fait que excel patiente en atendant l'ouverture du fichier de l'application reliée par OLE pour mettre à jour les données et peut être que Windows NE VEUT PAS que attente soit interrompue auquel cas il faudrait tester pour voir quand cette liaison OLE est ouverte ou non et là, ça devient difficile pour moi...

  14. #14
    rsc
    rsc est déconnecté
    Membre éprouvé
    Avatar de rsc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 711
    Points : 918
    Points
    918
    Par défaut
    Citation Envoyé par potili2 Voir le message
    vXLWorkbooks est assigned dès le début (excel est ouvert au départ pour une autre application qui tourne en fond de tache)
    mais le test sur vXLWorkbook.Worksheets[1] déclenche l'erreur
    Je ne parlais pas de vXLWorkbooks mais bien de vXLWorkbook. Si tu le mets à nil avant vXLWorkbook := vXLWorkbooks.Open..., je suppose qu'il restera à nil jusqu'à ce que ton nouveau classeur soit ouvert, d'où mon idée.
    Roland

  15. #15
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    223
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 223
    Points : 72
    Points
    72
    Par défaut
    ok
    je teste ça ce soir (je peux pas interrompre mon programme en cours de journée).
    merci.
    Jean Pierre
    PS ça fait plaisir de voir que je suis pas le seul "vieux" sur ce forum!

  16. #16
    rsc
    rsc est déconnecté
    Membre éprouvé
    Avatar de rsc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    711
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 73
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 711
    Points : 918
    Points
    918
    Par défaut
    On n'est pas vieux, on est simplement jeunes depuis plus longtemps que les autres
    Roland

  17. #17
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    223
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 223
    Points : 72
    Points
    72
    Par défaut
    finalement ça ne fonctionne pas non plus
    workbook devient assigned immediatement et l'acces à workbooks pour test assigned plante tout.
    faut chercher autrement, mais je sais pas où!
    PS: mon grand père disait "j'ai quatre fois vingt ans"

  18. #18
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    223
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 223
    Points : 72
    Points
    72
    Par défaut
    bon j'ai tourné la difficulté en regardant quand l'envoi des données était terminé dans l'application de départ.
    pas satisfaisant pour l'esprit.
    si quelqu'un a une solution générale, ce serait super.
    Jean Pierre

Discussions similaires

  1. pb d'ouverture fichier excel
    Par Phiss dans le forum ASP
    Réponses: 14
    Dernier message: 20/11/2006, 14h41
  2. [VBA-E] cacher l'ouverture fichier excel barre des taches
    Par icicmoi dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 18/05/2006, 17h39
  3. Ouverture fichier excel
    Par licorne dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 10/04/2006, 16h50
  4. Réponses: 1
    Dernier message: 26/01/2006, 18h16
  5. activation macro lors d'une ouverture fichier Excel
    Par mirumoto dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 12/05/2005, 15h08

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