Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2016 Verification FIFO

GiniVBA

XLDnaute Nouveau
Bonjour,

J’y suis depuis des heures et ne parviens pas à trouver une solution. Assez frustrant car il n'y a que 3 colonnes !!

Il ne s'agit pas d'une valorisation FIFO mais d'une vérification FIFO (First In First Out).


Si un instrument A entre dans mon stock le 1er aout et sort du stock le 5 aout, je veux m'assurer qu'aucun instrument qui soit entré dans mon stock le 2 aout ne soit sorti avant l’instrument A. Dans la pratique c’est le cas et mon but est de valoriser le nombre d’instruments pour lesquels le FIFO n’a pas été respecté.


Colonne A = Date de sortie

Colonne B = Date d’entrée

Colonne C = Nombre d’instruments



DATE_OUTDATE_INNUMBER
04/08/2021​
02/08/2021​
9​
04/08/2021​
03/08/2021​
27​
04/08/2021​
04/08/2021​
27​
05/08/2021​
01/08/2021​
5​
05/08/2021​
02/08/2021​
6​
05/08/2021​
03/08/2021​
19​


Par exemple, des instruments sont sortis le 05/08 alors qu’ils étaient en stock depuis le 01/08 alors que des instruments entrés le 04/08 sont sortis le jour même.


Je suis convaincu qu'il existe une formule via Index / Match / Large / Small mais je ne la trouve pas.


Par avance merci beaucoup pour votre aide.
 

vgendron

XLDnaute Barbatruc
Bonjour

un essai par macro??
VB:
Sub fifo()
With ActiveSheet
    fin = .Range("A" & .Rows.Count).End(xlUp).Row
    tabdata = .Range("A2:D" & fin).Value
    
    For i = LBound(tabdata, 1) To UBound(tabdata, 1)
        For j = LBound(tabdata, 1) To UBound(tabdata, 1)
            If i = j Then
            
            Else
                If tabdata(j, 2) >= tabdata(i, 2) And tabdata(j, 1) <= tabdata(i, 1) Then
                    tabdata(i, 4) = "Not FIFO"
                End If
            End If
        Next j
    Next i
    .Range("A2").Resize(UBound(tabdata, 1), UBound(tabdata, 2)) = tabdata
End With
End Sub
 

GiniVBA

XLDnaute Nouveau
Bonjour,
tout d'abord merci pour l'input.
Je pense que c'est un piste mais dans ce cas il faudrait revenir a la donnee initiale. L'exemple que j'ai mis etait un agregat du total des items par jour de sortie / jour d'entree.
Quand je tente cette macro sur la donnee source tout est en Non FIFO (cf PJ).
Mais cela pourrait etre une bonne piste oui !
 

Pièces jointes

  • test fifo macro.xlsm
    46 KB · Affichages: 11

vgendron

XLDnaute Barbatruc
je pense qu'il faut jouer avec l'inégalité stricte ou pas..
VB:
If tabdata(j, 2) >= tabdata(i, 2) And tabdata(j, 1) < tabdata(i, 1) Then
Dans ton nouvel exemple.. avec la ligne de code ci dessus: tout est FIFO (colonne D reste vide)
il faudrait que tu mettes plusieurs exemples avec plusieurs résultats différents pour pouvoir tester correctement (et mettre en colonne E par exemple: le résultat attendu)
 

GiniVBA

XLDnaute Nouveau
Bonjour,
merci pour votre retour.
Je me rends compte que mon exemple n'est pas parfait mais que vos commentaires m'ont permis de voir que ce n'etait pas faisable en tant que tel... A partir du premier instrument pour lequel le FIFO n'est pas respecte, aucun instrument derriere ne va respecter le FIFO !
MErci encore.
 

Discussions similaires

Réponses
2
Affichages
705
Réponses
17
Affichages
3 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…