Problème d'incrémentation avec VBA

Résolu
Bonjour,

J'ai fais un formulaire destiné à m'aider sur un jeux de rôle de type papier. Pour chaque action entreprit par les joueurs ils gagne certains points d'Elan. Au départ ils ont 0.
J'ai fait mon tableau avec toute mes données. J'ai créé une ComboBox qui va se modifier au cours de mon incrémentation. J'ai créé aussi un CommandButton pour contrôler mon incrémentation.

Pour résumer, je choisi l'action effectué avec ma ComboBox et dès que j'appuie sur mon bouton, mon programme doit tester la valeur dans le tableau. Selon cette Valeur et le choix fais pas l'utilisateur dans la ComboBox, il doit incrémenter plus ou moins la valeur du Tableau. J'ai essayé un programme mais il ne change pas la valeur du tableau.

J'ai défini mes variables au lancement de la page excel

Private Sub CommandButton2_Click()

If Worksheets("Feuil1").Range("D5") < 50 Then
Select Case ComboBox2.Value
Case 0
Valeur = Worksheets("Feuil1").Range("D5")
Valeur = Valeur + 1
Worksheets("Feuil1").Range("D5") = Valeur
Case 1
Valeur = Worksheets("Feuil1").Range("D5")
Valeur = Valeur + 5
Worksheets("Feuil1").Range("D5") = Valeur
Case 2
Valeur = Worksheets("Feuil1").Range("D5")
Valeur = Valeur + 3
Worksheets("Feuil1").Range("D5") = Valeur
Case 3
Valeur = Worksheets("Feuil1").Range("D5")
Valeur = Valeur + 3
Worksheets("Feuil1").Range("D5") = Valeur
Case 4
Valeur = Worksheets("Feuil1").Range("D5")
Valeur = Valeur + 3
Worksheets("Feuil1").Range("D5") = Valeur
Case 5
Valeur = Worksheets("Feuil1").Range("D5")
Valeur = Valeur + 1
Worksheets("Feuil1").Range("D5") = Valeur
Case 6
Valeur = Worksheets("Feuil1").Range("D5")
Valeur = Valeur + 5
Worksheets("Feuil1").Range("D5") = Valeur
Case 7
Valeur = Worksheets("Feuil1").Range("D5")
Valeur = Valeur - 5
Worksheets("Feuil1").Range("D5") = Valeur
Case 8
Valeur = Worksheets("Feuil1").Range("D5")
Valeur = Valeur - 3
Worksheets("Feuil1").Range("D5") = Valeur
Case 9
Valeur = Worksheets("Feuil1").Range("D5")
Valeur = Valeur - 10
Worksheets("Feuil1").Range("D5") = Valeur
End Select
Else
Select Case ComboBox2.Value
Case 0
Valeur = Worksheets("Feuil1").Range("D5")
Valeur = Valeur + 1
Worksheets("Feuil1").Range("D5") = Valeur
Case 1
Valeur = Worksheets("Feuil1").Range("D5")
Valeur = Valeur + 3
Worksheets("Feuil1").Range("D5") = Valeur
Case 2
Valeur = Worksheets("Feuil1").Range("D5")
Valeur = Valeur + 1
Worksheets("Feuil1").Range("D5") = Valeur
Case 3
Valeur = Worksheets("Feuil1").Range("D5")
Valeur = Valeur + 1
Worksheets("Feuil1").Range("D5") = Valeur
Case 4
Valeur = Worksheets("Feuil1").Range("D5")
Valeur = Valeur - 5
Worksheets("Feuil1").Range("D5") = Valeur
Case 5
Valeur = Worksheets("Feuil1").Range("D5")
Valeur = Valeur - 3
Worksheets("Feuil1").Range("D5") = Valeur
Case 6
Valeur = Worksheets("Feuil1").Range("D5")
Valeur = Valeur - 10
Worksheets("Feuil1").Range("D5") = Valeur
End Select
End If

ComboBox2.Clear

If Worksheets("Feuil1").Range("D5") < 50 Then
ComboBox2.AddItem "Rendre l'espoir à une personne"
ComboBox2.AddItem "Rendre l'espoir à un grand nombre de personnes"
ComboBox2.AddItem "Sauver la vie de Quelqu'un"
ComboBox2.AddItem "Aider quelqu'un qui en a véritablement besoin"
ComboBox2.AddItem "Défaire un mal mineur"
ComboBox2.AddItem "Défaire un grand mal"
Else
ComboBox2.AddItem "Aider quelqu'un en dépit des préjudices personnels"
ComboBox2.AddItem "Risquer sa vie pour sauver quelqu'un"
ComboBox2.AddItem "Redonner l'envie de vivre à quelqu'un qui l'avait perdu"
End If

ComboBox2.AddItem "Perdre l'espoir"
ComboBox2.AddItem "Ignorer quelqu'un qui réellement besoin d'aide"
ComboBox2.AddItem "Réaliser un acte mauvais"

End Sub

3 réponses

  1. J'ai essayé avec la fonction ListIndex, ça marche nickel. Merci à vous
    0
    1. Bonjour

      En supposant qu'il y a du texte dans la combobox2 et que ton select case porte sur le 'rang' du choix de la ComboBox2, tu devrais remplacer:
      Select Case ComboBox2.Value
      par
      Select Case ComboBox2.ListIndex
      qui te renverra :
      0 pour la première ligne choisie
      1 pour la deuxième
      ....
      bonne suite
      0
      1. Contributeur
        Bonjour

        difficilement compréhensible....

        qu'il y a t il dans ton combobox2 au départ: du texte (tes actions), un nombre (0 à...) ?

        0
        1. Contributeur
          peut -^tre que si les actions à choisir sont remplies initialement, il faudrait utiliser listindex plutôt que value, si oui

          Private Sub CommandButton2_Click()
          Dim valeur As Integer
          
          valeur = Worksheets("Feuil1").Range("D5")
          If valeur < 50 Then
               Select Case ComboBox2.ListIndex
               Case 0
                    valeur = valeur + 1
               Case 1
                    valeur = valeur + 5
               Case 2
                    valeur = valeur + 3
               Case 3
                    valeur = valeur + 3
               Case 4
                    valeur = valeur + 3
               Case 5
                    valeur = valeur + 1
               Case 6
                    valeur = valeur + 5
               Case 7
                    valeur = valeur - 5
               Case 8
                    valeur = valeur - 3
               Case 9
                    valeur = valeur - 10
               End Select
          Else
               Select Case ComboBox2.ListIndex
               Case 0
                    valeur = valeur + 1
               Case 1
                    valeur = valeur + 3
               Case 2
                    valeur = valeur + 1
               Case 3
                    valeur = valeur + 1
               Case 4
                    valeur = valeur - 5
               Case 5
                    valeur = valeur - 3
               Case 6
                    valeur = valeur - 10
               End Select
          End If
          Worksheets("Feuil1").Range("D5") = valeur
          0