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

pb liaison word excel avec combobox

11 réponses
Avatar
Sky
bonjour à tous,

J'ai un userform dans word dans lequel est un combobox dont je voudrais que
le contenu se réfère à une plage nommé dans excel (ListeChantier).
Avec l'aide d'anacoluthe, il a été établi le code suivant que je n'arrive
pas à appliquer, le combobox reste désespérement vide alors que toutes les
données sont exactes.

Pour récapituler dans VB

- au niveau de This document j'ai le code suivant

Private Sub document_open()

Dim MonXL As Object
Dim Tablo As Variant
Set MonXL = GetObject("E:\PROJET EN COURS\CONTRATS WORD\planning.xls")
Tablo = MonXL.Names("ListeChantier").RefersToRange
Me.ListChant.List = Tablo
Set MonXL = Nothing

End Sub


- dans Feuilles
j'ai un userform "CDIC" avec aucun problème de code


- Dans modules
j'ai un module1 avec le code suivant

Sub autoopen()

CDIC.Show

End Sub

PS : dans mon userform ListChant existe bien sous le nom du combobox, le
chemin d'accès est bon
lorsque je lance la macro, le fichier est fermé et il n'a aucune protection

D'avance merci pour votre aide


--
Franck

10 réponses

1 2
Avatar
Anacoluthe
Bonjour !

'Sky' nous a écrit ...
Avec l'aide d'anacoluthe, il a été établi le code suivant que je n'arrive
pas à appliquer


Par pitié, Sky, si vous souhaitez vous adonner au VBA
esayez d'être PRÉCIS sur les OBJETS !!!

Dans le code dont vous parlez :
- le contrôle* est une ListBox, pas une ComboBox
- le contrôle est dans un DOCUMENT, pas une USERFORM
( vous aviez toujours parlé de formulaire
un formulaire Word est un document Word )

S'il s'agit d'une UserForm (c'est donc un AUTRE contenant)
le code n'a rien à voir avec ThisDocument , le Me et le
Document_open qui s'y réfèrent : si vous appliquez des
méthodes à des objets qui ne sont pas les bons,
ça ne DOIT pas marcher ! :-) )))

Appliqué aux bons objets à la bonne place, le code
pour remplir une combobox d'une userform avec une plage
Excel nommée est aussi simple que celui pour remplir
une listbox d'un formulaire avec la même plage.
Bon courage !

Anacoluthe
« Tant et aussi longtemps que l'on sait recommencer,
rien n'est totalement perdu. »
- Fleurette LEVESQUE

Avatar
ClémentMarcotte
Rien qu'à gérer le combobox sans utiliser Excel.

http://groups.google.com/group/microsoft.public.fr.word/browse_thread/thread/8c116c8009e183a1/c4f9f0f26ff8b12f?lnk=st&q­ditem+(listbox+OR+combobox)+author:&rnum=1&hl=fr#c4f9f0f26ff8b12f


"Sky" a écrit dans le message de
news:431565f3$0$1740$
bonjour à tous,

J'ai un userform dans word dans lequel est un combobox dont je voudrais
que

le contenu se réfère à une plage nommé dans excel (ListeChantier).
Avec l'aide d'anacoluthe, il a été établi le code suivant que je n'arrive
pas à appliquer, le combobox reste désespérement vide alors que toutes les
données sont exactes.

Pour récapituler dans VB

- au niveau de This document j'ai le code suivant

Private Sub document_open()

Dim MonXL As Object
Dim Tablo As Variant
Set MonXL = GetObject("E:PROJET EN COURSCONTRATS WORDplanning.xls")
Tablo = MonXL.Names("ListeChantier").RefersToRange
Me.ListChant.List = Tablo
Set MonXL = Nothing

End Sub


- dans Feuilles
j'ai un userform "CDIC" avec aucun problème de code


- Dans modules
j'ai un module1 avec le code suivant

Sub autoopen()

CDIC.Show

End Sub

PS : dans mon userform ListChant existe bien sous le nom du combobox, le
chemin d'accès est bon
lorsque je lance la macro, le fichier est fermé et il n'a aucune
protection


D'avance merci pour votre aide


--
Franck




Avatar
Franck SCHRICKE
Bonsoir !

Désolé pour les erreurs de vocable, mais je suis franchement perdu dans le
vb et j'essaye d'avancer du mieux que je peux.
Etant autodidacte, je n'ais pas les bases de ce langage

Merci de votre compréhension

@+

"Sky" a écrit dans le message de news:
431565f3$0$1740$
bonjour à tous,

