cs_Fabian123
Messages postés180Date d'inscriptionvendredi 18 janvier 2008StatutMembreDernière intervention22 novembre 2013
-
8 mars 2008 à 16:11
cs_Fabian123
Messages postés180Date d'inscriptionvendredi 18 janvier 2008StatutMembreDernière intervention22 novembre 2013
-
9 mars 2008 à 15:26
Bonjour à toutes et tous,
je vous expose mon souci:
j'ai un tableau excel de trois colonnes (catégorie, article et prix)
sur un userform, j'ai trois optionbutton (correspondant aux trois catégories possibles), deux listbox deux commandbutton et un label.
Gràce à votre aide, j'ai un code qui permet à l'utilisateur de sélectionner une catégorie d'article(via les optionbuttons) et les articles et le prix correspondant à celle ci s'affichent dans la première listbox (une seule colonne). partant de là, l'utilisateur sélectionne l'article et clique sur le premier bouton pour l'afficher dans la seconde listbox (il peut ainsi cliquer autant de fois qu'il a d'article à sortir). l'autre bouton sert à annuler un article qu'on aurait ajouté en trop
j'espère avoir été relativement clair! j'en arrive à ma question:
je souhaiterais dans mon label, afficher le total des prix des articles sorti par l'utilisateur (donc du listbox2).
je pense que pour ce faire il serait peut être plus simple de diviser le listbox en deux colonnes (une pour le prix et l'autre l'article?) J'ai essayé avec columcount, mais ça marche pas, il continue à tout afficher dans la première colonne.. Quand à l'addition des prix dans le label je sèche aussi...
Merci d'avance pour votre aide.
ps: voici le code
Option Explicit
Private Function GetListCategories() As String()
Dim ltStr() As String
ReDim ltStr(-1 To -1)
Dim i As Long
Dim j As Long
Dim lOK As Boolean
Dim lStr As String
i = 0
Do While Feuil2.Range("B2").Offset(i, 0).Value <> ""
lOK = True
lStr = Feuil2.Range("B2").Offset(i, 0).Value
'Recherche si la catégorie est connue
For j = 0 To UBound(ltStr)
If lStr = ltStr(j) Then
lOK = False
Exit For
End If
Next j
'Si inconnue, on l'ajoute
If lOK Then
If UBound(ltStr) >= 0 Then
ReDim Preserve ltStr(0 To UBound(ltStr) + 1)
Else
ReDim ltStr(0 To 0)
End If
ltStr(UBound(ltStr)) = lStr
End If
i = i + 1
Loop
GetListCategories = ltStr
End Function
'Ensuite pour remplir ta listbox :
Private Sub RemplLstBx(ByVal pCategorie As String)
Dim i As Long
ListBox1.Clear
i = 0
Do While Feuil2.Range("B2").Offset(i, 0).Value <> ""
If Feuil2.Range("B2").Offset(i, 0).Value = pCategorie Then
ListBox1.AddItem Feuil2.Range("C2").Offset(i, 0).Value & CStr(Feuil2.Range("D2").Offset(i, 0).Value) & " " & "?"
End If
i = i + 1
Loop
End Sub
Private Sub CommandButton_Ajouter_Click()
Dim ligne As Variant
Dim i As Integer
i = ListBox1.ListIndex
ListBox2.AddItem ListBox1.List(i, 0)
Private Sub CommandButton_Retirer_Click()
's'assure que la listbox contient des articles
If ListBox2.ListCount >= 1 Then
'Si pas supprime le dernier de la liste
If ListBox2.ListIndex = -1 Then
ListBox2.ListIndex = _
ListBox2.ListCount - 1
End If
ListBox2.RemoveItem (ListBox2.ListIndex)
End If
End Sub
Private Sub OptionButton_Alimentaire_Click()
Call RemplLstBx(OptionButton_Alimentaire.Caption)
End Sub
Private Sub OptionButton_Livres_Click()
Call RemplLstBx(OptionButton_Livres.Caption)
End Sub
Private Sub OptionButton_NonAlimentaire_Click()
Call RemplLstBx(OptionButton_NonAlimentaire.Caption)
End Sub
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 8 mars 2008 à 21:43
Pour remplir ta listbox avec 2 colonnes, il faut commencer par mettre 2 dans la propriété ColumnCount. Puis pour remplir, il suffit de faire un premier AddItem sans paramètre, puis 2 AddItem avec les coordonnées de colonnes
Do While Feuil2.Range("B2").Offset(i, 0).Value <> ""
If Feuil2.Range("B2").Offset(i, 0).Value = pCategorie Then
ListBox1.AddItem
ListBox1.List(J, 0) = Feuil2.Range("C2").Offset(i, 0).Value
ListBox1.List(J, 1) = CStr(Feuil2.Range("D2").Offset(i, 0).Value)
J = J + 1
End If
i = i + 1
Loop
Ça devrait être plus simple à calculer par la suite.
MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
cs_Fabian123
Messages postés180Date d'inscriptionvendredi 18 janvier 2008StatutMembreDernière intervention22 novembre 2013 9 mars 2008 à 15:26
Merci ça marche nickel pour la première listbox, mais je n'arrive pas à le faire pour la seconde... j'ai essayé d'appliquer ton code, mais au mieux j'affiche l'article et le prix à la ligne, dans la même colonne...