XL 2016 Retrouver une date d'arrivée ou un délai en fonction d'un stock (INDEX+EQUIV?)

LVB77

XLDnaute Nouveau
Bonjour à tous,

Et merci d'avance à tous ceux qui voudront bien se pencher sur ma problématique.

A partir d'un tableau composé de la façon ci-dessous :

1ère colonne = Date du jour
2ème colone = Flux entrants du jour (renseigner manuellement)
3 ème colonne = Production du jour (renseigner manuellement)
4ème colonne = Stock restant du jour (Stock S-1+Flux J-Prod J) (calcul auto)
5ème colone = Date du dernier flux reçu non traité (calcul à trouver)
6ème colonne= Délais (date du jour-date du dernier flux non traité) (ou calcul à trouver)

Je cherche à retrouver la date et le délais dans les cellules de la 4ème et 5ème colonne en fonction du stock.

L'exemple en PJ sera plus parlant.

J'imaginai partir du stock puis de compter le nombre de cellule en partant des flux renseigner le même jour puis de stopper la comptabilisation des cellules (en remontant) dès que la somme de cette plage dépasse le valeur du stock. Ainsi le nombre de cellules comptabilisées donnerait un nombre de jours que je pourrais soustraire à la date de la 1ère colonne.

Le problème c'est que les fonctions index, équiv et décaler avec une somme matricielle (plage dynamique sur la colonne B) que j'ai pu tester (via les recherches appropriées pourtant) me renvoient des erreurs.

Est-ce qu'un âme charitable veut bien m'aider ou me dire que :"je me fais des noeuds au cerveau pour rien car il y a plus bien plus simple comme méthode ;) " ?
 

Pièces jointes

  • Retrouver une date d'arrivée ou un délai.xlsx
    55.5 KB · Affichages: 38

vgendron

XLDnaute Barbatruc
je pense avoir compris finalement..
donc un essai avec une macro (par formule. je n'y arrive pas comme tu peux le voir dans ta feuille d'origine..)

d'ailleurs.. il y a une erreur dans ta colonne E..à la ligne 14
 

Pièces jointes

  • Retrouver une date d'arrivée ou un délai.xlsm
    20.7 KB · Affichages: 44

LVB77

XLDnaute Nouveau
je pense avoir compris finalement..
donc un essai avec une macro (par formule. je n'y arrive pas comme tu peux le voir dans ta feuille d'origine..)

d'ailleurs.. il y a une erreur dans ta colonne E..à la ligne 14

Merci d’avoir fait pris le temps de te pencher sur ma problématique. Cela répond à mon besoin.
La macro fonctionne bien. Par contre elle ne garde pas les formules qui calculent le stock. Est-ce que c’est jouable de les conserver ?
 

vgendron

XLDnaute Barbatruc
remplace le code existant par celui ci
VB:
Sub DateDelai()

Dim tablo() As Variant
Fin = Range("E" & Rows.Count).End(xlUp).Row
If Fin <> 1 Then Range("E2:F" & Fin).ClearContents
tablo = Range("A1").CurrentRegion.Value
For i = UBound(tablo, 1) To LBound(tablo, 1) + 1 Step -1
    Stock = tablo(i, 4)
    j = i
    While Stock > 0
        Stock = Stock - tablo(j, 2)
        j = j - 1
    Wend
    tablo(i, 5) = tablo(j + 1, 1)
    tablo(i, 6) = tablo(i, 1) - tablo(i, 5) + 1
   
Next i

Range("E1").Resize(UBound(tablo, 1), 1) = Application.Index(tablo, , 5)
Range("F1").Resize(UBound(tablo, 1), 1) = Application.Index(tablo, , 6)

End Sub
 

LVB77

XLDnaute Nouveau
remplace le code existant par celui ci
VB:
Sub DateDelai()

Dim tablo() As Variant
Fin = Range("E" & Rows.Count).End(xlUp).Row
If Fin <> 1 Then Range("E2:F" & Fin).ClearContents
tablo = Range("A1").CurrentRegion.Value
For i = UBound(tablo, 1) To LBound(tablo, 1) + 1 Step -1
    Stock = tablo(i, 4)
    j = i
    While Stock > 0
        Stock = Stock - tablo(j, 2)
        j = j - 1
    Wend
    tablo(i, 5) = tablo(j + 1, 1)
    tablo(i, 6) = tablo(i, 1) - tablo(i, 5) + 1
  
Next i

Range("E1").Resize(UBound(tablo, 1), 1) = Application.Index(tablo, , 5)
Range("F1").Resize(UBound(tablo, 1), 1) = Application.Index(tablo, , 6)

End Sub

Cool ! Les formules sont conservées. Malheureusement une partie des dates trouvées (du 01/01 au 14/01) ne sont pas bonnes. On dirait qu'il renvoie des dates en format anglais mais non. A partir du 15/01 c'est bon. Par contre les délais sont bons.
J'ai regardé dans la macro mais je ne maitrise pas les ubound et Lbound (si le problème vient de là). Peux tu m'en dire un peu plus sur les 2 dernières ligne STP ?
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 086
Messages
2 085 197
Membres
102 814
dernier inscrit
JLGalley