J'ai un userform dans word dans lequel est un combobox dont je voudrais
que le contenu se réfère à une plage nommé dans excel (ListeChantier).
Avec l'aide d'anacoluthe, il a été établi le code suivant que je n'arrive
pas à appliquer, le combobox reste désespérement vide alors que toutes les
données sont exactes.

Pour récapituler dans VB

- au niveau de This document j'ai le code suivant

Private Sub document_open()

Dim MonXL As Object
Dim Tablo As Variant
Set MonXL = GetObject("E:PROJET EN COURSCONTRATS WORDplanning.xls")
Tablo = MonXL.Names("ListeChantier").RefersToRange
Me.ListChant.List = Tablo
Set MonXL = Nothing

End Sub


- dans Feuilles
j'ai un userform "CDIC" avec aucun problème de code


- Dans modules
j'ai un module1 avec le code suivant

Sub autoopen()

CDIC.Show

End Sub

PS : dans mon userform ListChant existe bien sous le nom du combobox, le
chemin d'accès est bon
lorsque je lance la macro, le fichier est fermé et il n'a aucune
protection

D'avance merci pour votre aide


--
Franck



Avatar
Anacoluthe
Bonjour !

'Franck SCHRICKE' nous a écrit ...
Désolé pour les erreurs de vocable, mais je suis franchement perdu dans le
vb et j'essaye d'avancer du mieux que je peux.
Etant autodidacte, je n'ais pas les bases de ce langage
Merci de votre compréhension


Pas grave, on a l'habitude ici. Commencez par faire du simple
pour comprendre comment ça marche. Voyez les exemples de la faq.
Sur le forum on peut vous donner un coup de main, vous orienter
sur une propriété ou une méthode d'un objet mais on ne peut pas
écrire une application à votre place. Bon courage !

Essayez encore...
Une UserForm nommée MaUserForm contenant une ComboBox nommée
ComboBox1 à remplir avec la plage ListeChantier de Planning.xls :

Public Sub RemplirComboAvecExcel()
Dim MonXL As Object
Dim Tablo As Variant
Set MonXL = GetObject("E:planning.xls")
Tablo = MonXL.Names("ListeChantier").RefersToRange
MaUserForm.ComboBox1.List = Tablo
MaUserForm.ComboBox1.ListIndex = 0
Set MonXL = Nothing
End Sub

Public Sub LanceUserForm()
RemplirComboAvecExcel
MaUserForm.Show
End Sub

Anacoluthe
« Le principal est de débuter. »
- Georges Charles HUYSMANS

Avatar
Sky
Merci encore pour votre aide,

Il y a beaucoup de choses à connaitre et la résolution d'un problème en
provoque d'autres derrière.
J'essayerai d'être plus clair dans mes requêtes futures

Cordialement

"Anacoluthe" a écrit dans le message de news:
%
Bonjour !

'Franck SCHRICKE' nous a écrit ...
Désolé pour les erreurs de vocable, mais je suis franchement perdu dans
le vb et j'essaye d'avancer du mieux que je peux.
Etant autodidacte, je n'ais pas les bases de ce langage
Merci de votre compréhension


Pas grave, on a l'habitude ici. Commencez par faire du simple
pour comprendre comment ça marche. Voyez les exemples de la faq.
Sur le forum on peut vous donner un coup de main, vous orienter
sur une propriété ou une méthode d'un objet mais on ne peut pas
écrire une application à votre place. Bon courage !

Essayez encore...
Une UserForm nommée MaUserForm contenant une ComboBox nommée
ComboBox1 à remplir avec la plage ListeChantier de Planning.xls :

Public Sub RemplirComboAvecExcel()
Dim MonXL As Object
Dim Tablo As Variant
Set MonXL = GetObject("E:planning.xls")
Tablo = MonXL.Names("ListeChantier").RefersToRange
MaUserForm.ComboBox1.List = Tablo
MaUserForm.ComboBox1.ListIndex = 0
Set MonXL = Nothing
End Sub

Public Sub LanceUserForm()
RemplirComboAvecExcel
MaUserForm.Show
End Sub

Anacoluthe
« Le principal est de débuter. »
- Georges Charles HUYSMANS



Avatar
Sky
Bonjour !

J'ai avancé dans mon problème, après avoir potassé l'aide embarquée dans
word, j'ai modifié un peu votre code :

Public Sub RemplirComboAvecExcel()

Dim MonXL As Object
Dim Tablo As Variant

Set MonXL = GetObject(, "excel.application")
MonXL.Visible = False
MonXL.Workbooks.Open ("E:PROJET EN COURSCONTRATS WORDplanning.xls")

