OVH Cloud OVH Cloud

ce serai our un petit dépannage expresss svp

6 réponses
Avatar
francois63000
Bonjour les excel anti SIM ( exellentissimes?) contributeurs du forum

Voila mon soucis.

Dans un userform, j'ai 2 listbox ( société et contact)

Ma listbox société est alimenté à l'ouverture du userforrm par une liste
placée dans un autre classeur qui est ouvert. La liste est classée, triée
sans doublon grace à la fonction "SansDoublonsDictionnaire" de JB-formulaire

La listbox contact me donne alors exclusivement le nom des contacts de cette
société. Le tri se fait par la méthode suivante
For Each c In ['[répertoire.xls]répertoire'!société]
If c.Value = Me.société Then Me.contact.AddItem c.Offset(0, 1)
Next c
Jusque là tous fontionne nickel.( Merci le forum ….)

Mais lorsque j'essaye de renvoyer le nom que j'ai sélectionner de ma listbox
contact vers une cellule rien ne se passe.
[C15] = Me.Contact.Value

Merci par avance pour vos merveilleuses idées

6 réponses

Avatar
jps
bonjour françois
à tout hasaer et après survol de ta question :*

Me.Contact.Value = [C15]

heu...pas testé et pas excellentissime non plus
jps

"francois63000" a écrit dans le
message de news:
Bonjour les excel anti SIM ( exellentissimes?) contributeurs du forum

Voila mon soucis.

Dans un userform, j'ai 2 listbox ( société et contact)

Ma listbox société est alimenté à l'ouverture du userforrm par une liste
placée dans un autre classeur qui est ouvert. La liste est classée, triée
sans doublon grace à la fonction "SansDoublonsDictionnaire" de
JB-formulaire

La listbox contact me donne alors exclusivement le nom des contacts de
cette
société. Le tri se fait par la méthode suivante
For Each c In ['[répertoire.xls]répertoire'!société]
If c.Value = Me.société Then Me.contact.AddItem c.Offset(0, 1)
Next c
Jusque là tous fontionne nickel.( Merci le forum ….)

Mais lorsque j'essaye de renvoyer le nom que j'ai sélectionner de ma
listbox
contact vers une cellule rien ne se passe.
[C15] = Me.Contact.Value

Merci par avance pour vos merveilleuses idées



Avatar
Youky
[Feuil2!C5] = Me.Contact.Value
changer Feuil2 pour la bonne page
Si tu es sur un userform ..Important le nom de la page
Youky
Avatar
francois63000
Ca ne marche toujours pas.
J'ai rentrer le meme code de renvoi pour la société et celui ci fonctionne
comme il faut

je me demande si le problème ne vient pas du fait que ma liste est créé en
fonction du résultat d'une autre
Ou bien j'ai peut être changer une propriété de la combobox qu'il ne fallait
pas toucher?

merci quand meme




[Feuil2!C5] = Me.Contact.Value
changer Feuil2 pour la bonne page
Si tu es sur un userform ..Important le nom de la page
Youky





Avatar
francois63000
mon probleme vien d'une propriété que j'ai du changer

je vien de creer une nouvelle combobox avec le mem nom et elle marche
nickel. Donc j'ai plus de problème mais j'aimerai bien connaitre la propriété
qu'il fallait pas changer si tu as une idée
Comme ca je me coucherai moins bete ce soir lol

Merci pour ton aide







Ca ne marche toujours pas.
J'ai rentrer le meme code de renvoi pour la société et celui ci fonctionne
comme il faut

je me demande si le problème ne vient pas du fait que ma liste est créé en
fonction du résultat d'une autre
Ou bien j'ai peut être changer une propriété de la combobox qu'il ne fallait
pas toucher?

merci quand meme




[Feuil2!C5] = Me.Contact.Value
changer Feuil2 pour la bonne page
Si tu es sur un userform ..Important le nom de la page
Youky







Avatar
MichDenis
with Me.Contact
If .ListIndex <> -1 Then
[C15] = .List(.ListIndex)
end if
end with




"francois63000" a écrit dans le message de news:

Bonjour les excel anti SIM ( exellentissimes?) contributeurs du forum

Voila mon soucis.

Dans un userform, j'ai 2 listbox ( société et contact)

Ma listbox société est alimenté à l'ouverture du userforrm par une liste
placée dans un autre classeur qui est ouvert. La liste est classée, triée
sans doublon grace à la fonction "SansDoublonsDictionnaire" de JB-formulaire

La listbox contact me donne alors exclusivement le nom des contacts de cette
société. Le tri se fait par la méthode suivante
For Each c In ['[répertoire.xls]répertoire'!société]
If c.Value = Me.société Then Me.contact.AddItem c.Offset(0, 1)
Next c
Jusque là tous fontionne nickel.( Merci le forum ..)

