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 :

Injection données excel dans plusieurs documents word [WD-2010]


Sujet :

VBA Word

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 133
    Points : 69
    Points
    69
    Par défaut Injection données excel dans plusieurs documents word
    Salut le forum,

    A l'aide d'un formulaire, j'essaie en vain d'injecter des données Excel dans deux documents Word s'ouvrant simultanément.
    J'ai placé les signets dans les deux documents mais l'injection ne se fait que sur l'un d'entre eux.
    J'ai essayé de boucler ainsi mais rien n'y fait.
    Une idée ?

    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
     
    For Each docWord In Word.Application
     
            With docWord
                .Bookmarks("num_eval").Range.Text = Textnumeroeval.Value
                .Bookmarks("NSC").Range.Text = NSC
                .Bookmarks("nom_prenom").Range.Text = nomprenom
                .Bookmarks("date_evaluation").Range.Text = date_eval1
                .Bookmarks("date_naissance").Range.Text = date_naissance
                .Bookmarks("age").Range.Text = age
                .Bookmarks("etude").Range.Text = etude
                .Bookmarks("profession").Range.Text = profession
                .Bookmarks("lateralite").Range.Text = lateralite
            End With
     
    Next docWord

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par florent77 Voir le message
    Bonjour,

    Quel est votre code qui instancie Word depuis Excel ?
    Vous ne perdez pas vos signets après remplacement ?

  3. #3
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par florent77 Voir le message
    Bonjour,

    On devrait avoir un code qui devrait ressembler à cela. Nb : Les signets dans mon document sont des signets de position.

    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
     
    Option Explicit
     
    ' Référencer la DLL Microsoft Word. C'est plus facile pour bénéficier de l'intellisense pendant la phase développement.
     
     
    Sub MettreAJourLesSignets()
     
    Dim OngletDesDonnees As Worksheet
     
    Dim WordApp As Word.Application
    Dim WordDoc As Word.Document
    Dim MaSelection As Word.Selection
     
    'Dim WordApp As Object
    'Dim WordDoc As Object
    'Dim MaSelection As Object
     
    Dim i As Byte
     
        Set OngletDesDonnees = ActiveSheet
        Set WordApp = CreateObject("word.application") 'ouvre session word 
        WordApp.Visible = False 'word masqué pendant l'operation
        Set WordDoc = WordApp.Documents.Open("XXXXX\test.docx") 'ouvre le document Word
     
        With OngletDesDonnees
             For i = 1 To 3
                Set MaSelection = WordApp.Selection
                WordDoc.Bookmarks("Signet" & i).Select
                With MaSelection
                    .Expand unit:=wdWord  'Si wdWord ne correspond pas à la sélection essayer unit:=Sentence ou unit:=Paragraph
                    .Range.Text = OngletDesDonnees.Cells(i, 1).Value
                End With
                Set MaSelection = Nothing
             Next i
        End With
     
        WordApp.Visible = True 'affiche le document Word
        'WordDoc.PrintOut 'si on veut imprimer
     
        WordDoc.Close savechanges:=wdSaveChanges 'si on veut fermer le document word en sauvegardant les données
        WordApp.Quit 'ferme la session Word
        Set MaSelection = Nothing
        Set WordDoc = Nothing
        Set WordApp = Nothing
        Set OngletDesDonnees = Nothing
     
    End Sub

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 133
    Points : 69
    Points
    69
    Par défaut
    Bonjour Eric,

    Merci de ta réponse.
    Qu'appelles-tu signet de position ? Il faut cocher "emplacement" ?

    Sinon, les conseils d'hier après-midi fonctionnent impec, merci !

    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
    For Each docWord In Wordapp.Documents
     
            With docWord
                .Bookmarks("num_eval").Range.Text = Textnumeroeval.Value
                .Bookmarks("NSC").Range.Text = NSC
                .Bookmarks("nom_prenom").Range.Text = nomprenom
                .Bookmarks("date_evaluation").Range.Text = date_eval1
                .Bookmarks("date_naissance").Range.Text = date_naissance
                .Bookmarks("age").Range.Text = age
                .Bookmarks("etude").Range.Text = etude
                .Bookmarks("profession").Range.Text = profession
                .Bookmarks("lateralite").Range.Text = lateralite
            End With
     
    Next docWord

  5. #5
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par florent77 Voir le message
    Bonjour Florent,

    Un signet peut être créé sans texte. Selon qu'il contient du texte ou s'il identifie une position dans le document, cela ne va pas avoir le même résultat en VBA. D'où la question posée sur l'existence de tes signets après remplacement du texte. Tes signets existent toujours ?

    Ton code fonctionne-t-il ?

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 133
    Points : 69
    Points
    69
    Par défaut
    OK Eric, je comprends mieux.

    Le code fonctionne, il injecte bien dans les deux documents.
    Les signets existent toujours après injection.

  7. #7
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par florent77 Voir le message
    OK, tout roule alors. Sinon te référer au tuto d'Olivier LEBEAU pour reconstituer tes signets.

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 133
    Points : 69
    Points
    69
    Par défaut
    Oui tout roule mais ta procédure est tout de même beaucoup mieux foutue que la mienne et je voudrais l'insérer dans mon formulaire.

    Je viens de la tester vite fait, regarde ce que ça me fait :

    Nom : wordsignet.jpg
