Créer un document Word à partir de données Excel

Martini

XLDnaute Junior
Bonjour à tous,


J'ai rendu un service sous Excel et "on" voulait un résultat sous word. J'aimerais bien créer ce dernier à partir des données que j'ai tapées dans Excel, probablement à l'aide de VBA.

Mais si j'ai pu écrire quelques macros dans ma vie, je n'ai jamais jamais créé un autre document qu'un tableau donc j'ai vraiment besoin d'aide.


J'ai mis un exemple de tableau et de fichier texte (en pdf, je ne peux pas joindre un *.doc).



Merci pour votre aide.
 

Pièces jointes

  • Eléments.xls
    10.5 KB · Affichages: 79
  • Synthèse textuelle.pdf
    69.6 KB · Affichages: 89

Lone-wolf

XLDnaute Barbatruc
Bonjour Martini

Dans un nouveau document word, il te faut créer autant de signets que tu as de lignes. En image, crée les signets comme le nom des lignes en image ou un autre nom.

upload_2017-4-16_19-33-24.png

Je ne sais pas si la macro(que je veux te proposer) fonctionnera vu que tu es sous 2003.

EDIT: Bonjour Pierre :)

VB:
Sub export_données_dans_signet_word()
Dim WordApp As Word.Application, WordDoc As Word.Document, chemin As String

fichier = ThisWorkbook.Path & "\Doc1.doc"
Application.WindowState = xlMinimized

Set WordApp = CreateObject("Word.Application") 'ouvre session word et le fichier voulu
Set WordDoc = WordApp.Documents.Open(fichier) 'ouvre document Word
WordApp.Visible = False 'word masqué pendant l'operation

'dans le document word, il faut avoir placé des signets aux endroits qu'on veut remplir
'à l'endroit de chaque signet qui se trouve dans le fichier word on va inscrire le contenu des cellules

On Error Resume Next
Application.DisplayAlerts = False

With WordDoc
.Bookmarks("signet1").Range.Text = [A2].Text
.Bookmarks("signet2").Range.Text = [A3].Text
.Bookmarks("signet3").Range.Text = [A4].Text
.Bookmarks("signet4").Range.Text = [A5].Text
.Bookmarks("signet5").Range.Text = [A6].Text
.Bookmarks("signet6").Range.Text = [A7].Text
.Bookmarks("signet7").Range.Text = [A8].Text
.Bookmarks("signet8").Range.Text = [A9].Text
.Bookmarks("signet9").Range.Text = [A10].Text
.Bookmarks("signet10").Range.Text = [A11].Text
.Bookmarks("signet11").Range.Text = [A12].Text
'.Save
End With

Set WordApp = Nothing
Set WordDoc = Nothing
'WordDoc.Save  'si on veut fermer le document word en sauvegardant les données
'WordApp.Visible = True 'affiche le document Word 'WordDoc.PrintOut 'si on veut imprimer
'WordApp.Quit 'ferme la session Word
End Sub
 

Pièces jointes

  • signets.gif
    signets.gif
    1.7 KB · Affichages: 100
Dernière édition:

Martini

XLDnaute Junior
Re,


J'ai fait une macro qui fonctionne à 90% grâce au modèle de Pierre mais je ne sais pas comment constituer un paragraphe à partir de plusieurs sources.

Je m'explique : chaque véhicule peut avoir 1, 2, 3 problèmes et je voudrais pouvoir les écrire en fonction des cases cochées. Mais je n'ai pas trouvé comment insérer ou non les problèmes contenus en F2:M2 en fonction de la case cochée.


Merci de me mettre sur la piste.
 

Pièces jointes

  • Eléments.xls
    47 KB · Affichages: 101

Lone-wolf

XLDnaute Barbatruc
Re

Peut-être comme ceci (c'est juste un exemple) , à mettre après la boucle de remplissage

VB:
    With Feuil1
    Select Case .CheckBox1
    Case True: doc.Bookmarks("signet4").Range.Text= .CheckBox1.Caption
    End Select
 
    Select Case .CheckBox2
    Case True: doc.Bookmarks("signet7").Range.Text = .CheckBox2.Caption
    End Select
 
    Select Case .CheckBox3
    Case True: doc.Bookmarks("signet10").Range.Text= .CheckBox3.Caption
    End Select
    End With
 

Martini

XLDnaute Junior
Bonjour à vous,

Lone-wolf> J'ai commis une erreur de langage. Quand je dis "case cochée", c'est la présence ou non d'un X dans une cellule.

Pierre> Je voudrais un *.doc qui liste les DVxxxx avec leurs infos, sur le modèle du pdf en PJ de mon premier post. D'ailleurs, ça marche ; il me manque juste la compétence pour créer la ligne sur les pannes (avec ton modèle, j'ai appris à créer un paragraphe mais pas à ajouter du texte à la fin de celui-ci).
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 177
Messages
2 085 972
Membres
103 073
dernier inscrit
MSCHOE16