OVH Cloud OVH Cloud

Liste box sélection

5 réponses
Avatar
Bruno ALEMANNO
Bonjour le groupe,

J'ai une base de données dans une feuille nommée "Base",
en colonne B j'ai l'article et en C son prix unitaire
Dans une feuille nommée "Liste",
J'aimerais par l'intermédiaire d'une listbox ou combobox dans cette feuille
ou UserForm
faire apparaître les une en dessous des autres les sélections d'articles que
je choisirais mais son prix unitaire également

exemple: je choisis "Chocolat" dans la liste et dans la feuille "Liste" il
devrait apparaître
"Chocolat" en A1 et son prix en B2
"Sirop" en A2 et son ........

J'ai nommé des plages pour B et C dans "Base" Articles et Punitaire


--
Merci au groupe pour vos réponses
Amicalement
Bruno

5 réponses

Avatar
MichDenis
Bonjour Bruno,

essaie ceci, il y a d'autres événements qui peuvent être utilisés en lieu et place de "Change"

La première ligne dans la feuille liste est réservée aux étiquettes de colonne.

'---------------------------------------
Private Sub ComboBox1_Change()
Dim Ligne As Long
Dim Rg As Range, RgComb As Range
With Me.ComboBox1
Set RgComb = Range(.RowSource)
If .ListIndex <> -1 Then
If .Text <> "" Then
ligne = .ListIndex + 1
With Worksheets("Feuil2")
Set Rg = .Range("a" & Range("A65536").End(xlUp)(2).Row)
End With
Rg = RgComb(ligne)
Rg(, 2) = RgComb(ligne, 2)
End If
End If
End With
Set Rg = Nothing: Set RgComb = Nothing
End Sub
'---------------------------------


Salutations!


"Bruno ALEMANNO" a écrit dans le message de news: %
Bonjour le groupe,

J'ai une base de données dans une feuille nommée "Base",
en colonne B j'ai l'article et en C son prix unitaire
Dans une feuille nommée "Liste",
J'aimerais par l'intermédiaire d'une listbox ou combobox dans cette feuille
ou UserForm
faire apparaître les une en dessous des autres les sélections d'articles que
je choisirais mais son prix unitaire également

exemple: je choisis "Chocolat" dans la liste et dans la feuille "Liste" il
devrait apparaître
"Chocolat" en A1 et son prix en B2
"Sirop" en A2 et son ........

J'ai nommé des plages pour B et C dans "Base" Articles et Punitaire


--
Merci au groupe pour vos réponses
Amicalement
Bruno
Avatar
MichDenis
With Worksheets("Feuil2") doit être remplacé par With Worksheets("Liste") qui est le nom de ta feuille.


Salutations!






essaie ceci, il y a d'autres événements qui peuvent être utilisés en lieu et place de "Change"

La première ligne dans la feuille liste est réservée aux étiquettes de colonne.

'---------------------------------------
Private Sub ComboBox1_Change()
Dim Ligne As Long
Dim Rg As Range, RgComb As Range
With Me.ComboBox1
Set RgComb = Range(.RowSource)
If .ListIndex <> -1 Then
If .Text <> "" Then
ligne = .ListIndex + 1
With Worksheets("Feuil2")
Set Rg = .Range("a" & Range("A65536").End(xlUp)(2).Row)
End With
Rg = RgComb(ligne)
Rg(, 2) = RgComb(ligne, 2)
End If
End If
End With
Set Rg = Nothing: Set RgComb = Nothing
End Sub
'---------------------------------


Salutations!


"Bruno ALEMANNO" a écrit dans le message de news: %
Bonjour le groupe,

J'ai une base de données dans une feuille nommée "Base",
en colonne B j'ai l'article et en C son prix unitaire
Dans une feuille nommée "Liste",
J'aimerais par l'intermédiaire d'une listbox ou combobox dans cette feuille
ou UserForm
faire apparaître les une en dessous des autres les sélections d'articles que
je choisirais mais son prix unitaire également

exemple: je choisis "Chocolat" dans la liste et dans la feuille "Liste" il
devrait apparaître
"Chocolat" en A1 et son prix en B2
"Sirop" en A2 et son ........

