liste deroulante avec données dans un autre classeur
2 réponses
luc c
bonjour
les données (rowsource) sont dans le classeur "donnée"
la macro est appellé dans le classeur "estimation"
la valeur (controlsource) doit etre transferer dans la feuille estimation
dans la cellule "b4"
donc je tape "result" dans le controlsource de la liste.
de cette facon la données choisi se transgert dans la cellule "b4" que j'ai
nommé par vba "result"
sub userform1_click(()
'je desactive l'ecran
'j'active la feuille données
'j'appel le userform1.show
'la liste est donc active
'lors du click je souhaite que userform.value s'inscrive dans la cellule
result
end sub
cela ne fonctionne pas ?
existe-t-il un truc pour les liste deroulant dont les données sont dans un
autre classeur ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
JB
Bonjour,
-Avec Insertion/Nom/Définir, définir un nom (Maliste) vers les données du classeur (Donnees.xls) qui doit être OUVERT. -Dans Rowsource du menu:Maliste
Si le classeur Donnees.xls est fermé, utiliser ADO:
Private Sub UserForm_Initialize() ' dans Outils/Références cocher ' Microsoft ActivexDataObject 2.8 Library Dim rs As ADODB.Recordset Set cnn = New ADODB.Connection cnn.Open "DRIVER={Microsoft Excel Driver (*.xls)};DBQ=Donnees.XLS" Set rs = cnn.Execute("SELECT nom FROM MaListe") Do While Not rs.EOF Me.Choix.AddItem rs("nom") rs.MoveNext Loop rs.Close cnn.Close Set rs = Nothing Set cnn = Nothing End Sub
JB
On 10 mai, 04:39, "luc c" wrote:
bonjour
les données (rowsource) sont dans le classeur "donnée" la macro est appellé dans le classeur "estimation" la valeur (controlsource) doit etre transferer dans la feuille estimation dans la cellule "b4"
donc je tape "result" dans le controlsource de la liste. de cette facon la données choisi se transgert dans la cellule "b4" que j'ai nommé par vba "result"
sub userform1_click(() 'je desactive l'ecran 'j'active la feuille données 'j'appel le userform1.show 'la liste est donc active 'lors du click je souhaite que userform.value s'inscrive dans la cell ule result
end sub
cela ne fonctionne pas ? existe-t-il un truc pour les liste deroulant dont les données sont dans un autre classeur ?
luc découragé, je suis au desespoir,,,,
Bonjour,
-Avec Insertion/Nom/Définir, définir un nom (Maliste) vers les données
du classeur (Donnees.xls) qui doit être OUVERT.
-Dans Rowsource du menu:Maliste
Si le classeur Donnees.xls est fermé, utiliser ADO:
Private Sub UserForm_Initialize()
' dans Outils/Références cocher
' Microsoft ActivexDataObject 2.8 Library
Dim rs As ADODB.Recordset
Set cnn = New ADODB.Connection
cnn.Open "DRIVER={Microsoft Excel Driver (*.xls)};DBQ=Donnees.XLS"
Set rs = cnn.Execute("SELECT nom FROM MaListe")
Do While Not rs.EOF
Me.Choix.AddItem rs("nom")
rs.MoveNext
Loop
rs.Close
cnn.Close
Set rs = Nothing
Set cnn = Nothing
End Sub
JB
On 10 mai, 04:39, "luc c" <luc.champagn...@videotron.ca> wrote:
bonjour
les données (rowsource) sont dans le classeur "donnée"
la macro est appellé dans le classeur "estimation"
la valeur (controlsource) doit etre transferer dans la feuille estimation
dans la cellule "b4"
donc je tape "result" dans le controlsource de la liste.
de cette facon la données choisi se transgert dans la cellule "b4" que j'ai
nommé par vba "result"
sub userform1_click(()
'je desactive l'ecran
'j'active la feuille données
'j'appel le userform1.show
'la liste est donc active
'lors du click je souhaite que userform.value s'inscrive dans la cell ule
result
end sub
cela ne fonctionne pas ?
existe-t-il un truc pour les liste deroulant dont les données sont dans un
autre classeur ?
-Avec Insertion/Nom/Définir, définir un nom (Maliste) vers les données du classeur (Donnees.xls) qui doit être OUVERT. -Dans Rowsource du menu:Maliste
Si le classeur Donnees.xls est fermé, utiliser ADO:
Private Sub UserForm_Initialize() ' dans Outils/Références cocher ' Microsoft ActivexDataObject 2.8 Library Dim rs As ADODB.Recordset Set cnn = New ADODB.Connection cnn.Open "DRIVER={Microsoft Excel Driver (*.xls)};DBQ=Donnees.XLS" Set rs = cnn.Execute("SELECT nom FROM MaListe") Do While Not rs.EOF Me.Choix.AddItem rs("nom") rs.MoveNext Loop rs.Close cnn.Close Set rs = Nothing Set cnn = Nothing End Sub
JB
On 10 mai, 04:39, "luc c" wrote:
bonjour
les données (rowsource) sont dans le classeur "donnée" la macro est appellé dans le classeur "estimation" la valeur (controlsource) doit etre transferer dans la feuille estimation dans la cellule "b4"
donc je tape "result" dans le controlsource de la liste. de cette facon la données choisi se transgert dans la cellule "b4" que j'ai nommé par vba "result"
sub userform1_click(() 'je desactive l'ecran 'j'active la feuille données 'j'appel le userform1.show 'la liste est donc active 'lors du click je souhaite que userform.value s'inscrive dans la cell ule result
end sub
cela ne fonctionne pas ? existe-t-il un truc pour les liste deroulant dont les données sont dans un autre classeur ?
luc découragé, je suis au desespoir,,,,
LSteph
Bonjour *Luc C*,
Si tu mets les instructions que tu as utilisées au lieu de commentaires on te dira plus facilement ce qui cloche. A priori déjà
'lors du click ... userform.value un userform n'est pas normalement porteur de cette propriété .value
l'événement click du userform doit être appelé en Private Sub dans le module de code propre à ce Userform
la valeur (controlsource) doit etre transferer dans la feuille estimation dans la cellule "b4"
on est pas obligé dans ce cas d'utiliser un controlSource exemple
Private Sub CommandButton1_Click() Workbooks("estimation.xls").Worksheets("estimation").[b4]=Combobox1 unload me end sub
De même pour le rowsource si par exemple on a comme propriété rowsource de combobox1 indiqué c2:c10 Lorsqu'on est sur le classeur donnée, on a bien ce qui faut en c2:c10 donc lorsqu'on affiche le userform les valeurs sont bien dans combobox1 et suite auchoix leclick sur commandbutton1 renvoie bien la valeur de combobox1 dans la référence indiquée par Workbooks("estimation.xls").Worksheets("estimation").[b4]
En revanche si on appellle depuis "estimation.xls" une macro de donnée.xls qui affiche le userform de donnée.xls, on affiche alors dans combobox1 c2:c10 de la feuille active dans estimation.xls Ce qui n'est sans doute pas l'effet voulu!
Il sera donc préfèré , (s'agissant de transiter des données d'un classeur à un autre) d'alimenter combobox1 par une macro lors de l'affichage de userform1, ainsi par exemple (toujours dans le module privé du userform de donnée.xls):
Private Sub UserForm_Initialize() Dim c As Range For Each c In ThisWorkbook.Worksheets("données").[c2:c10].Cells ComboBox1.AddItem c Next End Sub
'Cordialement.
'LSteph '(un retour sur tes précédents posts serait probablement apprécié, 'au moins de savoir en quoi cela répond ou non)
bonjour
les données (rowsource) sont dans le classeur "donnée" la macro est appellé dans le classeur "estimation" la valeur (controlsource) doit etre transferer dans la feuille estimation dans la cellule "b4"
donc je tape "result" dans le controlsource de la liste. de cette facon la données choisi se transgert dans la cellule "b4" que j'ai nommé par vba "result"
sub userform1_click(() 'je desactive l'ecran 'j'active la feuille données 'j'appel le userform1.show 'la liste est donc active 'lors du click je souhaite que userform.value s'inscrive dans la cellule result
end sub
cela ne fonctionne pas ? existe-t-il un truc pour les liste deroulant dont les données sont dans un autre classeur ?
luc découragé, je suis au desespoir,,,,
Bonjour *Luc C*,
Si tu mets les instructions que tu as utilisées au lieu de commentaires
on te dira plus facilement ce qui cloche.
A priori déjà
'lors du click ... userform.value
un userform n'est pas normalement porteur de cette propriété .value
l'événement click du userform doit être appelé en Private Sub dans le
module de code propre à ce Userform
la valeur (controlsource) doit etre transferer dans la feuille estimation
dans la cellule "b4"
on est pas obligé dans ce cas d'utiliser un controlSource exemple
Private Sub CommandButton1_Click()
Workbooks("estimation.xls").Worksheets("estimation").[b4]=Combobox1
unload me
end sub
De même pour le rowsource si par exemple on a comme
propriété rowsource de combobox1
indiqué c2:c10
Lorsqu'on est sur le classeur donnée, on a bien ce qui faut en c2:c10
donc lorsqu'on affiche le userform les valeurs sont bien dans combobox1
et suite auchoix leclick sur commandbutton1 renvoie bien
la valeur de combobox1 dans la référence indiquée par
Workbooks("estimation.xls").Worksheets("estimation").[b4]
En revanche si on appellle depuis "estimation.xls" une macro de
donnée.xls qui affiche le userform de donnée.xls, on affiche alors
dans combobox1 c2:c10 de la feuille active dans estimation.xls
Ce qui n'est sans doute pas l'effet voulu!
Il sera donc préfèré , (s'agissant de transiter des données d'un
classeur à un autre) d'alimenter combobox1 par une macro lors de
l'affichage de userform1, ainsi par exemple
(toujours dans le module privé du userform de donnée.xls):
Private Sub UserForm_Initialize()
Dim c As Range
For Each c In ThisWorkbook.Worksheets("données").[c2:c10].Cells
ComboBox1.AddItem c
Next
End Sub
'Cordialement.
'LSteph
'(un retour sur tes précédents posts serait probablement apprécié,
'au moins de savoir en quoi cela répond ou non)
bonjour
les données (rowsource) sont dans le classeur "donnée"
la macro est appellé dans le classeur "estimation"
la valeur (controlsource) doit etre transferer dans la feuille estimation
dans la cellule "b4"
donc je tape "result" dans le controlsource de la liste.
de cette facon la données choisi se transgert dans la cellule "b4" que j'ai
nommé par vba "result"
sub userform1_click(()
'je desactive l'ecran
'j'active la feuille données
'j'appel le userform1.show
'la liste est donc active
'lors du click je souhaite que userform.value s'inscrive dans la cellule
result
end sub
cela ne fonctionne pas ?
existe-t-il un truc pour les liste deroulant dont les données sont dans un
autre classeur ?
Si tu mets les instructions que tu as utilisées au lieu de commentaires on te dira plus facilement ce qui cloche. A priori déjà
'lors du click ... userform.value un userform n'est pas normalement porteur de cette propriété .value
l'événement click du userform doit être appelé en Private Sub dans le module de code propre à ce Userform
la valeur (controlsource) doit etre transferer dans la feuille estimation dans la cellule "b4"
on est pas obligé dans ce cas d'utiliser un controlSource exemple
Private Sub CommandButton1_Click() Workbooks("estimation.xls").Worksheets("estimation").[b4]=Combobox1 unload me end sub
De même pour le rowsource si par exemple on a comme propriété rowsource de combobox1 indiqué c2:c10 Lorsqu'on est sur le classeur donnée, on a bien ce qui faut en c2:c10 donc lorsqu'on affiche le userform les valeurs sont bien dans combobox1 et suite auchoix leclick sur commandbutton1 renvoie bien la valeur de combobox1 dans la référence indiquée par Workbooks("estimation.xls").Worksheets("estimation").[b4]
En revanche si on appellle depuis "estimation.xls" une macro de donnée.xls qui affiche le userform de donnée.xls, on affiche alors dans combobox1 c2:c10 de la feuille active dans estimation.xls Ce qui n'est sans doute pas l'effet voulu!
Il sera donc préfèré , (s'agissant de transiter des données d'un classeur à un autre) d'alimenter combobox1 par une macro lors de l'affichage de userform1, ainsi par exemple (toujours dans le module privé du userform de donnée.xls):
Private Sub UserForm_Initialize() Dim c As Range For Each c In ThisWorkbook.Worksheets("données").[c2:c10].Cells ComboBox1.AddItem c Next End Sub
'Cordialement.
'LSteph '(un retour sur tes précédents posts serait probablement apprécié, 'au moins de savoir en quoi cela répond ou non)
bonjour
les données (rowsource) sont dans le classeur "donnée" la macro est appellé dans le classeur "estimation" la valeur (controlsource) doit etre transferer dans la feuille estimation dans la cellule "b4"
donc je tape "result" dans le controlsource de la liste. de cette facon la données choisi se transgert dans la cellule "b4" que j'ai nommé par vba "result"
sub userform1_click(() 'je desactive l'ecran 'j'active la feuille données 'j'appel le userform1.show 'la liste est donc active 'lors du click je souhaite que userform.value s'inscrive dans la cellule result
end sub
cela ne fonctionne pas ? existe-t-il un truc pour les liste deroulant dont les données sont dans un autre classeur ?