Tablo = MonXL.Name("ListeChantier").RefersToRange
CDIC.ListChant.List = Tablo
CDIC.ListChant.ListIndex = 0
Set MonXL = Nothing


End Sub

PS : si je peux me permettre et pour votre information la fonction Name ne
prend pas de s

A partir du code ci-dessus, j'ai le message suivant

Erreur 451 : La procédure property let n'est pas définie et la procédure
property get n'a pas renvoyé d'objet.

=> Autant je comprends la propriété d'appel de l'application (en l'occurence
ici excel, avec l'ouverture du classeur planning.xls) que je m'interroge sur
la propriété let

Pouvez vous m'aiguiller sur son fonctionnement ?
d'avance merci

@+
End Sub
"Anacoluthe" a écrit dans le message de news:
%
Bonjour !

'Franck SCHRICKE' nous a écrit ...
Désolé pour les erreurs de vocable, mais je suis franchement perdu dans
le vb et j'essaye d'avancer du mieux que je peux.
Etant autodidacte, je n'ais pas les bases de ce langage
Merci de votre compréhension


Pas grave, on a l'habitude ici. Commencez par faire du simple
pour comprendre comment ça marche. Voyez les exemples de la faq.
Sur le forum on peut vous donner un coup de main, vous orienter
sur une propriété ou une méthode d'un objet mais on ne peut pas
écrire une application à votre place. Bon courage !

Essayez encore...
Une UserForm nommée MaUserForm contenant une ComboBox nommée
ComboBox1 à remplir avec la plage ListeChantier de Planning.xls :

Public Sub RemplirComboAvecExcel()
Dim MonXL As Object
Dim Tablo As Variant
Set MonXL = GetObject("E:planning.xls")
Tablo = MonXL.Names("ListeChantier").RefersToRange
MaUserForm.ComboBox1.List = Tablo
MaUserForm.ComboBox1.ListIndex = 0
Set MonXL = Nothing
End Sub

Public Sub LanceUserForm()
RemplirComboAvecExcel
MaUserForm.Show
End Sub

Anacoluthe
« Le principal est de débuter. »
- Georges Charles HUYSMANS



Avatar
ClémentMarcotte
PS : si je peux me permettre et pour votre information la fonction Name ne
prend pas de s



Ça dépend:

Il y a la collection Names qui regroupe les objets Name.

Les objets Name

L' instruction Name pour renommer des fichiers.

M'est avis que le Names d'Anacoluthe est correct.

A partir du code ci-dessus, j'ai le message suivant

Erreur 451 : La procédure property let n'est pas définie et la procédure
property get n'a pas renvoyé d'objet.



Où ?

De plus les procédures "Property" servent dans les modules de classe, pas
dans les modules standards.


As-tu essayé la procédure d'Anacoluthe sans rien changer ?

"Sky" a écrit dans le message de
news:43184ac8$0$1740$
Bonjour !

J'ai avancé dans mon problème, après avoir potassé l'aide embarquée dans
word, j'ai modifié un peu votre code :

Public Sub RemplirComboAvecExcel()

Dim MonXL As Object
Dim Tablo As Variant

Set MonXL = GetObject(, "excel.application")
MonXL.Visible = False
MonXL.Workbooks.Open ("E:PROJET EN COURSCONTRATS WORDplanning.xls")

Tablo = MonXL.Name("ListeChantier").RefersToRange
CDIC.ListChant.List = Tablo
CDIC.ListChant.ListIndex = 0
Set MonXL = Nothing


End Sub

=> Autant je comprends la propriété d'appel de l'application (en
l'occurence

ici excel, avec l'ouverture du classeur planning.xls) que je m'interroge
sur

la propriété let

Pouvez vous m'aiguiller sur son fonctionnement ?
d'avance merci

@+
End Sub
"Anacoluthe" a écrit dans le message de
news:

%
Bonjour !

'Franck SCHRICKE' nous a écrit ...
Désolé pour les erreurs de vocable, mais je suis franchement perdu dans
le vb et j'essaye d'avancer du mieux que je peux.
Etant autodidacte, je n'ais pas les bases de ce langage
Merci de votre compréhension


Pas grave, on a l'habitude ici. Commencez par faire du simple
pour comprendre comment ça marche. Voyez les exemples de la faq.
Sur le forum on peut vous donner un coup de main, vous orienter
sur une propriété ou une méthode d'un objet mais on ne peut pas
écrire une application à votre place. Bon courage !

Essayez encore...
Une UserForm nommée MaUserForm contenant une ComboBox nommée
ComboBox1 à remplir avec la plage ListeChantier de Planning.xls :

Public Sub RemplirComboAvecExcel()
Dim MonXL As Object
Dim Tablo As Variant
Set MonXL = GetObject("E:planning.xls")
Tablo = MonXL.Names("ListeChantier").RefersToRange
MaUserForm.ComboBox1.List = Tablo
MaUserForm.ComboBox1.ListIndex = 0
Set MonXL = Nothing
End Sub

Public Sub LanceUserForm()
RemplirComboAvecExcel
MaUserForm.Show
End Sub

Anacoluthe
« Le principal est de débuter. »
- Georges Charles HUYSMANS







Avatar
Sky
oui, mais elle ne donne aucun résultat, la liste reste vide

J'ai pensé qu'anacoluthe avait fait une erreur de syntaxe mais à priori,
c'est bon




"ClémentMarcotte" a écrit dans le message de
news:
PS : si je peux me permettre et pour votre information la fonction Name
ne
prend pas de s



Ça dépend:

Il y a la collection Names qui regroupe les objets Name.

Les objets Name

L' instruction Name pour renommer des fichiers.

M'est avis que le Names d'Anacoluthe est correct.

A partir du code ci-dessus, j'ai le message suivant

Erreur 451 : La procédure property let n'est pas définie et la procédure
property get n'a pas renvoyé d'objet.



Où ?

De plus les procédures "Property" servent dans les modules de classe, pas
dans les modules standards.


As-tu essayé la procédure d'Anacoluthe sans rien changer ?

"Sky" a écrit dans le message de
news:43184ac8$0$1740$
Bonjour !

J'ai avancé dans mon problème, après avoir potassé l'aide embarquée dans
word, j'ai modifié un peu votre code :

Public Sub RemplirComboAvecExcel()

Dim MonXL As Object
Dim Tablo As Variant

Set MonXL = GetObject(, "excel.application")
MonXL.Visible = False
MonXL.Workbooks.Open ("E:PROJET EN COURSCONTRATS WORDplanning.xls")

Tablo = MonXL.Name("ListeChantier").RefersToRange
CDIC.ListChant.List = Tablo
CDIC.ListChant.ListIndex = 0
Set MonXL = Nothing


End Sub

=> Autant je comprends la propriété d'appel de l'application (en
l'occurence

ici excel, avec l'ouverture du classeur planning.xls) que je m'interroge
sur

la propriété let

Pouvez vous m'aiguiller sur son fonctionnement ?
d'avance merci

@+
End Sub
"Anacoluthe" a écrit dans le message de
news:

%
Bonjour !

'Franck SCHRICKE' nous a écrit ...
Désolé pour les erreurs de vocable, mais je suis franchement perdu
dans
le vb et j'essaye d'avancer du mieux que je peux.
Etant autodidacte, je n'ais pas les bases de ce langage
Merci de votre compréhension


Pas grave, on a l'habitude ici. Commencez par faire du simple
pour comprendre comment ça marche. Voyez les exemples de la faq.
Sur le forum on peut vous donner un coup de main, vous orienter
sur une propriété ou une méthode d'un objet mais on ne peut pas
écrire une application à votre place. Bon courage !

Essayez encore...
Une UserForm nommée MaUserForm contenant une ComboBox nommée
ComboBox1 à remplir avec la plage ListeChantier de Planning.xls :

Public Sub RemplirComboAvecExcel()
Dim MonXL As Object
Dim Tablo As Variant
Set MonXL = GetObject("E:planning.xls")
Tablo = MonXL.Names("ListeChantier").RefersToRange
MaUserForm.ComboBox1.List = Tablo
MaUserForm.ComboBox1.ListIndex = 0
Set MonXL = Nothing
End Sub

Public Sub LanceUserForm()
RemplirComboAvecExcel
MaUserForm.Show
End Sub

Anacoluthe
« Le principal est de débuter. »
- Georges Charles HUYSMANS











Avatar
ClémentMarcotte
Bonjour,

Si ce n'est pas confidentiel, mets une copie abrégée de ton classeur (genre
une feuille typique avec une dizaine de lignes différentes) et ton fichier
Word sur:

http://www.cjoint.com et ramène nous le lien que cjoint va te donner à la
fin du processus.


"Sky" a écrit dans le message de
news:43185a3b$0$7849$
oui, mais elle ne donne aucun résultat, la liste reste vide

J'ai pensé qu'anacoluthe avait fait une erreur de syntaxe mais à priori,
c'est bon




"ClémentMarcotte" a écrit dans le message
de

news:
PS : si je peux me permettre et pour votre information la fonction Name
ne
prend pas de s



Ça dépend:

Il y a la collection Names qui regroupe les objets Name.

Les objets Name

L' instruction Name pour renommer des fichiers.

M'est avis que le Names d'Anacoluthe est correct.

A partir du code ci-dessus, j'ai le message suivant

Erreur 451 : La procédure property let n'est pas définie et la
procédure



property get n'a pas renvoyé d'objet.



Où ?

De plus les procédures "Property" servent dans les modules de classe,
pas


dans les modules standards.


As-tu essayé la procédure d'Anacoluthe sans rien changer ?

"Sky" a écrit dans le message de
news:43184ac8$0$1740$
Bonjour !

J'ai avancé dans mon problème, après avoir potassé l'aide embarquée
dans



word, j'ai modifié un peu votre code :

Public Sub RemplirComboAvecExcel()

Dim MonXL As Object
Dim Tablo As Variant

Set MonXL = GetObject(, "excel.application")
MonXL.Visible = False
MonXL.Workbooks.Open ("E:PROJET EN COURSCONTRATS WORDplanning.xls")

Tablo = MonXL.Name("ListeChantier").RefersToRange
CDIC.ListChant.List = Tablo
CDIC.ListChant.ListIndex = 0
Set MonXL = Nothing


End Sub

=> Autant je comprends la propriété d'appel de l'application (en
l'occurence

ici excel, avec l'ouverture du classeur planning.xls) que je
m'interroge



sur
la propriété let

Pouvez vous m'aiguiller sur son fonctionnement ?
d'avance merci

@+
End Sub
"Anacoluthe" a écrit dans le message de
news:

%
Bonjour !

'Franck SCHRICKE' nous a écrit ...
Désolé pour les erreurs de vocable, mais je suis franchement perdu
dans
le vb et j'essaye d'avancer du mieux que je peux.
Etant autodidacte, je n'ais pas les bases de ce langage
Merci de votre compréhension


Pas grave, on a l'habitude ici. Commencez par faire du simple
pour comprendre comment ça marche. Voyez les exemples de la faq.
Sur le forum on peut vous donner un coup de main, vous orienter
sur une propriété ou une méthode d'un objet mais on ne peut pas
écrire une application à votre place. Bon courage !

Essayez encore...
Une UserForm nommée MaUserForm contenant une ComboBox nommée
ComboBox1 à remplir avec la plage ListeChantier de Planning.xls :

Public Sub RemplirComboAvecExcel()
Dim MonXL As Object
Dim Tablo As Variant
Set MonXL = GetObject("E:planning.xls")
Tablo = MonXL.Names("ListeChantier").RefersToRange
MaUserForm.ComboBox1.List = Tablo
MaUserForm.ComboBox1.ListIndex = 0
Set MonXL = Nothing
End Sub

Public Sub LanceUserForm()
RemplirComboAvecExcel
MaUserForm.Show
End Sub

Anacoluthe
« Le principal est de débuter. »
- Georges Charles HUYSMANS















Avatar
Sky
j'ai une excellente nouvelle pour anacoluthe,

ça fonctionne enfin

J'ai repris le code et j'ai certainement du faire une erreur de saisie

Encore merci pour toute l'aide fournie

@+

"Sky" a écrit dans le message de news:
431565f3$0$1740$
bonjour à tous,

J'ai un userform dans word dans lequel est un combobox dont je voudrais
que le contenu se réfère à une plage nommé dans excel (ListeChantier).
Avec l'aide d'anacoluthe, il a été établi le code suivant que je n'arrive
pas à appliquer, le combobox reste désespérement vide alors que toutes les
données sont exactes.

Pour récapituler dans VB

- au niveau de This document j'ai le code suivant

Private Sub document_open()

Dim MonXL As Object
Dim Tablo As Variant
Set MonXL = GetObject("E:PROJET EN COURSCONTRATS WORDplanning.xls")
Tablo = MonXL.Names("ListeChantier").RefersToRange
Me.ListChant.List = Tablo
Set MonXL = Nothing

End Sub


- dans Feuilles
j'ai un userform "CDIC" avec aucun problème de code


- Dans modules
j'ai un module1 avec le code suivant

Sub autoopen()

CDIC.Show

End Sub

PS : dans mon userform ListChant existe bien sous le nom du combobox, le
chemin d'accès est bon
lorsque je lance la macro, le fichier est fermé et il n'a aucune
protection

D'avance merci pour votre aide


--
Franck



1 2