J'ai nommé des plages pour B et C dans "Base" Articles et Punitaire


--
Merci au groupe pour vos réponses
Amicalement
Bruno
Avatar
MichDenis
Ouf ! une dernière correction ...

Set Rg = .Range("a" & Range("A65536").End(xlUp)(2).Row)

Tu dois ajouter un "." (point) devant la deuxième occurrence du mot Range...
Set Rg = .Range("a" & .Range("A65536").End(xlUp)(2).Row)


Salutations!


"MichDenis" a écrit dans le message de news:
With Worksheets("Feuil2") doit être remplacé par With Worksheets("Liste") qui est le nom de ta feuille.


Salutations!






essaie ceci, il y a d'autres événements qui peuvent être utilisés en lieu et place de "Change"

La première ligne dans la feuille liste est réservée aux étiquettes de colonne.

'---------------------------------------
Private Sub ComboBox1_Change()
Dim Ligne As Long
Dim Rg As Range, RgComb As Range
With Me.ComboBox1
Set RgComb = Range(.RowSource)
If .ListIndex <> -1 Then
If .Text <> "" Then
ligne = .ListIndex + 1
With Worksheets("Feuil2")
Set Rg = .Range("a" & Range("A65536").End(xlUp)(2).Row)
End With
Rg = RgComb(ligne)
Rg(, 2) = RgComb(ligne, 2)
End If
End If
End With
Set Rg = Nothing: Set RgComb = Nothing
End Sub
'---------------------------------


Salutations!


"Bruno ALEMANNO" a écrit dans le message de news: %
Bonjour le groupe,

J'ai une base de données dans une feuille nommée "Base",
en colonne B j'ai l'article et en C son prix unitaire
Dans une feuille nommée "Liste",
J'aimerais par l'intermédiaire d'une listbox ou combobox dans cette feuille
ou UserForm
faire apparaître les une en dessous des autres les sélections d'articles que
je choisirais mais son prix unitaire également

exemple: je choisis "Chocolat" dans la liste et dans la feuille "Liste" il
devrait apparaître
"Chocolat" en A1 et son prix en B2
"Sirop" en A2 et son ........

J'ai nommé des plages pour B et C dans "Base" Articles et Punitaire


--
Merci au groupe pour vos réponses
Amicalement
Bruno
Avatar
Bruno ALEMANNO
Bonsoir,

Michel, cela tourne à merveille
Est-il possible de faire la même chose
avec des bouton qui donnerais la quantité de 1 à 6
A chaque choix il y aurais aussi une remise à zéro des 6 boutons


--
Merci
Amicalement
Bruno
Avatar
MichDenis
Bonsoir Bruno,

Insère ce code dans ton formulaire :

La procédure suppose que le nom de tes boutons d'option sont de ce type :
OptionButton1, optionButton2, optionbutton3 ....
'-----------------------------------------
Private Sub ComboBox1_Change()
Dim Ligne As Long
Dim Rg As Range, RgComb As Range
With Me.ComboBox1
Set RgComb = Range(.RowSource)
If .ListIndex <> -1 Then
If .Text <> "" Then
Ligne = .ListIndex + 1
With Worksheets("Liste")
Set Rg = .Range("a" & .Range("A65536").End(xlUp)(2).Row)
End With
Rg = RgComb(Ligne)
Rg(, 2) = RgComb(Ligne, 2)
Rg(, 3) = ValeurColonnC
End If
End If
End With
Set Rg = Nothing: Set RgComb = Nothing
End Sub
'------------------------------------
Function ValeurColonnC() As Integer

Dim B As Object
For Each B In Me.Controls
If TypeName(B) = "OptionButton" Then
Select Case B.Value
Case True
ValeurColonnC = Val(Right(B.Name, 1))

End Select
End If
Next
End Function
'------------------------------------


Salutations!



"Bruno ALEMANNO" a écrit dans le message de news:
Bonsoir,

Michel, cela tourne à merveille
Est-il possible de faire la même chose
avec des bouton qui donnerais la quantité de 1 à 6
A chaque choix il y aurais aussi une remise à zéro des 6 boutons


--
Merci
Amicalement
Bruno