Bonjour à toutes et à tous,
Je fais appel a votre aide car je bloque sur l'insertion dans un document word de données qui proviennent d'excel.
J'utilise un formulaire excel pour obtenir des données et créer avec elles un document basé sur un modèle contenant des signets.
Pour une partie des données je peux les placer sans difficulté à la position des signets définis dans le modèle. Par contre, il y a une série de données qui ne peut être positionné avec des signets existants.
Je m'explique :
- l'utilisateur dispose d'un champ nombre de formations s'il indique 3 alors il faudra insérer 3 séries de 5 données dans un tableau ce serait l'idéal (un autre utilisateur pourrait donner 2 ou 1 par exemple et dans ce cas le nombre à insérer est différent)
- l'utilisateur dispose d'un champ nombre d'expérience qui fonctionne sur le même principe.
Je ne parviens pas à insérer ces données car je ne peux les affecter à des signets existant puisque leur nombre et variable.
Ce à quoi j'ai pensé :
- insérer la première série de données depuis la position (page, ligne, colonne avec WdActiveEndPageNumber, wdFirstCharacterLineNumber et WdFirstCharacterColumnNumber)
puis
insérer un paragraphe vide
se positionner juste en dessous (il faudrait pour cela indiquer que l'on veut se placer à la position du dernier paragraphe (peut être avec ObjDoc.Paragraphs(x).Range.Words(objDoc.Paragraphs(x).Range.Words.Count).select mon problème serait alors d'identifier la valeur x
Voici le code dans la macro excel qui manipule word :
Je place le fichier excel et le modèle de document en zip
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 Set wrdApp = CreateObject("Word.Application") Set wrdDoc = wrdApp.Documents.Open(ActiveWorkbook.Path & "\Fichetype.dot") wrdApp.ShowMe wrdApp.Visible = False wrdApp.Application.ScreenUpdating = False wrdApp.Application.DisplayAlerts = False With wrdDoc wrdDoc.Bookmarks("Nom").Range.Text = Me.TB_nom.Value wrdDoc.Bookmarks("Prénom").Range.Text = Me.TB_prenom.Value wrdDoc.Bookmarks("Adresse").Range.Text = Me.TB_adresse.Value wrdDoc.Bookmarks("Code_postal").Range.Text = Me.CB_code_postal.Value wrdDoc.Bookmarks("Ville").Range.Text = Me.Cb_ville.Value wrdDoc.Bookmarks("telephone").Range.Text = Me.TB_fixe.Value wrdDoc.Bookmarks("mobile").Range.Text = Me.TB_mobile wrdDoc.Bookmarks("mail").Range.Text = Me.TB_mail.Value wrdDoc.Bookmarks("motivation").Range.Text = TB_motivation_projet.Value 'Ensuite je bloque car je ne peux utiliser des signets 'car le nombre de données peut varier d'un utilisateur à l'autre" End With With wrdApp wrdDoc.SaveAs (ActiveWorkbook.Path & "\Fiche de " & Me.TB_nom & ".doc") wrdDoc.Close wrdApp.Quit End With Set wrdDoc = Nothing Set wrdApp = Nothing
Partager