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 :

[VBA-A]Copier des données d'Excel vers Word


Sujet :

VBA Word

  1. #1
    Membre régulier
    Inscrit en
    Juin 2005
    Messages
    243
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 243
    Points : 89
    Points
    89
    Par défaut [VBA-A]Copier des données d'Excel vers Word
    Bonjour tout le monde !!

    Voilà, j'ai un fichier excel contenant des données et des graphiques, et je dois réaliser un script en vba permettant de créé un document word et d'y insérer des tableaux, graphiques provenant du fichier Excel.

    Donc, j'arrive à ouvrir le fichier word et Excel, copier les données provenant d'Excel, mais je ne sais pas du tout comment les coller à l'endroit que je le désire (par exemple après un titre) sur mon document Word.

    J'ai cherché sur le net mais trouvé vraiment aucun Tutorial vraiment intéressant dans mon cas sur le VBA sous word.

    Quelqu'un aurait t'il un lien sympatoche, ou une petite aide sur mon problème de collage des données après un titre.

    Un grand merci d'avance !

  2. #2
    Expert éminent
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Points : 8 524
    Points
    8 524
    Par défaut
    regarde déjà dans ce sujet

    http://www.developpez.net/forums/vie...info%2A+office

    si tu trouves des choses interessantes
    Vous vous posez une question, la réponse est peut-être ici :
    Toutes les FAQs VB
    Les Cours et Tutoriels VB6/VBScript
    Les Sources VB6


    Je ne réponds pas aux questions techniques par MP. Utilisez les forums. Merci de votre compréhension

  3. #3
    Membre régulier
    Inscrit en
    Juin 2005
    Messages
    243
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 243
    Points : 89
    Points
    89
    Par défaut
    Salut thierry et merci beacoup d'avoir répondu !

    Alors ton lien est super, merci, j'ai appris bcp de choses, notamment, comment importer des données et graphique de Excel vers Word, par contre j'ai pas trouver comment les importés à un endroit précis, c'est à dire après un titre prédéfinis.

    Sinon j'ai trouvé ce code très intéressant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document_word.Tables(1).AutoFitBehavior wdAutoFitWindow
    Celui-ci permet d'ajuster un tableau ou un graphique sur la largeur de la page, donc c'est formidable !!
    Par contre savez vous comment on pourrais faire pareil, mais sur la longeur d'une page, car j'ai un tableau qui déborde sur une autre page et j'aimerai bien qu'il tienne sur une page.

    Merci pour vos réponses !

  4. #4
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    L'objet (je dis bien objet) Font existe également sous Excel et son examen (aide en ligne) te conduira peut-être à voir comment l'insérer dans ton code, au bon endroit ?

  5. #5
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Le mieux est de placer des signets là ou tu veux insérer tableaux et graphes, par exemple, en dessous de ton titre.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        With ActiveDocument.Bookmarks
            .Add Range:=Selection.Range, Name:="Tableau1"
        End With
    Ensuite, pour retrouver l'emplacement, tu fais ça (à adapter depuis Excel - With WdDoc 'ton document)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        Selection.HomeKey Unit:=wdStory   'envoie en début de page
        'recherche du signet
        Selection.GoTo What:=wdGoToBookmark, Name:="Tableau1"
    En dessous, tu décales du nombre de ligne souhaité, soit en créant des nouvelles lignes,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        Selection.TypeParagraph
        Selection.TypeParagraph
        Selection.TypeParagraph
        Selection.TypeParagraph
    Soit en descendant du nombre de lignes voulu si elles existent
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Selection.MoveUp Unit:=wdLine, Count:=4
    et tu recommences pour le graphe ou le tableau suivant

    Un conseil : Colle tes tableaux et graphes sans les dissocier du texte. Facilite la mise en page.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Selection.PasteSpecial Link:=True, DataType:=wdPasteOLEObject, Placement:=wdInLine, DisplayAsIcon:=False
    "Placement:=wdInLine" permet de faire ça.
    "Link:=True" lie les données au fichier Excel (=false supprime le lien)

    Une dernière chose, tes graphes et tes tableaux auront la dimension existante dans Excel, tu devras les redimensionner. Exemple : Tu veux que tes objets aient 18 cm de large :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        Selection.InlineShapes(1).LockAspectRatio = msoTrue
        Selection.InlineShapes(1).Width = 510.25
    "LockAspectRatio = msoTrue" conserve le rapport Hauteur/largeur

    Si tu as un autre pb, tu dis

    A+ et bon courage

  6. #6
    Expert éminent
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Points : 8 524
    Points
    8 524
    Par défaut
    ouskelnor, toi, tu es mûr pour nous complèter la FAQ VBA
    Vous vous posez une question, la réponse est peut-être ici :
    Toutes les FAQs VB
    Les Cours et Tutoriels VB6/VBScript
    Les Sources VB6


    Je ne réponds pas aux questions techniques par MP. Utilisez les forums. Merci de votre compréhension

  7. #7
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut

  8. #8
    Membre expérimenté Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Points : 1 405
    Points
    1 405
    Par défaut
    Ça sent le type qui a passé des heures à insérer des graphiques Excel dans Word, ça...

    Il est fort, ce Ouskel'n'or !!

  9. #9
    Membre régulier
    Inscrit en
    Juin 2005
    Messages
    243
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 243
    Points : 89
    Points
    89
    Par défaut
    Alors là un grand merci, un très grand merci même !!

    Mais en faite j'ai du mal, ton code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        With ActiveDocument.Bookmarks 
            .Add Range:=Selection.Range, Name:="Tableau1" 
        End With
    Permet d'insérer des signets, mais le prog me dit "variable non défénie" car le 'selection' n'est pas définie (à mon avis). Comment je pourrais sélectionner l'endroit ou j'ai envie d'insérer mon signet. Sinon j'ai essayé à la main sous word : "inserer -> signet -> "ClassementRS1" -> ajouter, mais si je veux atteindre le signet je dois le surligner... ça sert à rien un signet alors, non ?

    Bref... je te remercie de nouveau et te félicite pour ta culture vba-wordlistique

  10. #10
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Oui, je m'y attendais un peu. Je pense que l'erreur provient de ce que tu utilises mon code sans faire référence à WdDoc. Je t'ai précisé que la syntaxe que je t'ai donnée est valable dans word. Depuis Excel, tu dois désigner l'objet document. SilkyRoad, dans l'adresse que t'a donnée ThierryAim ce matin, donne cette syntaxe.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim appWrd As Word.Application 
    Dim docWord As Word.Document 
    Set appWrd = createObject("Word.Application") 
    appWrd.Visible = True 
    Set docWord = appWrd.Documents. _ 
    Open("C:\mes documents\monDocument.doc", readOnly:=True)
    Tu dois utiliser l'objet docWord dans cet exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    With docWord 
        .Toncode
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    With docWord.selection
            .toncode
    Mais regarde si Silky n'a pas donné d'exemple d'utilisation de l'objet docWord

    Tu dis si tu progresses... et même si tu as encore des pb

    A+

  11. #11
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Bon, je dois avouer que je cale. Avec VBA97, la syntaxe de SilkyRoad me pose problème. J'espère qu'il va passer par ici car je ne peux pas tester ce que je t'ai mis dans mon post précédent.
    Désolé mais... Silky ou bbil ne devraient pas tarder

    A+

  12. #12
    Membre régulier
    Inscrit en
    Juin 2005
    Messages
    243
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 243
    Points : 89
    Points
    89
    Par défaut
    Aie... En faite, je ne vous ai pas donné tout les éléments...
    Je ne suis pas sous excel, mais sous Access, j'ai créé un formulaire.

    Voici le contenu de celui-ci :

    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
    19
    20
    21
    22
    23
    24
    25
    26
     
    Dim document_word As Word.Document
    Dim AppWord As Word.Application
     
     
    Set AppWord = New Word.Application
    Set document_word = GetObject("c:\Tableau de bord.doc")
    document_word.Application.Visible = True
     
        'document_word.Content.Find.Execute findtext:="Classement RS1"
     
     
     
        With document_word.Bookmarks
            .Add Range:=Selection.Range, name:="ClassementRS1"
        End With
     
        With AppWord
            .Selection.HomeKey Unit:=wdStory   'envoie en début de page
            'recherche du signet
            .Selection.Goto What:=wdGoToBookmark, name:="ClassementRS1"
        End With
     
        AppWord.Selection.MoveUp Unit:=wdLine, Count:=4
     
        AppWord.Selection.PasteSpecial link:=True, DataType:=wdPasteOLEObject, Placement:=wdInLine, DisplayAsIcon:=False
    Pour l'instant je teste en ouvrant à la main un fichier excel, je sélectionne une plage, je fais copier, puis j'éxécute mon formulaire. celui-ci bloc en surlignant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Add Range:=Selection.Range, name:="ClassementRS1"
    avec le message : "variable objet ou bloc with non définie"
    et au débogage j'ai "le serveur distant n'éxiste pas ou n'est pas disponible"

    En tout cas merci pour ton Amabilité

  13. #13
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Et si tu fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        With AppWord.document_word.Bookmarks 
            .Add Range:=Selection.Range, name:="ClassementRS1" 
        End With
    Vraiment à tout hasard, je ne peux pas tester.

    A+

  14. #14
    Membre régulier
    Inscrit en
    Juin 2005
    Messages
    243
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 243
    Points : 89
    Points
    89
    Par défaut
    Bonjour tout le monde !

    Donc finalement, j'ai mis les signets à la main sous word, et ça marche bien, très bien même.

    Juste un p'tit soucis au niveau de la taille des donnée importé, j'utilise ton code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        AppWord.Selection.InlineShapes(1).LockAspectRatio = msoTrue
        AppWord.Selection.InlineShapes(1).Width = 510.25
    Mais j'ai le message
    "Le membre de la collection requis n'existe pas"
    A quel objet correspond InlineShapes en faite ? Car j'ai tester avec un graphique ou une plage de cellules et j'ai ce message.

    Bon... bonne journée en tout cas !

  15. #15
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Oui, sans doute ne sélectionnes-tu pas l'objet.
    Comme j'ignore si le pt d'insertion, quand tu fais appel à ton code, se trouve avant ou après l'objet, tu adapteras (En principe, après avoir collé l'objet, tu devrais te trouver après)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Selection.MoveUp Unit:=wdLine, Count:=1, Extend:=wdExtend
    Ce code sélectionne la ligne (ou l'objet s'il se trouve sur la ligne) située avant le point d'insertion.

    Tu testes

    A+

  16. #16
    Membre régulier
    Inscrit en
    Juin 2005
    Messages
    243
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 243
    Points : 89
    Points
    89
    Par défaut
    Nickel, ça marche sacrément bien !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
        AppWord.Selection.MoveUp Unit:=wdLine, Count:=1, Extend:=wdExtend
     
        With document_word.InlineShapes(1)
            .LockAspectRatio = msoFalse
            .Height = 711 'redimensionne hauteur image
            .Width = 510 'redimensionne largeur image
        End With
    En tout cas un grand merci, c'était vraiment sympa d'avoir aidé !!

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

Discussions similaires

  1. [AC-2010] Copier des données de Access vers Excel
    Par benoaa dans le forum VBA Access
    Réponses: 7
    Dernier message: 04/07/2014, 15h56
  2. [XL-2007] Copier-coller des données d'excel vers un logiciel
    Par capi81 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 04/07/2012, 13h18
  3. Réponses: 13
    Dernier message: 29/03/2007, 11h30
  4. [VBA-E]Exporter des données d'Excel vers Access
    Par Mut dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 03/06/2006, 15h57
  5. [VBA-E]Transfere des données d'Excel dans une table Access
    Par flo83 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 07/04/2006, 09h22

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