Souci avec les Labels en VBA

Résolu/Fermé
Jessica - 6 févr. 2009 à 12:36
jessica_36 Messages postés 26 Date d'inscription vendredi 6 février 2009 Statut Membre Dernière intervention 7 juillet 2009 - 6 févr. 2009 à 14:44
Bonjour, je suis désolée de vous importuner, mais j'ai quelques soucis dont je n'arrive pas a régler en VBA. J'ai à l'interieur d'une frame, une listbox et a coté un label. Sur une selection des differentes composantes de la listbox, il faudrait qu'il s'affiche le resultat "en direct" donc en permanence dans le label. Mais je n'arrive pas à faire afficher quoi que ce soit, c'est à dire que si je met "Label.caption=variable" et bien rien ne s'affiche. J'ai introduit ce programme dans la fonction de la listbox, et dans celle du label, dans les deux cas rien ne s'affiche.
Merci d'avance pour vôtre aide.

11 réponses

Psyk974 Messages postés 551 Date d'inscription lundi 2 février 2009 Statut Membre Dernière intervention 30 mars 2010 51
6 févr. 2009 à 12:41
est ce que tu as ce code ?

Private Sub Nom_ComboBox_Change()

Dim valeur_combo

valeur_combo = Nom_ComboBox.value
Nom_Label.caption = valeur_combo

End Sub
0
j'ai ce code:

Private Sub LBX_selection_Click()
LAB_total_prix.Caption = variable
End Sub

Private Sub UserForm_Click()
Dim Tab_selection(15) As Integer
Dim Compteur As Integer
Dim variable As Integer

variable = 0
LAB_total_prix.Caption = Sheets(10)
For Compteur = 1 To 15
    If LBX_selection = True Then

        Tab_selection(Compteur) = -1
    End If
Next Compteur

For Compteur = 1 To 15
    If LBX_selection = True Then

        Tab_selection(Compteur) = LBX_selection.ColumnCount6
    End If
Next Compteur

For Compteur = 1 To 15
    If Tab_selection(Compteur) > -1 Then
        variable = variable + Tab_selection(Compteur)
    Else
        variable = variable
    End If
Next Compteur
LAB_total_prix.TextAlign = fmTextAlignCenter
LAB_total_prix.Caption = variable
End Sub





0
Psyk974 Messages postés 551 Date d'inscription lundi 2 février 2009 Statut Membre Dernière intervention 30 mars 2010 51
6 févr. 2009 à 13:03
Je recadre bien ce que tu veux faire parce que là je comprends plus trop lol.

Tu as un label et un combo.
Lorsque tu choisis une valeur dans le combo tu veux que ça s'affiche dans le label c'est bien ça ?
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
6 févr. 2009 à 13:02
Bonjour,
Sans préjugé du fonctionnement de ta macros,..
Ta variable variable est déclarée en local, elle ne pourra donc pas être vue ailleur
Tu déplace pour que ce soit comme ça...
Dim variable As Integer
Private Sub LBX_selection_Click()

Et tu la supprime dans UF_Click
Autre remarque, si tu a un Frame assure-toi de ne pas cliquer dessus ça marchera pas non plus.
Mais il y à plus simple c'est de mettre les tests directement dans l'événement change de ta listeBox.
A+
0
Alors le soucis, à force de bidouiller le code ressemble plus a rien. Pour remettre dans le contexte, j'ai donc une listbox, quand l'utilisateur sélectionne des éléments a l'intérieur, la somme de ses éléments doit se changer en permanence dans un label situé a coté de la listbox. Donc d'ailleurs j'ai découvert un nouveau soucis, et donc étant donné qu'il y a plusieurs éléments dans la listbox, j'ai mis un tableau pour voir ce qui était validé, a part cela je ne vois pas comment faire.

c'est vrai que dans l'événement change de la listbox ça sera plus utile, merci pour l'aide.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
6 févr. 2009 à 13:30
Et avec ce code ?
Private Sub LBX_selection_Click()
Dim i As Integer
Dim Total As Single
    For i = 0 To LBX_selection.ListCount - 1
        If LBX_selection.Selected(i) Then
            Total = Total + LBX_selection.List(i, 6)
        End If
    Next i
    LAB_total_prix = Total
End Sub

