[VBA - Excel] Probleme de choix dans combobox

Fermé
onra - 22 juil. 2008 à 11:55
 BUY6975 - 31 mai 2009 à 14:01
onjour,

J'utilise un UserForm pour remplir une Base de données. Dans ce UserForm, je dois pouvoir renvoyer la valeur d'une textbox dans une colonne selon la valuer d'une combobox.
En clair:
Dans la comboBox j'ai 3 choix: MOE
MOA
Aléas
Dans le textbox, j'ai un montant
SI je selectionne MOE, le montant doit aller dans la colonne 1 de la base de donnée
MOA colonne 2
Aléas Colonne 3
Mais je n'arrive pas à trouver comment coder pour lire le contenu de la combobox afin qu'il puisse exécuter ce petit truc.

Peut être qu'une partie du problème est la menière dont je rempli la combobox, donc voici le code;
Sub UserForm_Initialize()
Workbooks("Test").Sheets(1).Activate
ComboBox1.AddItem "MOA"
ComboBox1.AddItem "MOE"
ComboBox1.AddItem "Aléas"
End Sub
Private Sub ComboBox1_Change()
If CStr(ComboBox1) = MOE Then
Workbooks("Test").Sheets(1).Range("A1") = TextBox2
End If
End Sub


Merci d'avance pour votre aide
A voir également:

3 réponses

Ivan-hoe Messages postés 433 Date d'inscription dimanche 17 février 2008 Statut Membre Dernière intervention 17 octobre 2008 309
22 juil. 2008 à 17:02
Bonjour,
Pas de problème dans la manière dont tu remplis ta ComboBox
Le code à modifier est celui de Private Sub ComboBox1_Change()
Tu peux passer par une variable intermédiaire, comme le suggère sabouna, mais ce n'est pas nécessaire.
Le contenu de ta liste déroulante est ComboBox.Value (mais c'est vrai que le .Value est facultatif)
Par contre, son contenu étant une chaîne de caractères, il faut le mettre entre guillemets.
Après, pour traiter tes différents cas, tu fais une succession de tests avec If ... ElseIf ... End If
Private Sub ComboBox1_Change()
    If ComboBox1.Value = "MOE" Then
        Workbooks("Test").Sheets(1).Range("A1") = TextBox2.Value
    ElseIf ComboBox1.Value = "MOA" Then
        Workbooks("Test").Sheets(1).Range("B1") = TextBox2.Value
    ElseIf ComboBox1.Value = "Aléas" Then
        Workbooks("Test").Sheets(1).Range("C1") = TextBox2.Value
    End If
End Sub

Pour alléger, tu peux éviter de répéter le nom du classeur et de la feuille en les mettant dans un With... End With
Private Sub ComboBox1_Change()
    With Workbooks("Test").Sheets(1)
        If ComboBox1.Value = "MOE" Then
            .Range("A1") = TextBox2.Value
        ElseIf ComboBox1.Value = "MOA" Then
            .Range("B1") = TextBox2.Value
        ElseIf ComboBox1.Value = "Aléas" Then
            .Range("C1") = TextBox2.Value
        End If
    End With
End Sub
3
sabouna_d Messages postés 20 Date d'inscription mercredi 2 juillet 2008 Statut Membre Dernière intervention 24 juillet 2008 1
22 juil. 2008 à 16:28
salut, je ne suis pas très forte en VBA mais je vais essayer de t'aider

Pour remplir la combobox, en générale j'écrit la liste dans une colonne d'excel et puis je fais un truc de sorte
combobox1.rowsource="Range(.......


ET a ta place j'aurais fait
a=combobox1.value

If a = MOE Then
Workbooks("Test").Sheets(1).Range("A1") = TextBox2
End If
End Sub


Je ne sais pas si ca peux t'aider...
1
Dans votre explication, la valeur de la Combobox est renvoyée dans A1 ou B1 ou C1, mais qu'en est-il pour que cette valeur soit renvoyée dans la colonne A à la ligne correspondante au choix.

Par exemple, MOE est à la ligne 3 dans la feuille excel, je choisis dans la Combobox "MOE" et je saisis dans la TextBox 100€, je souhaite que ces 100 aille se placer dans la colonne A mais sur la ligne correspondante à MOE soit la 3. Etc pour les autres choix

Merci d'avance de la procédure.
0