Bonjour, j'ai besoin de votre aide. je suis débutant. j'ai pu charger les produits du tableau de la feuille reception dans le combobox du formulaire usfDevis selon l'ancienneté de la date de saisie du produit. (seuls les produits dont la date de saisie est plus ancienne sont chargés dans le combox) aider moi à ajouter le prix, le lot et la date de péremption du tableau de la feuille reception au lstDevis du formulaire usfDevis. lorsqu'on selectionne un élément du combobox, il doit s'afiicher dans le lstDevis le prix, le lot et la date de péremption du produit. merci
0devis-zambol3.xlsm (84.70 Ko)
ci-dessous le code
e souhaite alimenter la combobox (cboServices) du userform usfDevis à partir du tableau de la feuille reception . mais la condition c'est que le combobox charge seulement les produits dont la date d'entrée est plus ancienne. exemple le cas du tableau de la feuille reception le combobox ne doit charger que les produits
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45 Private Sub btnAjouter_Click() 'Ajoute une ligne dans la liste Devis With lstDevis .AddItem cboFamille.Text .List(.ListCount - 1, 1) = cboServices.Text '.List(.ListCount - 1, 2) = cboServices.List(cboServices.ListIndex, 5) '.List(.ListCount - 1, 3) = cboServices.List(cboServices.ListIndex, 4) .List(.ListCount - 1, 4) = txtQuantite.Text End With cboServices.ListIndex = -1 txtQuantite.Text = "" AutoriseValider End Sub Private Sub cboFamille_Enter() Dim d As Object, L&, x$, tablo, i&, dat Set d = CreateObject("Scripting.Dictionary") d.CompareMode = vbTextCompare 'la casse est ignorée L = cboServices.ListIndex x = cboServices.Text tablo = [T].Resize(, 3) 'tableau structuré, matrice, plus rapide For i = 1 To UBound(tablo) dat = tablo(i, 2) If IsDate(dat) Then _ If CDate(dat) <= Date Then _ If L = -1 Then d(tablo(i, 1)) = "" Else If tablo(i, 3) = x Then d(tablo(i, 1)) = "" Next If d.Count Then cboFamille.List = d.keys Else cboFamille.Clear End Sub Private Sub cboServices_Enter() Dim d As Object, L&, x$, tablo, i&, dat Set d = CreateObject("Scripting.Dictionary") d.CompareMode = vbTextCompare 'la casse est ignorée L = cboFamille.ListIndex x = cboFamille.Text tablo = [T].Resize(, 3) 'tableau structuré, matrice, plus rapide For i = 1 To UBound(tablo) dat = tablo(i, 2) If IsDate(dat) Then _ If CDate(dat) <= Date Then _ If L = -1 Then d(tablo(i, 3)) = "" Else If tablo(i, 1) = x Then d(tablo(i, 3)) = "" Next If d.Count Then cboServices.List = d.keys Else cboServices.Clear End Sub
TIKA 250ml_tamarin (05/05/2021) pour le produit TIKA 250ml_tamarin ,Lorsqu'on clique sur le bouton ajouter,
TIKA 250ml_Bissap (19/05/2021) pour le produit TIKA 250ml_Bissap
TIKA 250ml_Ananas (19/05/2021) pour le produit TIKA 250ml_Ananas
TIKA 250ml_Mangue (19/05/2021) pour le produit TIKA 250ml_Mangue
TIKA 250ml_Mangue (05/05/2021) pour le produit TIKA 250ml_Mangue
TIKA 1L_Mangue (19/05/2021) pour le produit TIKA 1L_Mangue
vérifier si la quantité ajoutée pour chaque produit est suffisante.
- si la quantité demandée est égale au stock du produit on ajoute le produit puis la ligne se supprime de la feuille reception. ex stock=10, qté demandée=10 donc le stock=0 donc suppression de la ligne de la feuille reception et chargement du produit dans le combobox en fonction de la date suivante.
- si la quantité demandée est superieure au stock du produit, un message pour informer de la quantité disponible puis l'utilisateur ajuste en fonction de la quantité disponible puis la ligne se supprime de la feuille reception. ex stock=10, qté demandée=15 donc si l'utilisateur corrige et ajoute les 10, le stock=0 donc suppression de la ligne de la feuille reception et chargement du produit dans le combobox en fonction de la date suivante.
- si la quantité demandée est inferieure au stock du produit, . ex stock=10, qté demandée=5, le produit est ajouté et le stock est mis à jour stock=5 donc vu que le produit a encore du stock la ligne de la feuille reception n'est pas supprimée et le combobox conserve le produit jusqu’à épuisement du stock
donc lorsque la ligne d'un produit est égale à 0, la ligne est supprimée afin qu'elle soit remplacée dans le combobox par ligne du meme produit ayant la date qui suit la date du produit supprimé.
l'idée est de facturer les premiers produits ajoutés à cause de leurs dates de péremption
Partager