Problème sur un programme avec combobox

  • Initiateur de la discussion Initiateur de la discussion Julien_42
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Julien_42

XLDnaute Nouveau
Salut,
Voila j'ai créer un programme sur vba contenant plusieurs userform. Tout mes userforms marchent sauf un ou j'ai des comboboxs avec des choix de plats qui sont assignés à une valeur(valeur énergétique du plat) sur le tableur excel.
Mon problème est que pour chaque jour de la semaine je stocke dans un tableau (val(5)) la somme des valeurs de mes combobox. Et je voudrai ensuite remettre les résultats de mon tableau sur excel pour en faire un graphique.
Mais le problème est que ça m'affiche que la dernière valeur (val(5), celle qui correspond au vendredi.
Donc si quelqu'un pouvait me dire pourquoi ça ne récupère que la dernière valeur.

Voici le code que j'ai mis dans cet userform:
Je joins aussi le fichier sous MU car il est trop gros pour etre hébergé sur le forum : Ce lien n'existe plus
Le mot de passe est 0


'déclaration du compteur dans l'userform
Dim compteur As Byte

Private Sub cmd_valider_Click()

Dim val(5) As Single 'Consommation énergétique pour chaque jour de la semaine
Dim jour(5) As String

jour(1) = "mardi"
jour(2) = "mercredi"
jour(3) = "jeudi"
jour(4) = "vendredi"
'Incrémentation du compteur à chaque click sur valider
compteur = compteur + 1

If Not compteur = 5 Then lbl_jour.Caption = jour(compteur)



val(compteur) = Cells(Me.cmd_entrée.ListIndex + 2, 2) + Cells(Me.cmd_plat.ListIndex + 2, 4) + Cells(Me.cmd_laitage.ListIndex + 2, 6) + Cells(Me.cmd_dessert.ListIndex + 2, 8) + Cells(Me.cmd_boisson.ListIndex + 2, 10) + Cells(Me.cmd_pain.ListIndex + 2, 12)



If CheckBox1.Value = True Then val(compteur) = 0


If compteur = 5 Then

Worksheets("Résultats").Activate
[A1] = val(1)
[A2] = val(2)
[A3] = val(3)
[A4] = val(4)
[A5] = val(5)


Me.Hide


Sheets("résultats").Select

End If

End Sub

Merci par avance
 
Dernière édition:
Re : Problème sur un programme avec combobox

Bonsoir Julien42

Pitié pas de fichier sur des sites comme MEGAUPLOAD 😱
Cijoint sait faire ça aussi bien et sans attente

Le problème est dans tes déclaration de variable qui ce font dans le bouton valider et non en début de l'USF, donc Val() est remis à 0 à chaque fois 😉

Code:
'déclaration du compteur dans l'userform
Dim compteur As Byte
Dim MVal(5) As Single  'Consommation énergétique pour chaque jour de la semaine
Dim jour(5) As String

Private Sub cmd_valider_Click()
  jour(1) = "mardi"
  jour(2) = "mercredi"
  jour(3) = "jeudi"
  jour(4) = "vendredi"
  'Incrémentation du compteur à chaque click sur valider
  compteur = compteur + 1

  If Not compteur = 5 Then lbl_jour.Caption = jour(compteur)

  MVal(compteur) = Cells(Me.cmd_entrée.ListIndex + 2, 2) + Cells(Me.cmd_plat.ListIndex + 2, 4) + Cells(Me.cmd_laitage.ListIndex + 2, 6) + Cells(Me.cmd_dessert.ListIndex + 2, 8) + Cells(Me.cmd_boisson.ListIndex + 2, 10) + Cells(Me.cmd_pain.ListIndex + 2, 12)

  If CheckBox1.Value = True Then MVal(compteur) = 0

  If compteur = 5 Then

    Worksheets("Résultats").Activate
    [A1] = MVal(1)
    [A2] = MVal(2)
    [A3] = MVal(3)
    [A4] = MVal(4)
    [A5] = MVal(5)

    Me.Hide

    Sheets("résultats").Select

  End If

End Sub
PS : évite d'utiliser "val" en variable car c'est une fonction VBA

A+
 
Dernière modification par un modérateur:
Re : Problème sur un programme avec combobox

Bonjour Julien, Bruno

Bon, Megauplaod, il faut attendre 45 secondes 😛.


Bruno, tu n'es pas obligé de rester à attendre (un petit coup de ctrl+alt et hop 🙂).
 
Re : Problème sur un programme avec combobox

bonjour Julien
remplace val(mot clé) par valeur(exemple)
ou tu employes option base 1(touche f1 pour aide)
ou tu dimensionnes les 2 tableaux exemple jour(1 to 5)
val(5) peut contenir 6 valeurs indexées de 0 à 5
jour(5) peut contenir 6 valeurs indexées de 0 à 5
à bientôt
 
Re : Problème sur un programme avec combobox

Bonjour à tous,

pas de problème, via le code tu peux "travailler" sur une feuille masquée, pas besoin de la selectionner, suffit de préciser son nom devant les actions...

exemple ci-dessous, où la "feuil2" est masquée.
Code:
Sheets("Feuil2").Range("A1").Value = "123"

bonne journée
@+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
7
Affichages
704
Réponses
0
Affichages
367
Réponses
9
Affichages
833
Retour