Liste Déroulante dans word allant chercher des données dans Excel

Le
Alex
Bonjour à tous,

Je voudrais savoir s'il y a une possibilité de créer une liste
déroulante dans un document word, qui va aller chercher les données
correspondant à la sélection dans une feuille de calcul excel ?

Merci de vos réponses.
Alex
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
DanielCo
Le #23100831
Bonjour,
Je pense que tu auras plus facilement une réponse sur le forum Word :
microsoft.public.fr.word
Cordialement.
Daniel


Bonjour à tous,

Je voudrais savoir s'il y a une possibilité de créer une liste
déroulante dans un document word, qui va aller chercher les données
correspondant à la sélection dans une feuille de calcul excel ?

Merci de vos réponses.
Alex
Alex
Le #23101071
Bonjour,
Merci pour cette réponse. Je vais tenté sur le forum Word.
Cordialement
Alex
Alex
Le #23106791
Re bonjour à tous,

Je reviens vers vous, car je n'arrive toujours pas à alimenter une
combobox word avec des données d'Excel. J'ai bien tenté comme me l'a
conseillé Daniel d'aller sur le forum de Word mais je n'ai pas réussi
à trouver des réponses.
J'ai trouvé quelques exemples sur le forum Word et ou Excel, mais ne
parvient pas à obtenir un résultat. Certains tests ne font même pas
beugué la macro, d' autres beugue immédiatement, mais mon combox reste
maleureusement toujours vide Snif... Je triture, je corrige et modifie
mais je n'abouti a aucun résultat.
Peut etre que je ne place pas les lignes de commande au bonne endroit
entre ThisDocument, Module1 et références à normal.
J'ai aussi ajouter dans Outils/Référence du "VBA Word", le Microsoft
Excel 10.0 Object Library pensant que le problème pourrais venir de
là.
Je vous remercie par avance, de vos eventuelles suggestions qui me
permettrait de remplir ce "foutu" combox de word :-)
Bien cordialement
Alex
michdenis
Le #23107731
Bonjour,

Tu as un fichier exemple ici : http://cjoint.com/?0cjw4KF5Fpb

Avant d'exécuter le code, prend le temps de lire la procédure,
tu as quelques variables dont il faudra que tu adaptes.



MichD
--------------------------------------------
Alex
Le #23109041
Bonjour Michel,

Merci pour ta réponse et ton fichier joint.

J'ai bien ajouté via outils références le module : Microsoft Activex
Data Objects 2.8 Librairy.

J'ai procédé au modification :
* du nom de chemin d'accès,
* le nom du classeur,
* j'ai laissé Feuil1 car ma feuille s'appelle ainsi,
* Dans Requette :
* J'ai corrigé Prénom par le nom de titre de ma colonne en
IMMEUBLE,

Jusque là, tout semble être bien.

Mais la macro plante sur la ligne : Rst.Open Requete, Conn,
adOpenForwardOnly, adLockOptimistic et j'ai le message suivant :

Erreur d'execution '-2147467259 (80004005)' :
Le moteur de base de données ne peut pas trouver 'Feuil1$'. Assurez
vous que le nom de paramètre ou d'alias est valide, qu'il ne comprend
pas de caractère ou de ponctuation incorrect et qu'il n'est pas trop
long.

J'ai alors tenté d'oter le $ de Requete = "SELECT IMMEUBLE From [" &
Feuille & "$] " _ pour avoir Requete = "SELECT IMMEUBLE From [" &
Feuille & "] " , mais j'ai un nouveau message d'erreur qui
apparaît :

Erreur d'execution '-2147217865 (80040e37)' :

Le moteur de base de données Microsoft Jet n'a pas pu trouver l'objet
'Feuil1'. Assurez vous que l'objet existe et que vous avez
correctement saisi son nom et son chemin d'accès.

J'ai remis le $, puis sur feuil1, j'ai ajouté $ après le 1, mais j'ai
denouveau le message d'erreur. et j'ai donc supprimer denouveau le $
du nom de l'onglet.

Vois tu ce que pourrait etre le problème.

Après j'ai un doute sur la ligne "Extended Properties=""Excel
8.0;HDR=YES;", je suis en excel 2003 -SP3 , est ce que cela peut jouer
dans le déroulement de la macro ?

Merci par avance de ton aide.
Bien cordialement.
Alex
LSteph
Le #23109391
Bonjour,

Sous réserve de nommer ta plage maliste dans un fichier c:testou.xls,
par exemple
et d'avoir une combobox1 dans un userform1

'dans un module standard de ton projet word
Public Sub GetListXl()
Dim myXL As Object, myTab As Variant
Set myXL = GetObject("c:testou.xls")
myTab = myXL.names("maliste").referstorange
UserForm1.ComboBox1.List = myTab

Set myXL = Nothing
End Sub

Public Sub GoListe()
Call GetListXl
UserForm1.Show
End Sub

'LSteph
'remerciements à Anacoluthe


Alex a écrit :
Bonjour à tous,

Je voudrais savoir s'il y a une possibilité de créer une liste
déroulante dans un document word, qui va aller chercher les données
correspondant à la sélection dans une feuille de calcul excel ?

Merci de vos réponses.
Alex
michdenis
Le #23109701
A ) Le symbole "$" doit accompagner obligatoirement le nom de la feuille tel
que présenté dans le code que je t'ai soumis. C'est la manière de dire que
"Feuil1" est une table qu'il doit rechercher le nom du champ "IMMEUBLE"
dans cette table. Nul besoin d'ajouter au nom de l'onglet de la feuille le
symbole $.

