Déduction du montant d'expiration de l'inventaire historiquement le plus an

Bonjour,

je demande à des personnes expérimentées de m'aider avec ce problème dans le programme de pharmacie, qui est divisé en deux parties :

la première:

Les médicaments entrants ont une date de péremption différente sur chaque facture entrante

Le même article avec plus d’une date de péremption se trouve dans l’entrepôt

Je souhaite que chaque facture de vente soit déduite de la date d'expiration la plus ancienne

Le numéro total de l'article, le reste de l'ancienne date d'expiration et les numéros de la nouvelle date d'expiration apparaissent dans l'entrepôt.

À condition qu'aucune pièce ne soit déduite de la nouvelle validité jusqu'à l'expiration des numéros de l'ancienne validité.

La seconde partie:

Je veux : Une mention sur la facture de vente pour tout article qui est sur le point d'expirer dans un délai de 6 mois ou moins, qu'elle apparaisse en rouge, le numéro restant et la date d'expiration, afin qu'elle soit devant celui qui écrit la facture de vente tout le temps jusqu'à ce que cet article expire et disparaisse de ce relevé.

Et Dieu vous récompense avec du bien

Bonjour mando200

il faudra penser à mettre un fichier.

Bonsoir, je vous propose ce petit code pour déterminer la date la plus ancienne dans le stock; ceci vous permettra de résoudre votre premier problème (En couleur mes rajouts):

Dim dat, dat_bon As Date

Dim X As Integer
Dim v As Integer
Dim Uf As Integer
Dim i As Long
Dim J As Long
Set fa = Sheets("Stock")
With Feuil1
Uf = fa.Range("A" & Rows.Count).End(xlUp).Row

For i = 0 To ListBox1.ListCount - 1
For J = 2 To Uf
If .Cells(J, 1) = Val(ListBox1.List(i, 0)) And .Cells(J, 5) = ComboBox1 Then
If Me.OptionButton1 = True Or Me.OptionButton2 = True Then
dat_bon = .Cells(J, 9)
If dat_bon < dat Then
dat_bon = dat
End If
End If
End If
Next J
Next i

For i = 0 To ListBox1.ListCount - 1
For J = 2 To Uf
If .Cells(J, 1) = Val(ListBox1.List(i, 0)) And .Cells(J, 5) = ComboBox1 And .Cells(J, 9) = dat_bon Then
If Me.OptionButton1 = True Then
.Cells(J, 4) = .Cells(J, 4) + Val(ListBox1.List(i, 4))
.Cells(J, 6) = .Cells(J, 6) - Val(ListBox1.List(i, 4))


ElseIf Me.OptionButton2 = True Then
.Cells(J, 4) = .Cells(J, 4) - Val(ListBox1.List(i, 4))
.Cells(J, 7) = .Cells(J, 7) + Val(ListBox1.List(i, 4))

End If
End If
Next J
Next i

pour le second probleme :

Private Sub stocktr_Change()
If stocktr.Value < 20 Then
stocktr.BackColor = RGB(255, 0, 0)
Else
stocktr.BackColor = RGB(255, 255, 255)

End If
End Sub

je vous laisse mon fichier pour amélioration parcequ'il y a des points d'ombre dans vos explications qui méritent meilleures explications pour finaliser le fichier.

l'un de ces points c'est le choix d'enlever du stock du plus vieil enregistrement sans prendre en compte que la ligne doit se supprimer une fois à zero et que faire si le nombre restant est inférieur à la quantité à sortir

un autre point, votre userform a été initialisé pour afficher le premier enregistrement trouvé par le plus vieil enregistrement mais vous voulez un affichage en rouge quand un enregistrement s'epuise (inférieur à 20 dans mon cas) alors que d'autre ligne avec le même produit dan le même magasin existe .......

Re

Désolé mais le deuxième point c'est pas ce que vous demandiez, le principe reste le même avec la formule

DateAdd("m", -6, cells(j,9)) ou DateAdd("m", -6, range("Ij")))

un petit coup de fatigue je le referais quand j'aurai vos éclaircissements

Merci ghisnob

d'abord

Cela fonctionne dans une certaine mesure

Mais la quantité est dans la cellule d

