Problème liste déroulante VBA

Bonjour,

Mon problème est celui-ci: j'ai un userform qui sert à commander du vin,j'ai donc une liste par type de vin(rouge,crémant,riesling,gewurtz.) ,puis une liste nom de vin qui s'alimente en fonction du type de vin choisi comme le montre le code ci-après

Lorsque l'utilisateur choisit un type de vin puis un nom de vin,mais que à nouveau il change de type de vin,la liste nomvin garde le nom du vin choisit (qui correspond au type précédent).

Par exemple,si l'utilisateur choisit "vin rouge",il a le choix entre le ptit bacchus,le grand duché,le roc des anges...imaginons qu'il sélectionne du grand duché;:mais que juste après il change de type pour du crémant,"le grand duché" reste toujours affiché dans la liste de nom(même si la liste s'alimente bien une fois qu'on clique sur la flèche de côté).

Je ne sais pas si c'est très clair,au cas où demandez-moi plus de précisions

Merci pour votre aide

Voici mon code

Private Sub TypeVin_Change()

'incrémentation liste de noms de vins en fonction du type de vin choisi

If AchatVin1.TypeVin.Value = "Vin Rouge" Then

AchatVin1.NomVin.RowSource = "achat!B14:B16"

ElseIf AchatVin1.TypeVin.Value = "Crémant" Then

AchatVin1.NomVin.RowSource = "achat!B17:B18"

ElseIf AchatVin1.TypeVin.Value = "Riesling" Then

AchatVin1.NomVin.RowSource = "achat!B19:B21"

ElseIf AchatVin1.TypeVin.Value = "Gewurztraminer" Then

AchatVin1.NomVin.RowSource = "achat!B22:B24"

End If

End Sub

Bonjour, (ou plutôt re-)

Comme précisé dans ta 1ère question, un fichier exemple nous aiderait bien plus pour t'aider...

En effet, on ne connaît pas le type d'objet "NomVin" (combobox, listbox....)

Bref, à l'avenir, pense à joindre un fichier

Bonne journée

Bonjour

Sans fichier test pas facile

Essayes

Private Sub TypeVin_Change()
'incrémentation liste de noms de vins en fonction du type de vin choisi

If AchatVin1.TypeVin.Value = "Vin Rouge" Then
AchatVin1.NomVin.RowSource = "achat!B14:B16"
ElseIf AchatVin1.TypeVin.Value = "Crémant" Then
AchatVin1.NomVin.RowSource = "achat!B17:B18"
ElseIf AchatVin1.TypeVin.Value = "Riesling" Then
AchatVin1.NomVin.RowSource = "achat!B19:B21"
ElseIf AchatVin1.TypeVin.Value = "Gewurztraminer" Then
AchatVin1.NomVin.RowSource = "achat!B22:B24"
End If
AchatVin1.NomVin.ListIndex = -1
End Sub

Bonjour,

En changeant les plages voici un exemple.

Private Sub UserForm_Initialize()
    Me.cboVins.AddItem "Rouge"
    Me.cboVins.AddItem "Crément"
    Me.cboVins.AddItem "Riesling"
    Me.cboVins.AddItem "Gewurztraminer"
End Sub
Private Sub cboVins_Change()
    If Me.cboVins.ListIndex = 0 Then Me.ListBox1.RowSource = Sheets("Feuil1").Range("A2:A3").Address
    If Me.cboVins.ListIndex = 1 Then Me.ListBox1.RowSource = Sheets("Feuil1").Range("B2:B3").Address
    If Me.cboVins.ListIndex = 2 Then Me.ListBox1.RowSource = Sheets("Feuil1").Range("C2:C3").Address
     If Me.cboVins.ListIndex = 3 Then Me.ListBox1.RowSource = Sheets("Feuil1").Range("D2:D3").Address
End Sub

Bonjour,

t,"le grand duché" reste toujours affiché dans la liste de nom(même si la liste s'alimente bien une fois qu'on clique sur la flèche de côté)

.

Sans fichier, je pense que ton souci vient de l'utilisation de Rowsource car au moment où tu choisis une autre type de vin Rowsource n'est pas vide.

Cette propriété est facile d'accès mais provoque les soucis que tu décris si tu ne prévois pas de la vider au préalable. Pour ma part je l'évite toujours d'autant qu'elle ne fonctionne pas toujours.

Je ferai plutôt ceci comme code :

Private Sub TypeVin_Change()
'incrémentation liste de noms de vins en fonction du type de vin choisi
With AchatVin1
If .Typevin.Value = "Vin Rouge" Then
    .Nomvin.List = Sheets("achat").Range("B14:B16")
ElseIf .Typevin.Value = "Crémant" Then
    .Nomvin.List = Sheets("achat").Range("B17:B18")
ElseIf .Typevin.Value = "Riesling" Then
    .Nomvin.List = Sheets("achat").Range("B19:B21")
ElseIf .Typevin.Value = "Gewurztraminer" Then
    .Nomvin.List = Sheets("achat").Range("B22:B24")
End If
End With
End Sub

A voir si c'est bien cela le souci car sans fichier....

Amicalement

Re,

Il semblerait que avec ce code

If AchatVin1.TypeVin.Value = "Vin Rouge" Then
AchatVin1.NomVin.Value = Null
AchatVin1.NomVin.RowSource = "achat!B14:B16"

cela marche! Je vous remercie de votre aide quand même

Ah et promis la prochaine fois je penserai à mettre un fichier exemple.

Après avoir lu cette rubrique, je suis tombé inopinément sur une réponse possible, que je veux partager avec vous:

Désolé si cela ne faisait pas l'affaire, pour une raison ou une autre.

Edit Dan : Lien publicitaire supprimé. En cas d'une demande, merci d'ouvrir un nouveau fil de discussion. Celui-ci ayant été cloturé par son auteur (estelle54)

Rechercher des sujets similaires à "probleme liste deroulante vba"