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 :

Fermeture Excel Objet Automation


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 52
    Par défaut Fermeture Excel Objet Automation
    Bonjour,
    Dans un programme, j'ouvre une feuille excel que l'utilisateur modifie et enregistre. Je souhaiterai connaitre un evenement qui me signale que le fichier est fermé.

    J'ouvre le fichier de cette facon:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
      TRY
          OleApp := CreateOleObject('excel.Application');
     
         if ListeDesDocuments[i].FORMAT = 'XLS' Then Begin
     
              OleApp.Workbooks.Open(ListeDesDocuments[i].Dir,Unassigned,LectureSeule);
     
     
         End else
            OleApp.Workbooks.Add;
     
         OleApp.WindowState :=  -4137;
         OleApp.visible := True;
    EXCEPT
         oleapp.quit;
         ShowMessage('Commande non interpretée dans Excel');
    END;

    On ne peut pas redéfinir un evenement du type OleApp.OnExit, car cela n'est pas possible avec les objets COM. Mais cela est très flou pour pour et je ne trouve pas de document m'aidant à comptendre pourquoi.
    (malgré la faq "Gestion d'événements Automation sous Delphi" de L.Dardenne)

    merci pour toute piste

    Eric

  2. #2
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Billets dans le blog
    1
    Par défaut
    Salut,
    as-tu essayé avec
    WorkbookBeforeClose, événement
    Cet événement se produit juste avant la fermeture d'un classeur.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Sub object_WorkbookBeforeClose(ByVal Wb As Workbook, ByVal Cancel As Boolean)
    object Objet de type Application déclaré avec des événements dans un module de classe. Pour plus d'informations, consultez Utilisation d'événements avec l'objet Application.

    Wb Classeur en cours de fermeture.

    Cancel Cet argument a la valeur False lorsque l'événement se produit. Si la procédure de l'événement lui affecte la valeur True, le classeur n'est pas fermé à la fin de la procédure.
    [/B]


  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 52
    Par défaut
    merci, je vois comment l'implementer dans Excel, mais comment faire en delphi pour redéfinir l'action de cet évènement?

    c'est peut etre tout bête, mais je ne vois pas

    merci bcp

  4. #4
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par oiapoque
    mais comment faire en delphi pour redéfinir l'action de cet évènement?
    Je ne comprend pas ce que tu veux faire
    Tu veux dire d'utiliser les propriétés/event du composant TWorkBook ?

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 52
    Par défaut
    Le fonctionnement:
    Le programme créé une feuille excel, celle-ci s'ouvre dans excel afin que l'utilisateur saisisse des données. Ce dernier enregistre la feuille et ferme la fenetre excel pour retourner dans l'interface du programme.
    C'est à ce moment là que je voudrais faire un traitement (mise à jour de tables), mais je ne sais pas saisir l'évènement, ni comment...
    (il se peut que d'autres fenêtres excel soient ouvertes au même moment et qu'il ne faille pas fermer)

    j'espère avoir été plus clair dans ce que je cherche a faire


    peut être l'évènement WorkbookBeforeClose peut répondre à mon problème, mais je ne sais pas comment le déclarer/utiliser?


    merci pour toute votre aide qui me fait avancer

    eric

  6. #6
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Billets dans le blog
    1
    Par défaut
    Utilses un composant TExcelWorkbook puis dans l'éditeur de propriétés tu vérifies les evénements proposés :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
     
      TForm1 = class(TForm)
        ExcelApplication1: TExcelApplication;
        ExcelWorkbook1: TExcelWorkbook;
        ExcelWorksheet1: TExcelWorksheet;
    ...
        procedure ExcelWorkbook1BeforeClose(ASender: TObject; var Cancel: WordBool);
     end;
     
    ...
     
    procedure TForm1.ExcelWorkbook1BeforeClose(ASender: TObject;
      var Cancel: WordBool);
    begin
      //Controle du nom du fichier cible
     ...
    end;
    Je crois que tu peux aussi contrôler cet event par le composant TExcelApplication.

Discussions similaires

  1. [WD18] Problème avec <objet Automation "Excel.Application">
    Par hassane03 dans le forum WinDev
    Réponses: 9
    Dernier message: 04/04/2017, 04h00
  2. Réponses: 4
    Dernier message: 03/05/2010, 14h17
  3. Enregistrement d'un fichier Excel par automation
    Par tiopan dans le forum Access
    Réponses: 2
    Dernier message: 04/12/2003, 19h57

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