Tes étiquettes de colonnes doivent être EN LIGNE 1

Voici : 1 fichier compressé contenant le document Word et le fichier Excel.
Tu décompresses le fichier en laissant dans le même répertoire les 2 fichiers.
Ouvre le document Word et exécute la procédure.
http://cjoint.com/?0ckm4Gjmjrn

Il m'est difficile d'aller plus loin que ce que j'ai fait !

MichD
--------------------------------------------
LSteph
Le #23111321
Bonjour,

Sous réserve de nommer ta plage maliste dans un fichier c:testou.xls,
par exemple
et d'avoir une combobox1 dans un userform1

'dans un module standard de ton projet word
Public Sub GetListXl()
Dim myXL As Object, myTab As Variant
Set myXL = GetObject("c:testou.xls")
myTab = myXL.names("maliste").referstorange
UserForm1.ComboBox1.List = myTab

Set myXL = Nothing
End Sub

Public Sub GoListe()
Call GetListXl
UserForm1.Show
End Sub

'LSteph
'remerciements à Anacoluthe


"Alex" news:
Bonjour Michel,

Merci pour ta réponse et ton fichier joint.

J'ai bien ajouté via outils références le module : Microsoft Activex
Data Objects 2.8 Librairy.

J'ai procédé au modification :
* du nom de chemin d'accès,
* le nom du classeur,
* j'ai laissé Feuil1 car ma feuille s'appelle ainsi,
* Dans Requette :
* J'ai corrigé Prénom par le nom de titre de ma colonne en
IMMEUBLE,

Jusque là, tout semble être bien.

Mais la macro plante sur la ligne : Rst.Open Requete, Conn,
adOpenForwardOnly, adLockOptimistic et j'ai le message suivant :

Erreur d'execution '-2147467259 (80004005)' :
Le moteur de base de données ne peut pas trouver 'Feuil1$'. Assurez
vous que le nom de paramètre ou d'alias est valide, qu'il ne comprend
pas de caractère ou de ponctuation incorrect et qu'il n'est pas trop
long.

J'ai alors tenté d'oter le $ de Requete = "SELECT IMMEUBLE From [" &
Feuille & "$] " _ pour avoir Requete = "SELECT IMMEUBLE From [" &
Feuille & "] " , mais j'ai un nouveau message d'erreur qui
apparaît :

Erreur d'execution '-2147217865 (80040e37)' :

Le moteur de base de données Microsoft Jet n'a pas pu trouver l'objet
'Feuil1'. Assurez vous que l'objet existe et que vous avez
correctement saisi son nom et son chemin d'accès.

J'ai remis le $, puis sur feuil1, j'ai ajouté $ après le 1, mais j'ai
denouveau le message d'erreur. et j'ai donc supprimer denouveau le $
du nom de l'onglet.

Vois tu ce que pourrait etre le problème.

Après j'ai un doute sur la ligne "Extended Properties=""Excel
8.0;HDR=YES;", je suis en excel 2003 -SP3 , est ce que cela peut jouer
dans le déroulement de la macro ?

Merci par avance de ton aide.
Bien cordialement.
Alex
michdenis
Le #23111381
Bonjour LSteph,

Cette ligne de code signifie que l'application (une instance) Excel est déjà ouverte.
Ce n'est pas évident d'autant plus que le travail se fait à partir de Word.
Set myXL = GetObject("c:testou.xls")

Sinon, il aurait fallu écrire :
Set myXl = createObject("c:testou.xls")

Il faudrait aussi ajouter :
myXL.Visible =True 'ce n'est pas nécessaire, seulement pour les tests.
Set Wk = Xl.workbooks.open("c:testou.xls")

'Corriger cette ligne :
myTab = Wk.names("maliste").referstorange

Dans tous les cas, cette approche semble préférable afin de
s'assurer la non-interférence dans le déroulement des opérations.

Aurais-je droit à des remerciements comme Anacoluthe ?
;-))

MichD
--------------------------------------------
Alex
Le #23113931
Bonjour à tous,

Merci à vous pour vos réponses et vos propositions de résolution à mon
problème.
La proposition de Michel fonctionne tès bien, mais trois questions :

1°/ Je n'arrive pas à modifier la ligne suivante : Chemin =
ThisDocument.Path & ""
en mettant le chemin d'accès exacte, j'ai tenté Chemin = "C:Document s
and SettingsAlex95Bureauckm4Gjmjrn_Documents" ou Chemin =
ThisDocument.Path & "C:Documents and SettingsAlex95Bureau
ckm4Gjmjrn_Documents"
mais à chaque fois, j'ai un message d'erreur, alors que si je laisse
la ligne d'origine cela fonctionne, me confirmes tu qu'il ne faut pas
modifier cette ligne ? et qu'il trouvera bien le fichier excel avec la
lettre si les deux fichiers sont dans le même répertoire ?
2°/ Le multiligne
de ma liste excel est représenté en retour de chariot mais ne les
faits pas. Peux ajouter le fait qu'il représente la cellule avec le
multi-ligne ?

3°/ Enfin ma derniere question, avant de modifier le normal.dot, est
ce que je peux mettre ces lignes de commandes sur mon normal.dot, afin
de l'appliquer à toutes mes lettres ?

Encore un grand merci à tous
Alex
Publicité
Poster une réponse
Anonyme