Problème sur un programme avec combobox

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:
C

Compte Supprimé 979

Guest
Re : Problème sur un programme avec combobox

Bonsoir Julien42

Pitié pas de fichier sur des sites comme MEGAUPLOAD :eek:
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:

Bebere

XLDnaute Barbatruc
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
 

Julien_42

XLDnaute Nouveau
Re : Problème sur un programme avec combobox

Merci, de votre précieuse aide j'éviterai megaupload dorénavant.

Sinon j'ai une dernière question si je masque une feuille sur excel et que je veux l'utiliser sur ma macro comment faire?
 

Pierrot93

XLDnaute Barbatruc
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
@+
 

Statistiques des forums

Discussions
312 440
Messages
2 088 450
Membres
103 853
dernier inscrit
roukhou