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.

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 mon_fichier par le nom du fichier.xlsx
classeur = "Mon_fichier"
Dim AppExc As Object
Dim DocWrd As String
On Error Resume Next
Set AppExc = GetObject(, "Excel.Application")
If Err <> 0 Then _<br>Set AppExc = CreateObject("Excel.Application")
On Error GoTo 0
DocWrd = ActiveDocument.Path & "" & suivant & ".xlsx"
On Error Resume Next
AppExc.Windows(classeur & ".xlsx").Activate
If Err <> 0 Then AppExc.Workbooks.Open (DocWrd)
AppActivate AppExc
ligne = AppExc.sheets("Feuil1").[A65000].End(xlup).Row
For k = 2 To 5000 'ou plus
If AppExc.sheets("Feuil1").Cells(k, 1= "" Then Exit Sub
UserForm1.ComboBox1.AddItem AppExc.sheets("Feuil1").Cells(k, 1)
Next
AppExc.Workbooks.Quit Savechanges:=False
Set AppExc = Nothing
End Sub
 

 


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

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
Set mondoc = ActiveDocument
ligne = ComboBox1.ListIndex + 1
MsgBox ligne

With mondoc.MailMerge
    .DataSource.FirstRecord = ligne
    .DataSource.LastRecord = ligne
    .Destination = wdSendToNewDocument
    .Execute
End With
UserForm1.Hide
End Sub
 

 

Statistiques

Aujourd'hui2510
Hier2580
Cette semaine10410
Ce mois68190
Total depuis 200411582459

14
visiteurs actuellement en ligne

28 mai 2020