transfert de données Excel vers un document Word

Fred92

XLDnaute Nouveau
Bonsoir à tous,

Me voilà confronté à un problème depuis 2 jours pour lequel je n'arrive toujours pas à me dépétrer.

Je développe une petite application de gestion du personnel sous Excel 2007. Sur l'une des feuilles de cette application, se trouve la liste du personnel d'une petite entreprise. Je souhaiterais qu'à chaque saisie d'un nouvel employé sur cette feuille, un document Word contenant un modèle de contrat de travail s'ouvre et soit renseigné automatiquement du nom prénom, N° de sécu etc... de ce nouvel employé.

La partie du code VBA sous Excel qui renseigne les signets dans le document word est le suivant:

Dim WordApp As Word.Application
Dim WordDoc As Word.Document

Set WordApp = CreateObject("word.application") 'ouvre session word
Set WordDoc = WordApp.Documents.Open("E:\Contrat de travail.docx") 'ouvre le document Word
WordApp.Visible = False 'word masqué pendant l'operation

'les signets du document Word sont nommés Nom , Prénom
WordDoc.Bookmarks("Nom").Range.Text = Cells(A, 1)
WordDoc.Bookmarks("Prénom").Range.Text = Cells(A, 2)

WordApp.Visible = True 'affiche le document Word
WordDoc.PrintOut 'imprimer


Malheureusement je bloque totalement sur la façon de créer les différents signets ou champs sous Word 2007 aceptant d'être renseignés par une application extérieur . Je ne maîtrise absolument pas Word!

Je vous remercie tous par avance de l'aide que vous pourrez m'apporter.

Bien cordialement,
 

Kobaya

XLDnaute Occasionnel
Re : transfert de données Excel vers un document Word

Bonsoir Fred92,

Ouvre Word, et utilise l'enregistreur de macro pour faire ce que tu veux. Ensuite adapte ce code dans Excel. Si tu maîtrises un peu le VBA Excel, ce qui semble être le cas, ça ne devrait pas te poser trop de problème :eek:
 

Fred92

XLDnaute Nouveau
Re : transfert de données Excel vers un document Word

Bonjour Kobaya,

Merci pour ton message qui effectivement est une piste très judicieuse à laquelle je n'avais absolument pas pensé. Je vais poursuivre mes recherches et je tiens informé le forum dans mon prochain post.

Cordialement
 

yamba

XLDnaute Nouveau
Re : transfert de données Excel vers un document Word

Bonjour,

J'ai le même problème (tansférer des données de Excel vers Word)
J'ai donc essayé avec le code qui est dans le premier message.

Mais lors de l'execution du code les deux lignes suivantes :
Dim WordApp As Word.Application
Dim WordDoc As Word.Document
me créer l'erreur : Type défini par l'utilisateur non défini.

Y aurait-il une autre solution pour transférer des données, ou une autre syntaxe pour affecter un document Word à une variable.

Merci d'avance.
 

Kobaya

XLDnaute Occasionnel
Re : transfert de données Excel vers un document Word

Bonsoir Yamba,

Il faut activer la référence Microsoft Word 12.0.Pour celà, il faut aller dans l'éditeur VBA, menu Outils/Références..., et cocher la case Microsoft Word 12.0 (si c'est WORD 2007).
 

yamba

XLDnaute Nouveau
Re : transfert de données Excel vers un document Word

bonjour,
une autre petite question plus précise concernant le transfert de données de excel vers word:
j'ai, à l'interieur de mon fichier excel, une image que j'arrive à récupérer dans vba sous une variable de type shape (que j'ai appelé "sh")
Mon problème est de la transférer vers mon fichier word.
La fonction insertFile ne fonctionne pas.
Si je la copie, je ne connais pas le code permettant de selectionner le contenu de mon fichier word afin de la coller.
Auriez-vous une solution afin de la transferer vers le fichier word

Ps : j'ai modifié le code ci-dessus afin qu'au lieu de récupérer un fichier existant, vba créé un nouveau fichier (pour eviter les bug eventuels des utitlisateurs qui deplacent le fichier word).

PS 2 : pourriez vous m'expliquer la différence entre une variable Word.Application et une variable Word.Document, ainsi que l'utilité d'en définir une de chaque.

Merci d'avance, votre site est très instructif et bien fait.
 
Dernière édition:

Kobaya

XLDnaute Occasionnel
Re : transfert de données Excel vers un document Word

Bonsoir yamba,

Une variable Word.Application est une variable objet représentant l'application Word, plus précisément une instance de Word. Si tu ouvres plusieurs instances de Word en même temps (si tu cliques plusieurs fois sur l'entrée Word du menu Démarrer/Programmes), une variable Word.Application ne représentera qu'une et une seule de ces instances.

