Problème d'incrémentation avec VBA

Résolu
glenniria Messages postés 2 Statut Membre -  
glenniria Messages postés 2 Statut Membre -
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. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      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
  2. Paf
     
    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
  3. glenniria Messages postés 2 Statut Membre
     
    J'ai essayé avec la fonction ListIndex, ça marche nickel. Merci à vous
    0