A+
0
Ca affiche une valeur. Le soucis est que ça ne change pas de 0 :( .
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
6 févr. 2009 à 13:40
J'ai mis la colonne 6 comme je pensais que tu avais des valeurs dans cette colonne mais apparement ce n'est pas celle-là.
NB Les colonnes commence à 0 (zéro) donc la colonne 6 c'est 5 !
0
c'est ce que j'ai tenté, ça garde 0. J'ai pensé que sa venait peut être du single que j'ai remplacé en integer étant donné que c'est des entier mais ça fait pareil. Je cherche donc :/
0
Jessica > Jessica
6 févr. 2009 à 14:01
voila le code que j'ai pour le moment
Option Explicit
Dim total As Integer                                    'je l'ai mis en variable globale pour l'utiliser sur plusieurs sub



Private Sub LBX_selection_Change()
Dim Tab_selection(15) As Integer
Dim Compteur As Integer
Dim variable As Integer
LAB_total_prix.Caption = total                         'je l'ai positionné ici car dans le lbx_selection il ne fonctionne pas

End Sub

Private Sub LBX_selection_Click()
Dim i As Integer

    For i = 0 To LBX_selection.ListCount - 1
        If LBX_selection.Selected(i) Then
            total = total + LBX_selection.List(i, 5)
        End If
    Next i
    LAB_total_prix.Caption = total 
End Sub


Private Sub UserForm_Click()
total = 0                                                    'j'ai essayé d'initialiser total pour voir si le soucis venait de la

End Sub
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
6 févr. 2009 à 14:00
Tu peu mettre ton classeur (éventuellement alléger) sur Cjoint.com et mettre le lien dans un poste suivant ? .
0
je le fais de suite, je m'inscrit d'abord pour pouvoir supprimer le lien derrière.
0
jessica_36 Messages postés 26 Date d'inscription vendredi 6 février 2009 Statut Membre Dernière intervention 7 juillet 2009
6 févr. 2009 à 14:09
voici le lien:
https://www.cjoint.com/?cioiMq7BTj
je regarde ta propositions Blux
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190 > jessica_36 Messages postés 26 Date d'inscription vendredi 6 février 2009 Statut Membre Dernière intervention 7 juillet 2009
6 févr. 2009 à 14:12
Tu est sur excel 2007, je ne l'ai pas sur mon portable et ne peu le lire pour le moment.
Tu peu le sauver en xls et le remettre sur Cjoint.com ?
A+
0
blux Messages postés 26034 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 13 mai 2024 3 289
6 févr. 2009 à 14:05
Salut,

Je te propose un truc comme ça :
Dim Total As Long
Dim Valeur
Total = 0
For Each Valeur In Liste0.ItemsSelected
    Total = Total + Liste0.Column(1, Valeur)
    LAB_total_prix.Caption = total
Next
Le 1 est à changer en fonction de la colonne qui contient l'info recherchée et le Liste0 est bien sûr à renommer :-)
0
jessica_36 Messages postés 26 Date d'inscription vendredi 6 février 2009 Statut Membre Dernière intervention 7 juillet 2009
6 févr. 2009 à 14:13
sa ne marche pas non plus, le soucis doit venir d'ailleurs :/
pas de soucis je le renvoie en format exel 2003
voila le lien
https://www.cjoint.com/?cioqrbjlQm
0
blux Messages postés 26034 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 13 mai 2024 3 289 > jessica_36 Messages postés 26 Date d'inscription vendredi 6 février 2009 Statut Membre Dernière intervention 7 juillet 2009
6 févr. 2009 à 14:17
sa ne marche pas non plus
C'est quoi le message d'erreur ?

as-tu essayé un MSGBOX Liste0.Column(1, Valeur) ?
0
jessica_36 Messages postés 26 Date d'inscription vendredi 6 février 2009 Statut Membre Dernière intervention 7 juillet 2009 > blux Messages postés 26034 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 13 mai 2024
6 févr. 2009 à 14:22
le soucis n'est pas une erreur, c'est que ca affiche en permanence 0 :/
sinon, non j'ai pas essayée le MSGBOX
0
blux Messages postés 26034 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 13 mai 2024 3 289 > jessica_36 Messages postés 26 Date d'inscription vendredi 6 février 2009 Statut Membre Dernière intervention 7 juillet 2009
6 févr. 2009 à 14:24
Il faut déjà voir si les valeurs sont retournées...
0
jessica_36 Messages postés 26 Date d'inscription vendredi 6 février 2009 Statut Membre Dernière intervention 7 juillet 2009
6 févr. 2009 à 14:31
en faisant ca, la valeur est retournée:

LAB_total_prix.Caption = LBX_selection.Column(5, 0)

dans ce cas, la première valeur de la liste est retournée, dans le cas ou on essaye d'en retourner plusieurs, plus rien...
0
blux Messages postés 26034 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 13 mai 2024 3 289
6 févr. 2009 à 14:33
Ta liste autorise-t'elle la sélection multiple ?
0
jessica_36 Messages postés 26 Date d'inscription vendredi 6 février 2009 Statut Membre Dernière intervention 7 juillet 2009
6 févr. 2009 à 14:38
oui
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
6 févr. 2009 à 14:39
OK, j'espère que ça va aller en 2007
il faut mettre dans l'événement Change, le clic va pas avec les Check
Private Sub LBX_selection_Change()
Dim i As Integer
Dim Total As Single
    For i = 0 To LBX_selection.ListCount - 1
        If LBX_selection.Selected(i) Then
            Total = Total + LBX_selection.List(i, 5)
        End If
    Next i
    LAB_total_prix = Total
End Sub

A+
0
jessica_36 Messages postés 26 Date d'inscription vendredi 6 février 2009 Statut Membre Dernière intervention 7 juillet 2009
6 févr. 2009 à 14:44
Ca marche, merci beaucoup :)
0