Mais lorsque j'essaye de renvoyer le nom que j'ai sélectionner de ma listbox
contact vers une cellule rien ne se passe.
[C15] = Me.Contact.Value

Merci par avance pour vos merveilleuses idées
Avatar
JB
Bonjour,

La source est dans un autre classeur ouvert(CascadeSource.xls)

Société Contact
Cegos xx11
Cegos xx12
Cegos xx15
Rnur yy20
Rnur yy21
Rnur yy22

http://cjoint.com/?lzetvUUIPk

Nommer le champ Société2 avec Insertion/Nom/Définir
ÞCALER([CascadeSource.xls]Feuil1!$A$2;;;NBVAL([CascadeSource.xls]Feuil1 !$A:$A))

Private Sub UserForm_Initialize()
ChDir ActiveWorkbook.Path
Maitre = ThisWorkbook.Name
Workbooks.Open Filename:="CascadeSource.xls"
Windows(Maitre).Activate
Me.ChoixSociété.List = SansDoublonsDictionnaire([société2])
End Sub

Private Sub ChoixSociété_Change()
Me.Contacts.Clear
For Each c In [société2]
If c = Me.ChoixSociété Then
Me.Contacts.AddItem c.Offset(0, 1)
End If
Next c
End Sub

Private Sub Contacts_Click()
[B6] = Me.Contacts
End Sub

Function SansDoublonsDictionnaire(champ)
Set MonDico = CreateObject("Scripting.Dictionary")
For Each c In champ
If c.Value <> "" Then
If Not MonDico.Exists(c.Value) Then MonDico.Add c.Value, c.Value
End If
Next c
'-- transfert dans un tableau
temp = MonDico.items
Call tri(temp, LBound(temp), UBound(temp))
SansDoublonsDictionnaire = Application.Transpose(temp)
End Function

Sub tri(a, gauc, droi) ' Quick sort
ref = a((gauc + droi) 2)
g = gauc: d = droi
Do
Do While a(g) < ref: g = g + 1: Loop
Do While ref < a(d): d = d - 1: Loop
If g <= d Then
temp = a(g): a(g) = a(d): a(d) = temp
g = g + 1: d = d - 1
End If
Loop While g <= d
If g < droi Then Call tri(a, g, droi)
If gauc < d Then Call tri(a, gauc, d)
End Sub

Autre solution avec classeur externe fermé:

http://cjoint.com/?lzeAMi4mJ3

CascadeADO2.XLS contient un champ nommé BDListe ($A$1:$B$xx)

Société Contact
Cegos xx1
Cegos xx2
Cegos xx3
Rnur yy1
Rnur yy2

Private Sub UserForm_Initialize()
' dans Outils/Références cocher
' Microsoft ActivexDataObject 2.8 Library
ChDir ActiveWorkbook.Path
Dim rs As ADODB.Recordset
Set cnn = New ADODB.Connection
cnn.Open "DRIVER={Microsoft Excel Driver
(*.xls)};DBQÊscadeADO2.XLS"
Set rs = cnn.Execute("SELECT Société FROM BDListe GROUP BY
Société")
Do While Not rs.EOF
Me.ChoixSociété.AddItem rs("Société")
rs.MoveNext
Loop
rs.Close
cnn.Close
Set rs = Nothing
Set cnn = Nothing
End Sub

Private Sub ChoixSociété_Change()
Me.Contacts.Clear
Dim rs As ADODB.Recordset
Set cnn = New ADODB.Connection
cnn.Open "DRIVER={Microsoft Excel Driver
(*.xls)};DBQÊscadeADO2.XLS"
Set rs = cnn.Execute("SELECT Contact FROM BDListe WHERE société='"
& Me.ChoixSociété & "' ORDER BY contact")
Do While Not rs.EOF
Me.Contacts.AddItem rs("Contact")
rs.MoveNext
Loop
rs.Close
cnn.Close
Set rs = Nothing
Set cnn = Nothing
End Sub

JB


Bonjour les excel anti SIM ( exellentissimes?) contributeurs du forum

Voila mon soucis.

Dans un userform, j'ai 2 listbox ( société et contact)

Ma listbox société est alimenté à l'ouverture du userforrm par un e liste
placée dans un autre classeur qui est ouvert. La liste est classée, t riée
sans doublon grace à la fonction "SansDoublonsDictionnaire" de JB-formu laire

La listbox contact me donne alors exclusivement le nom des contacts de ce tte
société. Le tri se fait par la méthode suivante
For Each c In ['[répertoire.xls]répertoire'!société]
If c.Value = Me.société Then Me.contact.AddItem c.Offset(0, 1)
Next c
Jusque là tous fontionne nickel.( Merci le forum ....)

Mais lorsque j'essaye de renvoyer le nom que j'ai sélectionner de ma li stbox
contact vers une cellule rien ne se passe.
[C15] = Me.Contact.Value

Merci par avance pour vos merveilleuses idées