Soucis avec combobox change()

Résolu
solene85 Messages postés 414 Statut Membre -  
solene85 Messages postés 414 Statut Membre -
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. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Bonjour,

    mettez votre fichier a disposition en changeant les donnees sensible sur:

    https://www.cjoint.com/
    0
  2. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    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
  3. solene85 Messages postés 414 Statut Membre 14
     
    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
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. Maurice
     
    Bonjour
    quelle Userform ??
    A+
    Maurice
    0
  6. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    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
  7. solene85 Messages postés 414 Statut Membre 14
     
    bonjour Maurice

    il s'agit du userform1 combobox5

    avec mes excuses pour cette omission
    0
  8. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    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
  9. Maurice
     
    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
  10. solene85 Messages postés 414 Statut Membre 14
     
    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
  11. Maurice
     
    re
    la combobox5 est = 0

    donc pour ne rien voir

    ComboBox5.ListIndex = -1

    A+
    Maurice
    0
  12. solene85 Messages postés 414 Statut Membre 14
     
    ça va rentrer dans ma petite tête, Maurice

    merci pour ta patience
    0
  13. Maurice
     
    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
  14. solene85 Messages postés 414 Statut Membre 14
     
    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