Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

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

17 réponses
Avatar
Alex
Bonjour =E0 tous,

Je voudrais savoir s'il y a une possibilit=E9 de cr=E9er une liste
d=E9roulante dans un document word, qui va aller chercher les donn=E9es
correspondant =E0 la s=E9lection dans une feuille de calcul excel ?

Merci de vos r=E9ponses.
Alex

10 réponses

1 2
Avatar
DanielCo
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
Avatar
Alex
Bonjour,
Merci pour cette réponse. Je vais tenté sur le forum Word.
Cordialement
Alex
Avatar
Alex
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
Avatar
michdenis
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
--------------------------------------------
Avatar
Alex
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
Avatar
LSteph
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
Avatar
michdenis
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
--------------------------------------------
Avatar
LSteph
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 dans le message de
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
Avatar
michdenis
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
--------------------------------------------
Avatar
Alex
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
1 2