Affichages : 175
Taille : 45,1 Ko

    Une idée.

  9. #9
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par florent77 Voir le message
    Je ne vois pas. Il faudrait mettre en document en ligne pour voir.

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 133
    Points : 69
    Points
    69
    Par défaut
    Voilà les fichiers :

    Essai1.docx

    essai1.xlsm

  11. #11
    Invité
    Invité(e)
    Par défaut

    Il faut insérer un retour chariot après l'insertion.

    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
     
     Sub MettreAJourLesSignets()
     
    Dim Essai As Worksheet
     
    Dim WordApp As Word.Application
    Dim WordDoc As Word.Document
    Dim MaSelection As Word.Selection
     
     
    Dim i As Byte
     
        Set Essai = ActiveSheet
        Set WordApp = CreateObject("word.application") 'ouvre session word
        WordApp.Visible = False 'word masqué pendant l'operation
        ' C:\Users\erick\Downloads
        'Set WordDoc = WordApp.Documents.Open("C:\Users\fantoine\Desktop\essai_eric.docx") 'ouvre le document Word
        Set WordDoc = WordApp.Documents.Open("C:\Users\erick\Downloads\Essai2.docx") 'ouvre le document Word
     
        With Essai
             For i = 1 To 9
                WordDoc.Bookmarks("Signet" & i).Select
                Set MaSelection = WordApp.Selection
                With MaSelection
                    .Expand unit:=wdWord  'Si wdWord ne correspond pas à la sélection essayer unit:=Sentence ou unit:=Paragraph
                    .Range.Text = Essai.Cells(i, 3).Value & Chr(10)
                End With
                Set MaSelection = Nothing
             Next i
        End With
     
        WordApp.Visible = True 'affiche le document Word
        'WordDoc.PrintOut 'si on veut imprimer
     
        WordDoc.Close savechanges:=wdSaveChanges 'si on veut fermer le document word en sauvegardant les données
        WordApp.Quit 'ferme la session Word
        Set MaSelection = Nothing
        Set WordDoc = Nothing
        Set WordApp = Nothing
        Set Essai = Nothing
     
    End Sub
    Les marques de signet sont apparents, pour les faire disparaître, aller dans option avancées et décocher Afficher les signets:

    Pièce jointe 409911

    Sinon, les signets 1 à 8 sont des signets de position. Il faut éliminer le blanc derrière le signet 9, sinon tu auras vu qu'il avait disparu de ta liste de signets après mise à jour.

    Ta liste de champs n'a pas l'air de correspondre à l'ordre de tes signets.

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 133
    Points : 69
    Points
    69
    Par défaut
    Bonjour Eric, Bonjour à toutes et à tous,

    Merci pour ton aide et toutes ces précisions Eric !
    C'est ok pour moi !

    A +

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

Discussions similaires

  1. [WD-2016] Comment injecter une base de données Excel dans un fichier Word
    Par BOMBARDO dans le forum Word
    Réponses: 1
    Dernier message: 15/03/2018, 23h05
  2. [XL-2010] Macro excel, exporter données excel dans un document word
    Par mika84500 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 11/04/2013, 14h34
  3. [XL-2003] Macro pour utiliser des données Excel dans un document Word
    Par Jeremy0269 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 22/07/2009, 18h58
  4. Réponses: 2
    Dernier message: 24/10/2007, 11h44
  5. Réponses: 3
    Dernier message: 17/04/2007, 16h55

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