Avec une macro bien entendu !
Insérez dans le document un contrôle de contenu Liste déroulante (modifiable ou non selon votre choix) et donnez-lui un nom pour la balise.
Ensuite copiez la macro ci-dessous et collez-la dans ThisDocument.
Modifiez les noms en fonction de vos éléments :
Éléments |
Dans mon exemple, à modifier éventuellement |
Nom de la balise | "Noms" |
Nom du fichier Excel | "mon_classeur.xlsx" |
Nom du dossier du fichier Excel | par défaut dans le même dossier que le fichier Word Dans le cas inverse, modifier "ActiveDocument.Path" et mettre le chemin de votre dossier |
Nom de la feuille Excel où se trouvent les données | "Feuil1" |
Colonne où se trouvent les données | Colonne A, à partir de la cellule A2 jusqu'à la dernière |
Private Sub Document_ContentControlOnEnter(ByVal ContentControl As ContentControl)
'le fichier Xlsx doit être dans le même répertoire que le fichier Word
'sinon il faut changer ActiveDocument.Path
'changer éventuellement le nom Feuil1 par le nom de la feuille du classeur
'changer base_de_données.xlsx par le nom de votre fichier.xlsx
Dim xlApp As Object
Dim DocExcel As String
Dim classeur, ligne, k
classeur = "mon_classeur.xlsx"
DocExcel = ActiveDocument.Path & "\" & classeur
'changer "noms" par le nom de la balise dans votre document
ActiveDocument.SelectContentControlsByTag("noms")(1).DropdownListEntries.Clear
Set xlApp = GetObject(DocExcel)
If Err <> 0 Then Set xlApp = CreateObject("Excel.Application")
On Error GoTo 0
If Err <> 0 Then xlApp.Open (DocExcel)
'si les données se trouvent dans une autre colonne que la colonne A, changer "A1"
ligne = xlApp.sheets("Feuil1").Range("A1").CurrentRegion.Rows.Count
For k = 2 To ligne
If xlApp.sheets("Feuil1").Cells(k, 1) = "" Then Exit Sub
ActiveDocument.SelectContentControlsByTag("noms")(1).DropdownListEntries.Add xlApp.sheets("Feuil1").Cells(k, 1)
Next
Set xlApp = Nothing
End Sub
Attention ! cette macro ne fonctionnera que pour les utilisateurs ayant accès au classeur Excel. Pour les autres la liste déroulante restera vide.
Le but est l'impression papier ou la conversion en PDF.