Soucis avec combobox change()

Résolu
Bonjour,
j'ai une combobox avec deux valeurs choix1 et choix2
if combobox1 = choix1 then
instructions
........
else
combobox1 = choix2
instructions
.........
end if
end sub

tout ce qu'il y a de plus simple. Eh bien non !

mon problème : la valeur de la variable choix2 apparait par défaut dans ma combobox
alors que celle-ci devrait être blanche
je clique sur la flêche . Mes deux valeurs apparaissent et je peux sélectionner mon choix.
dans ma feuille qui a servi à faire cette combobox j'ai en a1 une cellule blanche
en A2 la valeur de mon choix1
et en A3 la valeur de mon choix2

je ne comprends pas. j'ai créé d'autres comboboxes de la même manière et elle fonctionne très bien

Pouvez vous m'expliquer

merci

14 réponses

  1. Bonjour,

    regarde comme cela

    Private Sub ComboBox1_Change()
    If ComboBox1.Value = "instruction1" Then
    résultat1
    Else
    résultat2
    End If
    End Sub

    et si tu as plusieurs instructions

    Private Sub ComboBox1_Change()
    If ComboBox1.Value = "instruction1" Then
    résultat1
    ElseIf ComboBox1.Value = "instruction2" Then
    résultat2
    ElseIf ComboBox1.Value = "instruction3" Then
    résultat3
    Else
    résultat4
    End If
    End Sub

    A+
    Mike-31

    Une période d'échec est un moment rêvé pour semer les graines du savoir.
    0
    1. bonjour Mike-31
      avant j'avais trois instructions et cela fonctionnait très bien avec la combobox
      j'ai modifié ma liste pour n'avoir que deux choix et ai donc enlevé
      le elseif de la procédure et là problème.

      voici le lien de mon fichier

      https://www.cjoint.com/?3KfmJRmTAg6
      0
      1. Bonjour
        quelle Userform ??
        A+
        Maurice
        0
        1. Re,

          peux tu répondre à la question de Maurice s'il te plait, pour ma part je ne vois pas de combobox à deux conditions dans ton fichier
          0
          1. bonjour Maurice

            il s'agit du userform1 combobox5

            avec mes excuses pour cette omission
            0
            1. Re,

              le code fonctionne parfaitement, si tu choisis vaisselle cela affiche bien ta ligne de contrôle comme si tu choisis choix2 cela affiche bien l'autre ligne
              tu peux ajouter .value dans le code

              Private Sub ComboBox5_Change()
              Worksheets("bonsortie").Range("B1").ClearContents
              If ComboBox5.Value = Choix1 Then
              TextBox9.Visible = True
              TextBox10.Visible = True
              TextBox11.Visible = True
              TextBox12.Visible = False
              TextBox13.Visible = False
              TextBox14.Visible = False
              TextBox19.Visible = True
              TextBox20.Visible = False
              ListBox1.Visible = True
              ListBox2.Visible = False
              Label8.Visible = True
              Label12.Visible = False
              Else

              ComboBox5.Value = Choix2
              TextBox9.Visible = False
              TextBox10.Visible = False
              TextBox11.Visible = False
              TextBox12.Visible = True
              TextBox13.Visible = True
              TextBox14.Visible = True
              TextBox19.Visible = False
              TextBox20.Visible = True
              ListBox1.Visible = False
              ListBox2.Visible = True
              Label8.Visible = False
              Label12.Visible = True

              End If
              End Sub

              par contre le calcul ne se fait pas sur les texbox 19 et 20
              A+
              Mike-31

              Une période d'échec est un moment rêvé pour semer les graines du savoir.
              0
              1. Bonjour

                je prefere avec Listindex

                Private Sub ComboBox5_Change()
                If ComboBox5.ListIndex = 0 Then
                TextBox9.Visible = True
                TextBox10.Visible = True
                TextBox11.Visible = True
                TextBox12.Visible = False
                TextBox13.Visible = False
                TextBox14.Visible = False
                TextBox19.Visible = True
                TextBox20.Visible = False
                ListBox1.Visible = True
                ListBox2.Visible = False
                Label8.Visible = True
                Label12.Visible = False
                Else
                TextBox9.Visible = False
                TextBox10.Visible = False
                TextBox11.Visible = False
                TextBox12.Visible = True
                TextBox13.Visible = True
                TextBox14.Visible = True
                TextBox19.Visible = False
                TextBox20.Visible = True
                ListBox1.Visible = False
                ListBox2.Visible = True
                Label8.Visible = False
                Label12.Visible = True
                End If
                End Sub

                et evite de faire 2 fois la combox5 dur
                et pour 2 varriable on fait comme ca

                ComboBox5.Clear
                ComboBox5.AddItem "Vaisselle"
                ComboBox5.AddItem "Materiel"
                ComboBox5.ListIndex = 0

                A+
                maurice
                0
                1. mike-31 - oui mike il fonctionne mais ce qui me chagrinait c'est que materiel apparaisse en premier et ensuite lorsque je clique sur la flêche vaisselle et matériel apparaissent et je peux faire mon choix. je voulais au départ une combobox vide et appuyer sur la flêche pour faire apparaitre vaisselle et materiel et pouvoir choisir ou qu'apparaisse par défaut en premier vaisselle et ensuite cliquer sur la flêche pour faire apparaitre materiel.
                  mais le problème provenait surement du fait que, comme le dit maurice, j'avais fait "2 fois la combox5 dur".

                  les valeurs des textbox19 et 20 apparaissent lorsque je confirme les quantités
                  via mon msgbox

                  je vais donc faire comme le préconise Maurice

                  mike-31 - maurice je vous remercie beaucoup pour votre aide une fois de plus
                  0
                  1. re
                    la combobox5 est = 0

                    donc pour ne rien voir

                    ComboBox5.ListIndex = -1

                    A+
                    Maurice
                    0
                    1. ça va rentrer dans ma petite tête, Maurice

                      merci pour ta patience
                      0
                      1. Bonjour

                        voila une astuce pour les quantitée

                        Private Sub ListBox1_Change()
                        'je recupère la valeur de la feuil2 dans la textbox
                        Ligne = ListBox1.ListIndex + 2
                        With Feuil2
                        TextBox9 = .Cells(Ligne, 4)
                        TextBox10 = ""
                        TextBox11 = Replace(.Cells(Ligne, 5), ",", ".")
                        TextBox19 = ""
                        TextBox10.SetFocus
                        End With
                        End Sub

                        Private Sub TextBox10_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
                        Select Case KeyAscii
                        Case 48 To 57
                        KeyAscii = KeyAscii
                        Case Else
                        KeyAscii = 0
                        End Select
                        End Sub

                        Private Sub TextBox10_Exit(ByVal Cancel As MSForms.ReturnBoolean)
                        TextBox19.Value = Val(TextBox10.Value) * Val(TextBox11.Value)
                        End Sub

                        A+
                        Maurice
                        0
                        1. Bonsoir Maurice,
                          je vais modifier mon programme pour y mettre ton astuce
                          je te tiens informé dans la journée de demain 7 nov

                          merci beaucoup pour l'intérêt que tu portes à mon projet
                          0