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

VB.NET Discussion :

piloter un fichier excel intégrer dans un fichier word


Sujet :

VB.NET

  1. #1
    Membre averti
    Profil pro
    president
    Inscrit en
    Août 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : president

    Informations forums :
    Inscription : Août 2007
    Messages : 14
    Par défaut piloter un fichier excel intégrer dans un fichier word
    Bonjour

    Je crèe une application en vb2005Express pour réaliser mes devis, ces derniers sont en WORD et intègrent des tableaux EXCEL.

    le fichier word créé, s'appelle Base Devis.doc, et le fichier excel que je colle dans word : essai.xls, ci dessous vous avez le bout de code qui me permet de faire la manip :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Dim oWord As Object
            Dim oDoc As Object
            oWord = CreateObject("Word.Application")
            oDoc = oWord.documents.open("C:\Base devis.doc")
     
            oDoc.Bookmarks("GR").range.InlineShapes.AddOLEObject(ClassType:="Excel.Sheet.8", FileName:="C:\essai.xls", _
            LinkToFile:=False, DisplayAsIcon:=False)
    Mon soucis est que je n'arrive pas à récupéré l'index de l'InlineShapes ainsi créé (il y en a 29 dans le fichier Word), et donc je ne peux pas travailler dessus,
    De la meme maniere, je souhaiterais pouvoir modifier le nombre de lignes visualisées dans la fenêtre...
    Je ne trouve pas de tutos.. et je seche desespérément....

    merci pour votre aide !

  2. #2
    Rédacteur/Modérateur
    Avatar de Skalp
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 694
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 694
    Par défaut
    J'imagine que tu as essayé de donner un indice entre 0 et 28 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    oDoc.Bookmarks("GR").range.InlineShapes(1)
    Sinon, j'ai vu que la fonction AddOLEObject() te renvoie l'objet InlineShape, tu pourrais travailler sur les instances de ces objets, sans avoir à te soucier de l'indice... Bon, c'est sûr, ça fait 29 objets à gérer, c'est lourd, mais c'est mieux que rien.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim oInlineShape As Word.InlineShape
    oInlineShape = oDoc.Bookmarks("GR").Range.InlineShapes.AddOLEObject(...)
    Pour modifier le nombre de lignes visualisées, tu peux essayer la propriété :
    Pour plus d'infos sur le modèle objet Word, il existe des fichiers d'aide dans ton install Office :
    C:\Program Files\Microsoft Office\OFFICE11\1036
    Le fichier s'intitule VBAWD10.CHM (enfin, pour Office 2003...)

    Ils pourront sûrement t'être d'une aide très précieuse !

    Bon courage !

  3. #3
    Membre averti
    Profil pro
    president
    Inscrit en
    Août 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : president

    Informations forums :
    Inscription : Août 2007
    Messages : 14
    Par défaut

    je teste et je reviens demain, mais grand merci pour t'être penché sur mon problème...

  4. #4
    Membre averti
    Profil pro
    president
    Inscrit en
    Août 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : president

    Informations forums :
    Inscription : Août 2007
    Messages : 14
    Par défaut
    la récupération de l'objet excel marche parfaitement, merci à toi Skalp...
    Pour info la ligne de prog :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
            Dim oInlineShape As Word.InlineShape
            oInlineShape = CType(oDoc.Bookmarks("GR").range.InlineShapes.AddOLEObject(ClassType:="Excel.Sheet.8", FileName:="C:\essai.xls", _
            LinkToFile:=False, DisplayAsIcon:=False), Word.InlineShape)
    oInlineShape récupère alors toutes les caractéristiques de l'objet ajouter sauf que... les caractéristiques de l'objet ne me permettent pas d'entrer dans cet objet, donc la fonction Height redessine la dimension extérieure de l'objet présent dans Word, mais je n'arrive toujours pas à ouvrir le fichier excel et à determiner que les cellules visibles seront les cellules Range("A1","C10") par exemple...

    une idée ???

  5. #5
    Rédacteur/Modérateur
    Avatar de Skalp
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 694
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 694
    Par défaut
    Tu peux faire ça sous Word ?
    Tu fais comment ?

  6. #6
    Membre averti
    Profil pro
    president
    Inscrit en
    Août 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : president

    Informations forums :
    Inscription : Août 2007
    Messages : 14
    Par défaut
    Ben... le programmer sous Word, si je savais le faire .....

    Pour le faire manuellement c simple, tu insères une table excel dans word, tu double click sur celle-ci, puis tu prends le bas de ta fenêtre et tu montes ou descends... et la tu determines la partie du tableau Excel qui est visible... c'est ça que je veux faire

    La fonction Height joue sur l'objet, cad qu'elle prend l'image apparaissant du fichier excel et la réduit ou l'augmente, concretement dans Word, tu click 1 fois sur le tableau, même procédure que précédemment, et tu zoom l'objet.

  7. #7
    Rédacteur/Modérateur
    Avatar de Skalp
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 694
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 694
    Par défaut
    Effectivement, Height fait jouer le zoom de l'objet.

    En fait, dans Word, quand tu cliques sur l'objet, Excel est démarré (tu peux le voir dans le gestionnaire des tâches) et tu utilises Excel ! ... ça veut dire qu'il te faudrait piloter Excel... en pilotant Word !

    Regardes ce que tu peux faire en VBA à partir de Word (en utilisant Word manuellement) et essaye, soit d'adapter le code VBA dans ton programme, soit de coder une macro que tu exécuterais en pilotant Word...

    Bon courage...

    Tiens-nous au courant !

  8. #8
    Membre averti
    Profil pro
    president
    Inscrit en
    Août 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : president

    Informations forums :
    Inscription : Août 2007
    Messages : 14
    Par défaut
    Salut Skalp

    J'ai malheureusement deja essayé le lancement de enregistreur macro dans word pour voir le code résultant : l'enregistreur s'arrete dès que je touche à l'objet et n'enregistre plus rien !!!

    Je réussi à activer la feuille excel dans Word grâce au lignes qui suivent :

    With oInlineShape.OLEFormat
    .ActivateAs(ClassType:="Excel.Sheet")
    .Activate()
    End With

    Mais je ne parviens pas à trouver la solution pour toucher à la fenêtre.... c désespérant....

    Je garde le moral !!!!

  9. #9
    Rédacteur/Modérateur
    Avatar de Skalp
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 694
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 694
    Par défaut
    Citation Envoyé par Manu91 Voir le message
    J'ai malheureusement deja essayé le lancement de enregistreur macro dans word pour voir le code résultant : l'enregistreur s'arrete dès que je touche à l'objet et n'enregistre plus rien !!!
    Ah-aaah ! Je vois que tu connais les astuces du pilotage Office
    J'ai eu le résultat que toi : on ne peut pas accéder à l'objet pendant l'enregistrement d'une macro

    Mais ce n'est pas ce que je voulais dire dans mon précédent post. Je te proposais de faire ça en VBA, sans passer par l'enregistrement de macro, mais en codant la macro directement Je te dis ça car je sais qu'il est possible de piloter d'autres applications office en VBA FAQ VBA

  10. #10
    Membre averti
    Profil pro
    president
    Inscrit en
    Août 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : president

    Informations forums :
    Inscription : Août 2007
    Messages : 14
    Par défaut
    Je suis sur la piste depuis hier soir.... je me met à la programmation VBA de Word... vais finir par en faire mon métier si ça continue comme ça !!!

    mais meme en VBA je ne trouve pas la manière de changer la taille de cette de fenêtre !!!

    Je continue... mais j'ai du mal !!!

    signé : l'écumeur de tutos et de posts !!!!!

  11. #11
    Membre averti
    Profil pro
    president
    Inscrit en
    Août 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : president

    Informations forums :
    Inscription : Août 2007
    Messages : 14
    Par défaut
    Bonjour en ce beau Dimanche... lol

    Serieusement, mon problème est... hardu...
    le VBA de Word ne donne rien, en effet pour changer la taille de la partie visible de la fenetre, tu dois rentrer dans Excel.
    Quand tu rentres dans excel, et change la taille, tu peux remarquer qu'elle saute de ligne en ligne (donc c pas une fonction height... la vérité est ailleurs...)
    Toujours quand tu changes cette taille, tu t'apperçois que la case nom reprend la dimension da la partie visible (comme si elle était sélectionnée)

    Question : est ce que la modification ne se ferait pas par une API non documentée ? (en tous les cas pas documentée chez moi !)

    Le côté sombre de la Force nous emportera tous !!!!

Discussions similaires

  1. Encodage de données dans un fichier Excel à partir d'un fichier plat
    Par edouard.danaradjou dans le forum Général Python
    Réponses: 9
    Dernier message: 27/01/2015, 11h38
  2. Réponses: 6
    Dernier message: 31/12/2014, 17h17
  3. [XL-2010] Copie d'onglets Excel 2010 dans un fichier Excel 95
    Par pedro91 dans le forum Excel
    Réponses: 2
    Dernier message: 29/07/2014, 19h57
  4. Lire fichier excel + sortie dans un fichier
    Par identifiant_bidon dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 11/07/2014, 13h26
  5. Réponses: 4
    Dernier message: 24/02/2009, 23h09

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