[VBA - Excel] Probleme de choix dans combobox

onra -  
 BUY6975 -
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
Configuration: Windows 2000
Internet Explorer 6.0

3 réponses

  1. Ivan-hoe Messages postés 433 Date d'inscription   Statut Membre Dernière intervention   310
     
    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
  2. sabouna_d Messages postés 20 Statut Membre 1
     
    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
  3. BUY6975
     
    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