user_mobilelogo

Comment récupérer, dans une liste déroulante d'un userform Word les données d'une source Excel ?

Dans un userform, insérez un combobox. Ce combobox va récupérer les données d'un tableau Excel. La macro ci-dessous est la macro qui va initialiser le userform.

Cette macro fonctionne sur un classeur dont la base de données se trouve dans la première "Feuil1", et commence sur la cellule A1 (titre de la première colonne). Si ce n'est pas le cas, il faudra modifier le nom de la feuille et l'adresse de la première cellule.

Private Sub UserForm_Initialize()

'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 votre page xlsx
'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 = "base_de_données.xlsx"
DocExcel = ActiveDocument.Path & "\" & classeur

Set xlApp = GetObject(DocExcel)
If Err <> 0 Then Set xlApp = CreateObject("Excel.Application")
On Error GoTo 0
If Err <> 0 Then xlApp.Open (DocExcel)

ligne = xlApp.sheets("Feuil1").Range("A1").CurrentRegion.Rows.Count
For k = 2 To ligne
If xlApp.sheets("Feuil1").Cells(k, 1= "" Then Exit Sub
UserForm1.ComboBox1.AddItem xlApp.sheets("Feuil1").Cells(k, 1)
Next
Set xlApp = Nothing
End Sub


L'utilisateur pourra ensuite, par exemple, récupérer une donnée afin de déclencher le publipostage pour cette donnée.

Voici la macro qu'il pourra affecter au bouton de commande afin de déclencher le publipostage avec la sélection du combobox :

Private Sub CommandButton1_Click()
Dim mondoc As Word.Document, ligne As Long
Set mondoc = ActiveDocument
ligne = ComboBox1.ListIndex + 1
With mondoc.MailMerge
    .DataSource.FirstRecord = ligne
    .DataSource.LastRecord = ligne
    .Destination = wdSendToNewDocument
    .Execute
End With
Unload UserForm1
'utile pour les publimages
ActiveDocument.Fields.Update
End Sub
 

 

Statistiques

Aujourd'hui962
Hier1527
Cette semaine962
Ce mois48959
Total depuis 200412406944

68
visiteurs actuellement en ligne

21 septembre 2020