Et une variable Word.Document représente, comme son nom l'indique, un document Word, c'est à dire un fichier .doc, .txt, .dot, etc...

Si tu es sous Word, il n'est pas nécessaire d'en créer une, puisque par défaut, tous les objets que tu crées sont des "enfants" de Word.
Mais si tu es sous Excel, tu es obligé de créer une variable Word.Application pour pouvoir piloter Word.

Pour ton problème d'image, ce sera plus facile si tu postes ton fichier, ou au moins un exemple de ce que tu veux faire.
 

yamba

XLDnaute Nouveau
Re : transfert de données Excel vers un document Word

Bonjour,

Merci pour ces éclaircissements concernant word.

Pour le problème d'image voici mon code :

Sub transfert()
Dim WordApp As Word.Application
Dim WordDoc As Word.Document
Dim sh As Shape

For Each sh In Sheets("tableau des performances").Shapes
If sh.Type = msoPicture Then
Exit For
End If
Next //boucle permetant de récupérer l'image dans la variable "sh"

Set WordApp = CreateObject("word.application")
Documents.Add DocumentType:=wdNewBlankDocument
Set WordDoc = ActiveDocument

WordApp.Visible = False
Sheets("tableau des performances").Activate

*******

WordDoc.Content.InsertAfter Text:=Cells(5, 1) & Chr(13) & Chr(13)
WordDoc.Content.InsertAfter Text:=Cells(1, 5) & Chr(13) & Chr(13)

WordApp.Visible = True
Sheets("ProfilEvaluationExterne").Select
End Sub


J'ai supprimé un peu de code à la fin qui récupérer plus de données à insérer dans le .doc.
Mon problème est de remplacer la ligne "******" par une instruction qui m'insérerai l'image dans WordDoc du genre :
WordDoc.Content.InsertShape (sh) mais la méthode InsertShape n'existe pas.

Voila, je sais pas si j'ai été clair sur mon but ou s'il y a besoin de plus de details.
 

Kobaya

XLDnaute Occasionnel
Re : transfert de données Excel vers un document Word

Bonsoir yamba,

Voici le résultat de mes cogitations :
Code:
Sub transfert()
    Dim WordApp As Word.Application
    Dim WordDoc As Word.Document
    Dim sh      As Shape
    
    For Each sh In Sheets("tableau des performances").Shapes
        If sh.Type = msoPicture Then
            ' on copie l'image dans le presse-papier Windows
            sh.CopyPicture
            Exit For
        End If
    Next '//boucle permetant de récupérer l'image dans la variable "sh"
    
    Set WordApp = CreateObject("word.application")
    ' la syntaxe ci-dessous peut aussi être utilisée,
    ' même si c'est un peu moins rapide. Regarde l'aide sur le mot clé Set
    ' Set WordApp = New Word.Application
    
    'Documents.Add DocumentType:=wdNewBlankDocument
    ' je suis étonné que Documents.Add fonctionne sans WordApp. devant...
    WordApp.Documents.Add DocumentType:=wdNewBlankDocument
    
    Set WordDoc = WordApp.ActiveDocument
    
    WordApp.Visible = False
    Sheets("tableau des performances").Activate
    
    ' après quelques tatonnements, j'ai fini par trouver
    ' comment coller l'image dans Word :-)
    WordDoc.Content.Paste
    ' mettre le curseur sur la ligne suivante (vbLf  = Line Feed)
    WordDoc.Content.InsertAfter vbLf
    
    WordDoc.Content.InsertAfter Text:=Cells(5, 1) & Chr(13) & Chr(13)
    WordDoc.Content.InsertAfter Text:=Cells(1, 5) & Chr(13) & Chr(13)
    
    WordApp.Visible = True
    Sheets("ProfilEvaluationExterne").Select
    
    ' libérer la mémoire réservée aux objets
    Set WordApp = Nothing: Set WordDoc = Nothing: Set sh = Nothing
End Sub
 

yamba

XLDnaute Nouveau
Re : transfert de données Excel vers un document Word

Merci beaucoup,
tout fonctionne à merveille.

Concernant le WorddApp manquant devant
Documents.Add DocumentType:=wdNewBlankDocument

Le programme fonctionnait qu'une seule fois et si je relançais l'algorithme, ça buggait.
En rajoutant WordApp, plus de problèmes.

Merci encore pour votre efficaité.
 

Discussions similaires

Statistiques des forums

Discussions
312 228
Messages
2 086 420
Membres
103 205
dernier inscrit
zch