Problème avec les ListBox

didil

XLDnaute Nouveau
Bonjour,
Je travaille actuellement sur une petite application sur Excel qui consiste à estimer des coûts de maintenance. L’application est constituée principalement de 3 ListBox et 3 boutons de commande.
ListBox1: contient une liste des différentes interventions de maintenance.
ListBox2: affiche les interventions sélectionnées grâce à un bouton de commande "ajouter" (l'opération inverse c'est à dire supprimer des éléments du ListBox2 existe aussi à travers un autre bouton de commande "supprimer").
Je voudrai maintenant affecter des coûts à chaque intervention et afficher ceci dans le ListBox3 par le biais d'un 3ème bouton de commande "affecter les coûts", exemple:
je choisis l'oprétion1 du ListBox1, je clique sur "ajouter" elle apparaît sur ListBox2 puis je clique sur "affecter les coûts" et son prix coût1 s'affiche dans le ListBox3.
J'espère avoir été assez explicite et remercie à l'avance toute personne ayant eu la gentille de me répondre.

Voici le code:

Private Sub AddButton_Click()
If ListBox1.ListIndex = -1 Then Exit Sub

For i = 0 To ListBox2.ListCount - 1
If ListBox1.Value = ListBox2.List(i) Then
Beep
Exit Sub
End If
Next i
ListBox2.AddItem ListBox1.Value

End Sub


Private Sub Affecter_les_coûts_Click()
' c'est ici que je bloque
End Sub

Private Sub DeleteButton_Click()
If ListBox2.ListIndex = -1 Then Exit Sub
ListBox2.RemoveItem ListBox2.ListIndex
End Sub

Private Sub CancelButton_Click()
Unload Me
End Sub

Private Sub Label2_Click()

End Sub

Private Sub OKButton_Click()
MsgBox "Vous avez sélectionné " & ListBox2.ListCount & "opération(s)."
For z = 0 To ListBox2.ListCount - 1
Range("F" & z + 1).Value = ListBox2.List(z)
Next
Unload Me
End Sub

Private Sub UserForm_Click()

End Sub

La liste des opérations est dans module :

Sub ShowDialog()
UserForm1.ListBox1.RowSource = ""
' Add some items to the ListBox
With UserForm1.ListBox1
.RowSource = ""
.AddItem "Opération1"
.AddItem "Opération2"
.AddItem "Opération3"
.AddItem "Opération4"
.AddItem "Opération5"
End With
UserForm1.Show
End Sub
 

Kobaya

XLDnaute Occasionnel
Re : Problème avec les ListBox

salut didil,

as-tu dans ton fichier une zone où sont renseignées tes différentes interventions ? si oui, tu peux faire un tableau avec en A1 intervention1, B1, Cout1, etc. et alimenter LisBox3 avec la valeur renvoyée par la fonction VLookUp(), je crois que c'est RechercheV() en français.


petit conseil :
en haut de chaque module (de code, de userform ou de worksheet), ajoute Option Explicit.
Ca oblige à déclarer toutes les variables avec un "Dim ... As ...", mais ça évite pas mal de pb.
 

didil

XLDnaute Nouveau
Re : Problème avec les ListBox

Toutes les données que j'utilise en l'occurence les interventions sont déclarées dans le module, c'est un choix personnel d'une part car je ne veux pas qu'elles soient visibles en dehors de l'interface que je suis entrain de créer et d'autre car jusqu'à présent je m'inspire d'un modèle que j'ai trouvé en ligne et étant novice en VB j'ai pas vraiment les connaissances nécessaires pour une telle manipulation. En tout cas merci pour ta réponse, et toute autre aide est la bienvenue.
Merci!!!:)
 

ChTi160

XLDnaute Barbatruc
Re : Problème avec les ListBox

Salut didil
bonjour le fil

tu peux aussi mettre une deuxieme colonne dans l'une de tes listBox et y mettre les prix ainsi lorsque tu cliques sur un élément de la listBox tu peux renvoyer la valeur de la colonne 2 de cette listBox soit le prix de l'élémént sélectionné
Enfin pas évident sans fichier
je vais tenté de faire un exemple
 

ChTi160

XLDnaute Barbatruc
Re : Problème avec les ListBox

re voila ce à quoi j'ai pensé :D
j'ai deux listBox ListBox1 et ListBox2 sur un userform et un bouton Quitter(Unload)
à l'initialisation du useform je remplis la listBox1 avec les données sur deux colonnes
colonne 1 les Opérations
colonne 2 les prix de ces Opérations via un Array
Private Sub UserForm_Initialize()
Dim L As Byte
Dim Myarray As Variant
Myarray = Array("123", "234", "456", "345", "567") 'tarifs
With UserForm1.ListBox1
.RowSource = ""
.ColumnCount = 2 'deux colonnes
.ColumnWidths = "60;00" 'dont l'une cachée
For L = 1 To 5 'pour les valeur de L
.AddItem "Opération" & L 'j'ajoute Opération 1 à 5
.Column(1, .ListCount - 1) = Myarray(L - 1) 'ici je colle la valeur de l'array correspond au prix
Next
End With
End Sub

Private Sub ListBox1_Click() 'quand je clique sur listBox1

With UserForm1
.ListBox2.Clear 'je nettoye la listbox2
.ListBox2.AddItem .ListBox1.List(.ListBox1.ListIndex, 1) 'et j'y colle la valeur de la colonne deux de la ligne cliquée
End With
End Sub
c'est un test n'hésite pas si problème à l'adaptation
bonne fin d Journée :eek:
 

Discussions similaires

Réponses
4
Affichages
190

Statistiques des forums

Discussions
312 027
Messages
2 084 762
Membres
102 655
dernier inscrit
STA82700