Je constate qu'1 quantité est déduite à chaque opération d'épargne, sachant que la quantité que je veux déduire dans ce code 100 est 3, et à chaque fois que je veux déduire ce chiffre 3, je constate que la cellule n'en déduit qu'1 à chaque transaction.

deuxièmement

Je souhaite que lorsque je choisis le code 100 dans ce produit, la date de stock la plus ancienne soit affichée, et lorsque le stock minimum est nul, elle passe à la date suivante avec la quantité de stock récente pour cet article.

Bonjour

Pour la première préoccupation, vous avez raison le problème vient de cette ligne; il faudra mettre 3 à la place comme sur la capture d'en bas

1

Bonjour

Concernant la deuxième question, si vous pouvez m'aider à résoudre ce problème difficile, je vous en serais reconnaissant

Je suis entrain de regarder juste pris par autres choses et votre code presente des points que je ne comprend pas bien. Mais je suis dessus

Commençons par le code produit du magasin. Il est livré avec la première valeur et non selon la date la plus ancienne s'il s'avère que la valeur du stock doit être ajustée, de sorte que l'autre solde apparaisse en fonction de la validité la plus ancienne.

(stocktr)

Bonjour

S'il vous plaît, aidez-moi, je suis coincé J'espère avoir réussi à clarifier ce qui est requis

Je veux que lorsque je choisis un magasin et un code produit, la valeur du stocker vienne à la date la plus basse

Cela est dû à la vente de la date la plus ancienne puis de la suivante la plus récente dans le cas de la

cellule D4:D20, puisque les dates sont différentes en raison des quantités d'achat multiples dans les cellules I4:I20.

A= CB_Pièce ( 100 )

E= ComboBox1 ( magasin )

D= STOCKER ( 149 & 10 )

i = Textbox1 date (01/01/2024 & 01/05/2024 )

La condition doit être remplie

Date minimum et stock pour le produit et le code magasin

comme ça

A= CB_Pièce ( 100 )

E= ComboBox1 ( magasin )

D= STOCKER ( 10 )

i = Textbox1 date (01/01/2024 )

C'est par choix

CB_Pièce ( 100 ,101,102,103......

ComboBox1 ( magasin ,magasin1,magasin2,magasin,.....
Lorsque la limite de commande atteint zéro, elle passe à la deuxième quantité et la date suivante est le 01/05/2024
J'espère avoir répondu à ma demande et je vous serais reconnaissant de m'aider

Private Sub CB_Pièce_Change()
Sheets("Stock").Activate
    On Error Resume Next
   'ComboBox2.Clear

Me.stocktr.Enabled = False
  Quantitetr = ""
   catetr = "": stocktr = "": TextBox1 = ""
   With ComboBox1
     ' .Clear
      If CB_Pièce = "Entrez le code produit" Then
         .AddItem "Du magasin": .ListIndex = 0: Exit Sub
      End If
      Dim i&
      For i = 1 To UBound(TblInv)
         If TblInv(i, 1) = CB_Pièce.Text Then
            .AddItem TblInv(i, 5)
            If catetr = "" Then catetr.Text = TblInv(i, 2)

            If stocktr = "" Then stocktr = TblInv(i, 4)
If Me.OptionButton1 = True Then
       If TextBox1 = "" Then TextBox1 = ""
ElseIf Me.OptionButton2 = True Then
    If TextBox1 = "" Then TextBox1 = Format(TblInv(i, 9), "DD/MM/YYYY")
End If

        End If
      Next i
      .ListIndex = 0
   End With
Me.stocktr.Enabled = False
Quantitetr.SetFocus
End Sub
[CODE]Private Sub MajStkProv()
Dim i&
   For i = 1 To UBound(TblInv)
      If TblInv(i, 1) = CB_Pièce.Text Then
         If TblInv(i, 5) = ComboBox1 Then
            stocktr = TblInv(i, 4)

 Exit For
         Else: stocktr = 0

         End If
         End If
   Next i
End Sub

Bonsoir un peu souffrant, difficile pour moi de m'y concentrer mais je vous reviens

Il n'y a rien de mal chez toi, j'espère que tu vas bien et en bonne santé Bien

Rechercher des sujets similaires à "deduction montant expiration inventaire historiquement"