Ouvrir un user form a partir d'une liste

Bonjour tout le monde.

Je n'ai pas trouver réponse à mon problème, j’espère ne pas faire de doublon.

voila mon prob:

1-J'ai un userform dans lequel j'ai une liste déroulante de choix. (ecran_accueil)

2-Je sélectionne un choix dans ma liste de déroulante

3- Je clique sur btm_ok

4- Un USF s'ouvre en fonction du choix effectué précédemment

Voila mon code.

'ferme l'écran d'accueil quand je clique sur annuler

Private Sub btn_annulé_Click()

Unload Me

End Sub

'ouvrir l'userform correspondant a mon choix

Private Sub btm_ok_click()

With ComboBox1

If .ListIndex < "Passer une commande" > -1 Then passer_une_commande.Show

If .ListIndex < "Consulter un sous ensemble" > -1 Then new_ref_achat.Show

If .ListIndex < "voir le stock" > -1 Then voir_stock.Show

If .ListIndex < "voir les resultats" > -1 Then consulter_sous_ensemble.Show

End With

End Sub

'initialiser toutes les listes déroulantes

Private Sub UserForm_initialize()

'initialiser le liste de choix d'actions

With ComboBox1

.AddItem "Passer une commande"

.AddItem "Consulter un sous ensemble"

.AddItem "Consulter ou intégrer une nouvelle pièce acheté"

.AddItem "Consulter ou intégrer une nouvelle pièce code 6"

.AddItem "Consulter ou integrer un nouveau s-e ensemble code 4"

.AddItem "Consulter ou intégrer un nouveau s-e code 2"

.AddItem "Voir le stock"

.AddItem "Entrer les données de fin de production"

.AddItem "Voir les résultats"

.AddItem "Traiter une garantie, SAV"

End With

End Sub

Je vous remercie pour vos réponses éventuelles. Je pense que c'est simple pour qqun de bon, ais moi, je cale lol.

Merci

Salut Latop

Avec mon faible bagage en VB et sans l'avoir testé je ne suis pas sûr que tu puisses intégrer la fonction IF derrière un WITH (à vérifier).

Je t'aurais plutôt proposé quelque chose comme ça :

'ouvrir l'userform correspondant a mon choix

Private Sub btm_ok_click()

If Userform.ComboBox1.value = "Passer une commande" Then passer_une_commande.Show

If Userform.ComboBox1.value = "Consulter un sous ensemble" Then new_ref_achat.Show

If Userform.ComboBox1.value = "voir le stock" Then voir_stock.Show

If Userform.ComboBox1.value = "voir les resultats" Then consulter_sous_ensemble.Show

End Sub

Bonjour Latop

A essayer

Private Sub ComboBox1_Change()
With ComboBox1
If Me.ComboBox1 = "Passer une commande" Then
passer_une_commande.Show
End If
If Me.Combobox1 = "Consulter un sous ensemble" Then
new_ref_achat.Show
End If
'etc pour le reste

End With
 End Sub

Merci pour votre réponse rapide a tout les deux.

tiph18, lorsque je lance il m'indique "erreur de compilation"

et1000lio, ton code marche nickel. Cependant est-il possible de valider la sélection en passant par un bouton de formulaire ok.

Avec ton code, l'userform s'affiche des que l'on clique sur l'item de la liste. J'aimerai pouvoir selectionner mon choix, puis le validez ensuite par "ok".

C'est possible??

Oui

Tu ne programmes pas le Private Sub ComboBox1_Change() pour la combobox1.

A l'ouverture du formulaire la combobox1 est alimenttée via le programme Private Sub UserForm_initialize() dans lequel tu as listé tous les .AddItem.

Donc tu programmes ton bouton OK avec le code suivant

Private Sub CommandButton1_Click()
 If Me.ComboBox1 = "Passer une commande" Then
    passer_une_commande.Show
   End If
   If Me.ComboBox1 = "Consulter un sous ensemble" Then
   new_ref_achat.Show
   End If
    'etc pour le reste

End Sub

Donc à l'ouverture du formulaire tu choisis le nom de l'userform et ensuite tu cliques que le bouton OK

Latop

C'est curieux car ça fonctionne parfaitement chez moi, essaie peut-être de remplacer "UserForm" par "Me".

Rechercher des sujets similaires à "ouvrir user form partir liste"