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.
    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
      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
        1. bonjour Maurice

          il s'agit du userform1 combobox5

          avec mes excuses pour cette omission
          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.
            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
              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
                1. re
                  la combobox5 est = 0

                  donc pour ne rien voir

                  ComboBox5.ListIndex = -1

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

                    merci pour ta patience
                    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
                      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