Problème d'incrémentation avec VBA

Résolu/Fermé
glenniria Messages postés 2 Date d'inscription lundi 21 novembre 2011 Statut Membre Dernière intervention 21 novembre 2011 - Modifié par glenniria le 21/11/2011 à 01:02
glenniria Messages postés 2 Date d'inscription lundi 21 novembre 2011 Statut Membre Dernière intervention 21 novembre 2011 - 21 nov. 2011 à 11:00
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

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
21 nov. 2011 à 08:32
Bonjour

difficilement compréhensible....

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

0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
21 nov. 2011 à 10:31
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
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
glenniria Messages postés 2 Date d'inscription lundi 21 novembre 2011 Statut Membre Dernière intervention 21 novembre 2011
21 nov. 2011 à 11:00
J'ai essayé avec la fonction ListIndex, ça marche nickel. Merci à vous
0