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

Windows Forms Discussion :

[VB.NET] Question sur le pilotage d'Excel


Sujet :

Windows Forms

  1. #1
    Futur Membre du Club
    Inscrit en
    Juillet 2004
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 6
    Points : 6
    Points
    6
    Par défaut [VB.NET] Question sur le pilotage d'Excel
    Bonjour,

    J'ai une application qui génère un fichier Excel et qui récupère des événements dans ce fichier. J'ai déclaré mon application, mon workbook et ma feuille avec des WithEvents.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
        Public WithEvents xlApp As Excel.Application
        Public WithEvents xlBook As Excel.Workbook
        Public WithEvents xlSheet As Excel.Worksheet

    Ensuite, je crée une application et un workbook avec une seule feuille.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
            xlApp = CType(CreateObject("Excel.Application"), Excel.Application)
            xlApp.SheetsInNewWorkbook = 1
            xlBook = CType(xlApp.Workbooks.Add, Excel.Workbook)
    Jusque là, pas de problème, je récupère un certain nombre d'actions sur la feuille.

    Le problème survient lorsque, mon application étant en train de tourner donc ma feuille Excel est ouverte, j'ouvre un autre fichier Excel quelconque en passant par l'explorateur par exemple.
    Le nouveau fichier Excel s'ouvre dans l'application que j'ai créé et je perds la main sur le classeur Excel créé par l'application.

    Ma question est : Est-il possible d'empêcher que d'autres classeurs s'ouvrent dans l'instance d'application que je créé via VB Net ? Ou alors, est-il possible de garder la main sur celui que j'ai créé et que l'ouverture d'un nouveau soit transparente ?

    Merci d'avance de vos réponses.

  2. #2
    Membre chevronné
    Avatar de Piotrek
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 869
    Points : 1 904
    Points
    1 904
    Par défaut
    salut

    hum... question:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
        Public WithEvents xlBook As Excel.Workbook
        Public WithEvents xlSheet As Excel.Worksheet
    ne devraient pas poser de probleme, non ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
        Public WithEvents xlApp As Excel.Application
    en revanche celui la je te l'accorde, toutes les operations menees par cet objet risquent effectivement d'intervenir sur un autre fichier que tu n'as pas cree. Il suffirait je pense de verifier que le workbook actif est bien celui que tu as cree avant d'entreprendre quelque action que ce soit.

  3. #3
    Futur Membre du Club
    Inscrit en
    Juillet 2004
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 6
    Points : 6
    Points
    6
    Par défaut
    Merci de ta réponse. Je pense avoir à peu près réussi à contourner le problème mais je ne trouve pas ça hyper propre.
    En fait, dès que je détecte qu'un nouveau classeur est ouvert dans mon xlapp courant, je le ferme et je le rouvre dans une autre application que je crée moi-même mais pour laquelle je ne gère pas les événements. Il faut que j'étudie de plus près pour voir si ça ne me génère pas des processus Excel en grande quantité et qui ne se ferment pas.

  4. #4
    Expert éminent
    Avatar de bidou
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2002
    Messages
    3 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 055
    Points : 7 962
    Points
    7 962
    Par défaut
    Citation Envoyé par alfprod
    Merci de ta réponse. Je pense avoir à peu près réussi à contourner le problème mais je ne trouve pas ça hyper propre.
    En fait, dès que je détecte qu'un nouveau classeur est ouvert dans mon xlapp courant, je le ferme et je le rouvre dans une autre application que je crée moi-même mais pour laquelle je ne gère pas les événements. Il faut que j'étudie de plus près pour voir si ça ne me génère pas des processus Excel en grande quantité et qui ne se ferment pas.
    si tu référence ton processus, tu ne devrait pas avoir de problème.

  5. #5
    Futur Membre du Club
    Inscrit en
    Juillet 2004
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 6
    Points : 6
    Points
    6
    Par défaut
    En fait le withevents sur la déclaration du l'application Excel était inutile.

    Et comme mon workbook s'appelle xlbook, il suffit que je trappe uniquement les événements de ce xlbook et non pas de n'importe quel Workbook de mon application.

    Il y a plusieurs niveaux d'événements possibles et je travaillais a priori sur le mauvais.

    Merci de vos réponses.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Question sur Visual C++ et excel
    Par Super seb dans le forum MFC
    Réponses: 3
    Dernier message: 07/09/2005, 17h02
  2. [VB.NET] Question sur la console?
    Par waldo2188 dans le forum Windows Forms
    Réponses: 5
    Dernier message: 05/04/2005, 16h51
  3. [C#] [WinForms] sur [VS.NET] question sur le panel
    Par onizuanda dans le forum Windows Forms
    Réponses: 4
    Dernier message: 03/12/2004, 19h00
  4. [VB.NET] Question sur le deploiement
    Par TONY44 dans le forum ASP.NET
    Réponses: 8
    Dernier message: 22/10/2004, 09h28
  5. [VB.NET] Question sur liaison VB et Access
    Par Hoegaarden dans le forum Accès aux données
    Réponses: 2
    Dernier message: 18/05/2004, 09h35

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