Ces codes
- Ouvrent une instance d'Excel
- Ouvrent un classeur
- Renseignent les combobox des données du classeur Excel, de la feuille et de la colonne voulues
- Ferment le classeur sans l'enregistrer
- Quittent l'application Excel
Ces procédures placent dans une liste les données de la colonne 1 d'une feuille de calculs Excel.
Exemple 1 :
Renseigner un combobox placé dans un document Word à partir des données issues d'un classeur Excel.
Le combobox utilisé est pris dans la "Boîte à outils contrôles"
Procédure à placer dans un Module standard
Exécution de la procédure à l'ouverture du document :
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 Sub ComboboxDansDocument() Dim xlApp As Object Dim xlCL1 As Variant Dim xlFL1 As Variant Set xlApp = CreateObject("Excel.Application") Set xlCL1 = xlApp.Workbooks.Open("D:\xls\adresses diverses.xls") Set xlFL1 = xlCL1.Worksheets("Feuil1") xlApp.Visible = False For i = 1 To Split(xlFL1.UsedRange.Address, "$")(4) ActiveDocument.ComboBox1.AddItem xlFL1.Cells(i, 1).Value 'Colonne 1 Next xlCL1.Close False xlApp.Quit Set xlApp = Nothing Set xlCL1 = Nothing Set xlFL1 = Nothing End Sub
Placer l'appel à la procédure dans l'événement ThisWorkbook_Open du document -> Editeur VBA -> 2 clics sur ThisDocument ouvre la fenêtre de code. Coller cette procédure :
Exemple 2 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Private Sub Document_Open() ComboDansDocument End Sub
Renseigner un combobox placé dans un Userform à partir des mêmes données issues d'un classeur Excel.
Procédure à placer dans la feuille de code de l'userform
Exécution de la procédure à l'ouverture du document :
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 Private Sub UserForm_Activate() Dim xlApp As Object Dim xlFL1 As Variant Dim xlCL1 As Variant Set xlApp = CreateObject("Excel.Application") Set xlCL1 = xlApp.Workbooks.Open("D:\xls\adresses diverses.xls") Set xlFL1 = xlCL1.Worksheets("Feuil1") xlApp.Visible = False For i = 1 To Split(xlFL1.UsedRange.Address, "$")(4) Me.ComboBox1.AddItem xlFL1.Cells(i, 1).Value 'Colonne 1 Next xlCL1.Close False xlApp.Quit Set xlApp = Nothing Set xlCL1 = Nothing Set xlFL1 = Nothing End Sub
Placer l'appel à la procédure dans l'événement ThisWorkbook_Open du document -> Editeur VBA -> 2 clics sur ThisDocument ouvre la fenêtre de code. Coller cette procédure :
Les deux codes servant à renseigner les combobox sont identiques à l'exception de l'emplacement de la liste.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Private Sub Document_Open() Userform1.show End Sub
Une explication sur Split(xlFL1.UsedRange.Address, "$")(4) :
xlFL1.UsedRange.Address donne l'adresse de la plage de donnée sous la forme "A1:" & dernière colonne & dernière ligne
Exemple : "A1:Z75"
Split convertit cette adresse en tableau(4)
où
- tableau(0) = ""
- tableau(1) = "A"
- tableau(2) = "1"
- tableau(3) = "Z"
- tableau(4) = "75"
Dans cet exemple, Split(xlFL1.UsedRange.Address, "$")(4) donne donc 75
Une explication sur les déclarations :
Cette syntaxe dispense de valider la référence "Microsoft Excel XX.X Object Library"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Sub ComboboxDansDocument() Dim xlApp As Object Dim xlCL1 As Variant Dim xlFL1 As Variant Set xlApp = CreateObject("Excel.Application") Set xlCL1 = xlApp.Workbooks.Open("D:\xls\Le Classeur.xls") Set xlFL1 = xlCL1.Worksheets("Feuil1")
Si cela pose problème, valider cette référence ( -> Editeur VBA -> Outils -> Références ) et utiliser la syntaxe suivante :
Bonne programmation
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Dim xlApp As Excel.Application Dim xlCL1 As Excel.Workbook Dim xlFL1 As Excel.Worksheet Set xlApp = CreateObject("Excel.application") Set xlCL1 = xlApp.Workbooks.Open("D:\xls\Le Classeur.xls") Set xlFL1 = xlCL1.Worksheets("Feuil1")
Partager