Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Word > VBA Word
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 27/11/2007, 17h39   #1
Invité de passage
 
Inscription : juillet 2007
Messages : 22
Détails du profil
Informations forums :
Inscription : juillet 2007
Messages : 22
Points : 4
Points : 4
Par défaut remplir une combobox d'un formulaire word avec une seule cellule d'une feuille excel

salut c'est titemireille

toujours aux prises avec ses formulaires!

bien, alors mon pb du jour est le suivant : remplir des combobox avec les données contenues dans une feuille excel. Lisez jusqu'au bout SVP

je précise :
D'un côté, j'ai un fichier word que je veux remplir avec un formulaire.
De l'autre côté, j'ai un classeur excel avec plusieurs feuilles.

j'ouvre mon formulaire dans word, je remplis la combox1 avec la liste des onglets de mon classeur, par ex. X, Y et Z

dans la combobox1, je choisis par exemple Y et les autres combobox doivent se remplir avec les données contenues dans les cellules de la feuille Y.

j'ai environ 20 cellules et chacune doit remplir une combobox differente, 10 cellules = 10 combobox.

le code a fonctionné trois ou quatre fois mais cela ne marche plus.

en fait, cela fonctionne jusqu'à la réouverture de la page selectionnée et puis je recois un message d'erreur : "la méthode sheets de l'objet global à échoué"

pouvez vous m'aider s'il vous plait

merci d'avance

le code est le suivant, la combobox1 s'appelle "mome", la combobox2 s'appelle combobox1
Code :
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
 
Option Explicit
 
Private Sub Userform_initialize()
'Avenant au contrat d'accueil
'Déclaration des variables pour ouvrir Excel
'Application Excel
Dim appExcel As New Excel.Application
'Classeur Excel
Dim wbExcel As Excel.Workbook
'Feuille Excel
Dim wsExcel As Excel.Worksheet
'Ouverture de l'application
'Ouverture d'un fichier Excel
Set wbExcel = appExcel.Workbooks.Open("C:\Documents and Settings\Administrateur\Mes documents\Mes sources de données/Données.xls")
appExcel.Visible = True
'Choix du nom de l'enfant
Dim sh As Worksheet
For Each sh In activeworkbook.Sheets
mome.AddItem sh.name
Next
appExcel.Workbooks("Données.xls").Close
appExcel.Quit
End Sub
 
Private Sub Valider_click()
'insertion du nom de l'enfant dans mon document word
Selection.GoTo , , , "enfantnom"
Dim smome As String
smome = mome
Selection.InsertAfter mome
 
'Déclaration des variables pour ouvrir Excel
'Application Excel
Dim appExcel As New Excel.Application
'Classeur Excel
Dim wbExcel As Excel.Workbook
'Feuille Excel
Dim wsExcel As Excel.Worksheet
'Ouverture de l'application
'Ouverture d'un fichier Excel
'ouverture de la feuille correspondant au nom de l'enfant choisi
Dim ssmome As String
ssmome = mome
Set wbExcel = appExcel.Workbooks.Open("C:\Documents and Settings\Administrateur\Mes documents\Mes sources de données/Données.xls")
appExcel.Visible = True
wbExcel.Sheets(ssmome).Activate
'insertion de la date d'entrée dans la comboxbox
Dim i
For i = 1 To 1
comboBox1.AddItem Sheets(ssmome).Cells(6, 2)
Next
'insertion de la date d'entée dans le document word
Dim sdateentree As String
sdateentree = comboBox1
Selection.InsertAfter comboBox1
End Sub
titemireille est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/11/2007, 09h31   #2
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
Ton problème doit venir de ces lignes placées dans un click.
Code :
1
2
3
Set wbExcel = appExcel.Workbooks.Open("C:\Documents and Settings\Administrateur\Mes documents\Mes sources de données/Données.xls")
appExcel.Visible = True
wbExcel.Sheets(ssmome).Activate
Je ne vois pas la fermeture de ton fichier, ce qui fait qu'il reste ouvert et qu'au prochain click, tu crées une seconde instance d'Excel dans laquelle tu tentes d'ouvrir une nouvelle fois ton fichier.
Tu as plusieurs solutions :
Soit tu fermes les instances Appli et fichier -> Lent
Soit tu ne crées qu'une instance d'Excel dans Userform_Initialize que tu ne fermes pas et teste l'existence du fichier Données.xls dans l'appli Excel -> Ce serait plus malin mais implique que tu déclare wbExcel en tête de ton code, avant les macros.
Code :
Dim appExcel As New Excel.Application
Soit tu fermes ton fichier en fin de sub Valider_click auquel cas tu supprimes son instance mais ne fermes pas l'instance Excel.

Dans les deux derniers cas, n'oublie pas de fermer L'instance d'Excel en quittant ton appli en plaçant correctement
Code :
1
2
appExcel.Quit
Set appExcel = Nothing
Tu dis
A+
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h28.


 
 
 
 
Partenaires

Hébergement Web