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

VBA Word Discussion :

Lire données d'un fichier excel déjà ouvert [WD-2010]


Sujet :

VBA Word

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 45
    Par défaut Lire données d'un fichier excel déjà ouvert
    Bonjour le forum,

    J'ai réalisé une base de données excel que j'exploite via un formulaire. Dans ce formulaire, je peux choisir d'ouvrir un document Word (là aussi avec formulaire) qui fait appel aux données contenues dans le tableau excel déjà ouvert.

    ça fait quelques jours que je cherche à savoir comment faire pour consulter les données de mon tableau excel, sans avoir à créer une nouvelle instance et à ouvrir de nouveau mon excel.
    Car j'ai déjà fait cela, et ça fonctionne nikel quand mon fichier excel est fermé, word m'ouvre une nouvelle instance excel, ouvre le fichier en arriere plan, consulte les données puis ferme excel, mais dans ce que je veux faire maintenant, ce n'est plus bon puisque excel est déjà ouvert.

    Quelqu'un aurait-il une idée ?

    Merci par avance !

  2. #2
    Membre Expert

    Homme Profil pro
    Spécialiste progiciel
    Inscrit en
    Février 2010
    Messages
    1 747
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Spécialiste progiciel
    Secteur : Service public

    Informations forums :
    Inscription : Février 2010
    Messages : 1 747
    Par défaut
    Bonjour,

    Tout simplement instancier utiliser GetObject au lieu de CreateObject

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 45
    Par défaut
    Bonjour Christophe,
    Merci pour la réponse, je vais aller tester ça (et même apprendre). Je reviens clore le sujet si j'ai trouvé, sinon je continuerai à crier à l'aide

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 45
    Par défaut
    Bon en fait je comprends pas tout...

    j'essaye de passer par un GetObjet, comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Set XlApp = GetObject("MonFichier", Excel.Application)
    Mais lorsque je fais un "Pas à pas détaillé", Word me renvoie une erreur "Un composant ActiveX ne peut pas créer d'objet."
    Erreur qui s'affiche quand aucune instance d'Excel est en cours d'éxecution, cependant j'ai bien excel de lancé à ce moment là et MonFichier est ouvert.

    Un petit coup de main ?

  5. #5
    Membre Expert

    Homme Profil pro
    Spécialiste progiciel
    Inscrit en
    Février 2010
    Messages
    1 747
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Spécialiste progiciel
    Secteur : Service public

    Informations forums :
    Inscription : Février 2010
    Messages : 1 747
    Par défaut
    Bonjour,

    Il faut mettre des guillemets autour du nom de la classe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set XlApp = GetObject("MonFichier", "Excel.Application")
    Il est aussi possible de charger avec l'application par défaut sans la spécifier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set XlApp = GetObject("C:\travail\MonFichier.xls")

  6. #6
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

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

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut




    Bonjour.

    Set XlApp = GetObject(, "Excel.Application")



    _____________________________________________________________________________________________________
    Je suis Charlie - Je suis Bardo

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 45
    Par défaut
    Effectivement, déclaré de la sorte, ça fonctionne.
    Cependant, maintenant, j'ai une erreur de renvoyé quand j'essaye de définir mes worksheets :
    "Erreur d’exécution 91 : Variable objet ou variable de bloc with non définie"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Dim xlBook As Excel.Workbook
    Dim xlSheet As Excel.Worksheet
    Dim xlSheet2 As Excel.Worksheet
     
    'Les 2 fichiers sont dans le même dossier                       'ce que me renvoie le pas a pas détaillé
    Chemin = ActiveDocument.Path                                    'Chemin = Vide
     
        Set xlApp = GetObject(Chemin & "MonFichier.xlsm")           'xlApp = Vide
        Set xlBook = ActiveWorkbook                                 'xlBook = Nothing
        Set xlSheet = xlBook.Sheets("Feuil1")                       'xlSheet = Nothing
        Set xlSheet2 = xlBook.Sheets("Feuil2")                      'xlSheet2 = Nothing
    J'avoue ne pas comprendre l'erreur renvoyée...
    J'ai forcément caffouillé... Et vu que c'est la première fois que j'essaye de faire ça, j'y vais vraiment à l'aveuglette

  8. #8
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Canada

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

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Commence par ajouter:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dim xlApp as Excel.application
    Puis, si ce n'est pas assez, essaie de remplacer:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set xlBook = ActiveWorkbook
    Par:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set xlBook = xlApp.ActiveWorkbook

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 45
    Par défaut
    Clement,

    Je viens d'essayer cela aussi, mais toujours une erreur de renvoyée à la ligne du Set xlBook

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Dim xlApp As Excel.Application
    Dim xlBook As Excel.Workbook
    Dim xlSheet As Excel.Worksheet
    Dim xlSheet2 As Excel.Worksheet
     
    'Les 2 fichiers sont dans le même dossier                       'ce que me renvoie le pas a pas détaillé
    Chemin = ActiveDocument.Path                                    'Chemin = Vide
     
        Set xlApp = GetObject(Chemin & "MonFichier.xlsm")           'xlApp = Vide
        Set xlBook = xlApp.ActiveWorkbook                           'xlBook = Nothing
        Set xlSheet = xlBook.Sheets("Feuil1")                       'xlSheet = Nothing
        Set xlSheet2 = xlBook.Sheets("Feuil2")                      'xlSheet2 = Nothing
    L'erreur renvoyée est la suivante :
    "Erreur 438 : Propriété ou méthode non géré par cet objet"

    Je comprends vraiment pas...
    J'ai même l'impression que c'est plus simple d'aller lire un fichier qui est fermé.

    Merci pour votre aide pour m'aider à résoudre ce problème !

  10. #10
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Canada

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

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    VBA Office 2010 est très capricieux comparé aux versions précédentes. Je ne sais pas si c'est à cause du support pour Office à 64 bits, mais bon.

    Tu devrais ouvrir ton aide et prendre l'exemple de ton aide. Il y en a sûrement un.

    Exécute toute ta procédure au pas à pas. Si tu vois que ton Excel est à nothing, regarde dans le gestionnaire de tâches s'il y a vraiment une application Excel active.

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 45
    Par défaut
    Enfin !!!
    J'ai trouvé !!
    Merci Clément ! L'aide m'a été bien utile ! Je devrais la consulter plus souvent !

    Je mets le code fonctionnel pour ceux que ça pourrait intéresser.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Dim xlApp As Object
    Dim xlBook As Excel.Workbook
    Dim xlSheet As Excel.Worksheet
    Dim xlSheet2 As Excel.Worksheet
     
    'Les 2 fichiers sont dans le même dossier                       
    Chemin = ActiveDocument.Path                                    
     
        Set xlApp = GetObject(,"Excel.Application")
        Set xlApp = GetObject(Chemin & "MonFichier.xlsm")
        Set xlBook = xlApp.Application.ActiveWorkbook
        Set xlSheet = xlBook.Sheets("Feuil1")
        Set xlSheet2 = xlBook.Sheets("Feuil2")
    Je passe le topic en résolu !
    Merci !

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

Discussions similaires

  1. Lire le contenu du fichier Excel ouvert en VBScript
    Par 76morpheus dans le forum VBScript
    Réponses: 4
    Dernier message: 21/05/2012, 12h19
  2. Lire un fichier excel déja ouvert
    Par sihammaster dans le forum VB.NET
    Réponses: 2
    Dernier message: 01/06/2011, 17h50
  3. Lire fichier Excel deja ouvert.
    Par ketthos dans le forum C#
    Réponses: 2
    Dernier message: 28/05/2007, 01h59
  4. [Excel] PHP-MYSQL exportation de données vers un fichier excel
    Par toure32 dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 19/10/2005, 20h29
  5. Extraction de données sur des fichiers excel
    Par iupgeii dans le forum MFC
    Réponses: 3
    Dernier message: 23/01/2004, 14h53

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