OVH Cloud OVH Cloud

Affichage dans une combobox suite à sélection item

10 réponses
Avatar
Pounet95
Bonsoir à toutes et tous,
XL2000 et XP Pro

Un problème plus énervant que vital :

Dans un userform, j'utilise une combobox avec comme propriétés
style 2 - frmStyleDropDownList
rowsource liste_QuiVaBien
ColumnCount 2

Quand j'éxécute le usf, pas de problème, la liste se déroule dès que je
clique dessus.
Je choisis l''item qui m'interesse et c'est là qu'est le problème :
Je clique sur ledit item, la liste se rétracte et ne laisse apparaître que
l'item choisi.
Jusqu'ici ça semble correct sauf que je ne vois que la colonne 1 de la liste
:o((((
Y a-t-il un truc pour que je puisse voir toutes les colonnes qui composent
l'enregistrement ?

pour illuster :
la liste avant sélection de l'item
01 Ain
02 Aisne
03 Allier

l'affichage après sélection de l'item 2 par exemple
02

Où est passé Aisne ?

Merci d'avance.

--
Pounet95
on trouve tout ( ou presque ) http://www.excelabo.net/
Conseillé :
http://dj.joss.free.fr/netiquet.htm
(charte, nétiquette, conseils, abréviations, souriettes...)
http://www.excelabo.net/mpfe/connexion.php
(connexion, conseils...)

10 réponses

Avatar
anonymousA
Bonjour

Question intéréssante, mais sans doute sans solution étant entendu qu'un
combobox est un combiné d'une listbox et d'un textbox et donc que on
peut avoir un affichage de l'ensemble des colonnes dans la listbox mais
qu'on ne peut avoir qu'une seule propriété Value dans le textbox.
Donc sans vouloir absolument préjuger d'une impossibilité, il me semble
que ton problème n'a pas de solution.

Mais si quelqu'un trouve (dans les conditions exactes que tu énonces) ,
je suis preneur.

A+

Bonsoir à toutes et tous,
XL2000 et XP Pro

Un problème plus énervant que vital :

Dans un userform, j'utilise une combobox avec comme propriétés
style 2 - frmStyleDropDownList
rowsource liste_QuiVaBien
ColumnCount 2

Quand j'éxécute le usf, pas de problème, la liste se déroule dès que je
clique dessus.
Je choisis l''item qui m'interesse et c'est là qu'est le problème :
Je clique sur ledit item, la liste se rétracte et ne laisse apparaître
que l'item choisi.
Jusqu'ici ça semble correct sauf que je ne vois que la colonne 1 de la
liste :o((((
Y a-t-il un truc pour que je puisse voir toutes les colonnes qui
composent l'enregistrement ?

pour illuster :
la liste avant sélection de l'item
01 Ain
02 Aisne
03 Allier

l'affichage après sélection de l'item 2 par exemple
02

Où est passé Aisne ?

Merci d'avance.



Avatar
Starwing
Donc sans vouloir absolument préjuger d'une impossibilité, il me semble
que ton problème n'a pas de solution.


Mais si, mais si,

Private Sub UserForm_Initialize()

Dim rng As Range
Dim cell As Range
Set rng = Range("liste_QuiVaBien") ' Lister uniquement les valeurs de la
colonne 1
For Each cell In rng
ComboBox1.AddItem cell.Value & " - " & cell.Offset(0, 1).Value
Next

End Sub

Starwing

Avatar
Pounet95
Bonsoir Starwing,

Je crois que tu te trompes sur le problème que j'ai exposé.
La combobox est bien remplie avec la liste et toutes les colonnes sont
présentes et affichées AVANT la sélection
de l'item.
C'est ensuite, quand la combobox se replie que ça ne va plus.

Par exemple
AVANT Sélection d'un item, voici la combobox déroulée

10 Perrier 33cl Pack de 6
20 Orangina 33cl Pack de 6
30 MinuMaid 33cl Pack de 6

APRES sélection de l'item 20 voici ce que l'on voit dans la combobox
20


--
Pounet95
on trouve tout ( ou presque ) http://www.excelabo.net/
Conseillé :
http://dj.joss.free.fr/netiquet.htm
(charte, nétiquette, conseils, abréviations, souriettes...)
http://www.excelabo.net/mpfe/connexion.php
(connexion, conseils...)

"Starwing" a écrit dans le message de news:
uUYHW2c$
Donc sans vouloir absolument préjuger d'une impossibilité, il me semble
que ton problème n'a pas de solution.


Mais si, mais si,

Private Sub UserForm_Initialize()

Dim rng As Range
Dim cell As Range
Set rng = Range("liste_QuiVaBien") ' Lister uniquement les valeurs de la
colonne 1
For Each cell In rng
ComboBox1.AddItem cell.Value & " - " & cell.Offset(0, 1).Value
Next

End Sub

Starwing





Avatar
Starwing
http://cjoint.com/?mlaaQ1sDqj

Starwing
Avatar
anonymousA
bonjour,

je ne vois rien à retirer à ce que j'ai écrit précedemment.

cordialement,


http://cjoint.com/?mlaaQ1sDqj

Starwing




Avatar
Starwing
Bonsoir anonymousA,

Peut-être moi qui comprends vraiment mal la demande...

Sincèrement,
Starwing
Avatar
Michel Gaboly
Bonjour Starwing,

Le problème décrit par Pounet concerne la seconde colonne du Combo.

J'ai pu le reproduire également avec Excel 2004, la dernière version
pour Mac.


Dans le fichier que tu proposes (http://cjoint.com/?mlaaQ1sDqj), tu
construis bien un Combo avec ColumnCounts = 2, mais tu n'alimentes que
la première, avec une concaténation :

Private Sub UserForm_Initialize()
Dim rng As Range
Dim cell As Range
Set rng = Range("liste_QuiVaBien") ' Liste de la colonne 1
For Each cell In rng
ComboBox1.AddItem cell.Value & " - " & cell.Offset(0, 1).Value
Next
End Sub


Voici comment modifier ton code pour aboutir au problème décrit par Pounet :


Private Sub UserForm_Initialize()
Dim rng As Range
Dim cell As Range, i As Integer
Set rng = Range("liste_QuiVaBien") ' Liste de la colonne 1
For Each cell In rng
ComboBox1.AddItem cell.Value
ComboBox1.List(i, 1) = cell.Offset(0, 1).Value
i = i + 1
Next
End Sub

Bonsoir anonymousA,

Peut-être moi qui comprends vraiment mal la demande...

Sincèrement,
Starwing





--
Cordialement,

Michel Gaboly
www.gaboly.com

Avatar
michdenis
Bonjour Pounet95,

Un début de solution. Ce n'est pas exactement ce que tu veux... mais c'est très proche

Données du combobox : Feuil1!A1:B10
Tu ne dois pas utiliser la propriété RowSource du combobox.
Si tu tiens à utiliser la propriété Style = fmStyleDropDownList
Je ne crois pas qu'il y ait beaucoup de solutions à ce que tu désires


'Haut du module formulaire
Dim Rg As Range
'------------------------------------
Private Sub ComboBox1_Change()

With Me.ComboBox1
If .ListIndex <> -1 Then
.Text = Rg(.ListIndex + 1, 1) & " " & Rg(.ListIndex + 1, 2)
End If
End With

End Sub
'------------------------------------
Private Sub ComboBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
On Error Resume Next
'ON peut y ajouter un peu de code pour raffiner le comportement que tu désires !
t = Application.Match(Chr(KeyAscii) & "*", Rg.Columns(1), 0)
If IsError(t) Then
Err = 0
KeyAscii = 0
End If
End Sub

Private Sub CommandButton1_Click()

End Sub
'------------------------------------
Private Sub UserForm_Initialize()

With Worksheets("Feuil1")
Set Rg = .Range("A1:B" & .Range("A65536").End(xlUp).Row)
tblo = Rg
With Me.ComboBox1
.BoundColumn = 1
.ColumnCount = 2
.ColumnWidths = "50;50"
.Locked = False
.Style = fmStyleDropDownCombo
.List = tblo
End With
End With

End Sub
'------------------------------------


Salutations!




"Pounet95" a écrit dans le message de news: eVltk8b$
Bonsoir à toutes et tous,
XL2000 et XP Pro

Un problème plus énervant que vital :

Dans un userform, j'utilise une combobox avec comme propriétés
style 2 - frmStyleDropDownList
rowsource liste_QuiVaBien
ColumnCount 2

Quand j'éxécute le usf, pas de problème, la liste se déroule dès que je
clique dessus.
Je choisis l''item qui m'interesse et c'est là qu'est le problème :
Je clique sur ledit item, la liste se rétracte et ne laisse apparaître que
l'item choisi.
Jusqu'ici ça semble correct sauf que je ne vois que la colonne 1 de la liste
:o((((
Y a-t-il un truc pour que je puisse voir toutes les colonnes qui composent
l'enregistrement ?

pour illuster :
la liste avant sélection de l'item
01 Ain
02 Aisne
03 Allier

l'affichage après sélection de l'item 2 par exemple
02

Où est passé Aisne ?

Merci d'avance.

--
Pounet95
on trouve tout ( ou presque ) http://www.excelabo.net/
Conseillé :
http://dj.joss.free.fr/netiquet.htm
(charte, nétiquette, conseils, abréviations, souriettes...)
http://www.excelabo.net/mpfe/connexion.php
(connexion, conseils...)
Avatar
Pounet95
Bonsoir,
Je vais étudier ça de près et je te tiens informé.
Bonne soirée

--
Pounet95
on trouve tout ( ou presque ) http://www.excelabo.net/
Conseillé :
http://dj.joss.free.fr/netiquet.htm
(charte, nétiquette, conseils, abréviations, souriettes...)
http://www.excelabo.net/mpfe/connexion.php
(connexion, conseils...)

"michdenis" a écrit dans le message de news:
eaAMi2l$
Bonjour Pounet95,

Un début de solution. Ce n'est pas exactement ce que tu veux... mais c'est
très proche

Données du combobox : Feuil1!A1:B10
Tu ne dois pas utiliser la propriété RowSource du combobox.
Si tu tiens à utiliser la propriété Style = fmStyleDropDownList
Je ne crois pas qu'il y ait beaucoup de solutions à ce que tu désires


'Haut du module formulaire
Dim Rg As Range
'------------------------------------
Private Sub ComboBox1_Change()

With Me.ComboBox1
If .ListIndex <> -1 Then
.Text = Rg(.ListIndex + 1, 1) & " " & Rg(.ListIndex + 1, 2)
End If
End With

End Sub
'------------------------------------
Private Sub ComboBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
On Error Resume Next
'ON peut y ajouter un peu de code pour raffiner le comportement que tu
désires !
t = Application.Match(Chr(KeyAscii) & "*", Rg.Columns(1), 0)
If IsError(t) Then
Err = 0
KeyAscii = 0
End If
End Sub

Private Sub CommandButton1_Click()

End Sub
'------------------------------------
Private Sub UserForm_Initialize()

With Worksheets("Feuil1")
Set Rg = .Range("A1:B" & .Range("A65536").End(xlUp).Row)
tblo = Rg
With Me.ComboBox1
.BoundColumn = 1
.ColumnCount = 2
.ColumnWidths = "50;50"
.Locked = False
.Style = fmStyleDropDownCombo
.List = tblo
End With
End With

End Sub
'------------------------------------


Salutations!




"Pounet95" a écrit dans le message de news:
eVltk8b$
Bonsoir à toutes et tous,
XL2000 et XP Pro

Un problème plus énervant que vital :

Dans un userform, j'utilise une combobox avec comme propriétés
style 2 - frmStyleDropDownList
rowsource liste_QuiVaBien
ColumnCount 2

Quand j'éxécute le usf, pas de problème, la liste se déroule dès que je
clique dessus.
Je choisis l''item qui m'interesse et c'est là qu'est le problème :
Je clique sur ledit item, la liste se rétracte et ne laisse apparaître que
l'item choisi.
Jusqu'ici ça semble correct sauf que je ne vois que la colonne 1 de la
liste
:o((((
Y a-t-il un truc pour que je puisse voir toutes les colonnes qui composent
l'enregistrement ?

pour illuster :
la liste avant sélection de l'item
01 Ain
02 Aisne
03 Allier

l'affichage après sélection de l'item 2 par exemple
02

Où est passé Aisne ?

Merci d'avance.

--
Pounet95
on trouve tout ( ou presque ) http://www.excelabo.net/
Conseillé :
http://dj.joss.free.fr/netiquet.htm
(charte, nétiquette, conseils, abréviations, souriettes...)
http://www.excelabo.net/mpfe/connexion.php
(connexion, conseils...)




Avatar
Pounet95
Re bonsoir,
En fait, le problème est plus esthétique qu'autre chose.
Pour régler ce 'problème', j'avais utilisé une colonne supplémentaire,
concaténation des colonnes
dont j'ai besoin.
Là aussi, l'esthétique en prend un coup par la faute des polices de
caractères
qui sont proportionnelles et non plus à taille fixe d'où le non alignement
des données ( y compris en trichant
avec des espaces pour rattraper le "jeu" ). Autre inconvénient, ça grossit
les fichiers.
Alors, avec la solution VBA, on s'affranchit de ce gonflement du fichier et
c'est donc la solution
pour laquelle j'opterai même si on y perd un peu en vitesse avec
l'utilisation de listes synchros ( fournisseurs, références)
dont le nombre d'enregistrements avoisine les 500 items.

Par contre, quel est l'avantage ( ou inconvénient ) à utiliser un objet
Range affecté à la propriété .List
par rapport à l'affectation d'un nom ( d'une plage donc d'un objet Range ) à
la propriété .Rowsource ?

Merci pour tes conseils (bien) venus et à venir.

--
Pounet95
on trouve tout ( ou presque ) http://www.excelabo.net/
Conseillé :
http://dj.joss.free.fr/netiquet.htm
(charte, nétiquette, conseils, abréviations, souriettes...)
http://www.excelabo.net/mpfe/connexion.php
(connexion, conseils...)

"michdenis" a écrit dans le message de news:
eaAMi2l$
Bonjour Pounet95,

Un début de solution. Ce n'est pas exactement ce que tu veux... mais c'est
très proche

Données du combobox : Feuil1!A1:B10
Tu ne dois pas utiliser la propriété RowSource du combobox.
Si tu tiens à utiliser la propriété Style = fmStyleDropDownList
Je ne crois pas qu'il y ait beaucoup de solutions à ce que tu désires


'Haut du module formulaire
Dim Rg As Range
'------------------------------------
Private Sub ComboBox1_Change()

With Me.ComboBox1
If .ListIndex <> -1 Then
.Text = Rg(.ListIndex + 1, 1) & " " & Rg(.ListIndex + 1, 2)
End If
End With

End Sub
'------------------------------------
Private Sub ComboBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
On Error Resume Next
'ON peut y ajouter un peu de code pour raffiner le comportement que tu
désires !
t = Application.Match(Chr(KeyAscii) & "*", Rg.Columns(1), 0)
If IsError(t) Then
Err = 0
KeyAscii = 0
End If
End Sub

Private Sub CommandButton1_Click()

End Sub
'------------------------------------
Private Sub UserForm_Initialize()

With Worksheets("Feuil1")
Set Rg = .Range("A1:B" & .Range("A65536").End(xlUp).Row)
tblo = Rg
With Me.ComboBox1
.BoundColumn = 1
.ColumnCount = 2
.ColumnWidths = "50;50"
.Locked = False
.Style = fmStyleDropDownCombo
.List = tblo
End With
End With

End Sub
'------------------------------------


Salutations!




"Pounet95" a écrit dans le message de news:
eVltk8b$
Bonsoir à toutes et tous,
XL2000 et XP Pro

Un problème plus énervant que vital :

Dans un userform, j'utilise une combobox avec comme propriétés
style 2 - frmStyleDropDownList
rowsource liste_QuiVaBien
ColumnCount 2

Quand j'éxécute le usf, pas de problème, la liste se déroule dès que je
clique dessus.
Je choisis l''item qui m'interesse et c'est là qu'est le problème :
Je clique sur ledit item, la liste se rétracte et ne laisse apparaître que
l'item choisi.
Jusqu'ici ça semble correct sauf que je ne vois que la colonne 1 de la
liste
:o((((
Y a-t-il un truc pour que je puisse voir toutes les colonnes qui composent
l'enregistrement ?

pour illuster :
la liste avant sélection de l'item
01 Ain
02 Aisne
03 Allier

l'affichage après sélection de l'item 2 par exemple
02

Où est passé Aisne ?

Merci d'avance.

--
Pounet95
on trouve tout ( ou presque ) http://www.excelabo.net/
Conseillé :
http://dj.joss.free.fr/netiquet.htm
(charte, nétiquette, conseils, abréviations, souriettes...)
http://www.excelabo.net/mpfe/connexion.php
(connexion, conseils...)