1. Ce site utilise des "témoins de connexion" (cookies) conformes aux textes de l'Union Européenne. Continuer à naviguer sur nos pages vaut acceptation de notre règlement en la matière. En savoir plus.

XL 2016 Delais moyen de traitement règle de calcul

Discussion dans 'Forum Excel' démarrée par Yves Decabooter, 26 Novembre 2018.

  1. Yves Decabooter

    Yves Decabooter XLDnaute Nouveau

    Inscrit depuis le :
    31 Août 2017
    Messages :
    12
    "J'aime" reçus :
    0
    Sexe :
    Masculin
    Bonjour,

    J'ai un document access qui m'a été transmis pour calculer le délais de traitement des dossiers entrant (FIFO) en tenant compte d'un nombre de dossier en stock, et de sortie journalière. (voir image)
    delais traitement.png

    J'aimerais reconstituer la même formule dans Excel (mais la prog vba Access est illisible). Il faudrait un calcul au jour le jour mais aussi moyen sur le total de ma période.

    Ayant essayé de tourner le problème un peu dans tous les sens sans succès, j'en fais appel à vous.

    Si un as mes math passe par là ;)
     
  2. Chargement...

    Discussions similaires - Delais moyen traitement Forum Date
    Délais moyen entre 2 plages de date Forum Excel 29 Décembre 2017
    Moyenne de delais avec critere Excel 2003 Forum Excel 14 Juillet 2012
    XL 2016 Calcul délais de traitement Forum Excel 31 Août 2017
    Delais Forum Excel 30 Mai 2017
    Planification délais sous Excel Forum Excel 1 Mars 2017

  3. ERIC S

    ERIC S XLDnaute Barbatruc

    Inscrit depuis le :
    7 Février 2006
    Messages :
    4366
    "J'aime" reçus :
    57
    Travail/Loisirs :
    Conseil lean et outils Excel : www.xlpourtpme.fr
    Habite à:
    Saint Judoce
    Utilise:
    Excel 2016 (PC)
    bonsoir

    peut-être
     

    Pièces jointes:

    • délai.xlsx
      Taille du fichier:
      214.5 Ko
      Affichages:
      9
  4. Yves Decabooter

    Yves Decabooter XLDnaute Nouveau

    Inscrit depuis le :
    31 Août 2017
    Messages :
    12
    "J'aime" reçus :
    0
    Sexe :
    Masculin
    Merci, en tout cas cela reconstitue mon total... Mais avant d'arriver là il faudrait que j'ai la formule qui me donne le calcul du délais au jour le jour dans la colonne délais.
     
  5. ERIC S

    ERIC S XLDnaute Barbatruc

    Inscrit depuis le :
    7 Février 2006
    Messages :
    4366
    "J'aime" reçus :
    57
    Travail/Loisirs :
    Conseil lean et outils Excel : www.xlpourtpme.fr
    Habite à:
    Saint Judoce
    Utilise:
    Excel 2016 (PC)
    Re
    pour cela il faut avoir les données de base, qui doivent être dans une table access si j'ai bien compris, ou vous voulez mettre en place un outil excel qui ferait la même chose ?
     
  6. Yves Decabooter

    Yves Decabooter XLDnaute Nouveau

    Inscrit depuis le :
    31 Août 2017
    Messages :
    12
    "J'aime" reçus :
    0
    Sexe :
    Masculin
    Oui je peux vous donner la programmation VBA d'access... Mais je n'ai pas compris le mode de calcul même si en théorie je le comprends.

    J'espère que vous pourrez comprendre quelque chose.

     
  7. ERIC S

    ERIC S XLDnaute Barbatruc

    Inscrit depuis le :
    7 Février 2006
    Messages :
    4366
    "J'aime" reçus :
    57
    Travail/Loisirs :
    Conseil lean et outils Excel : www.xlpourtpme.fr
    Habite à:
    Saint Judoce
    Utilise:
    Excel 2016 (PC)
    Re

    pas spécialiste access et ne connait pas ton appli :(

    A priori tes données sont dans une table qui s'appelle Tdonnées.
    Comment procèdes-tu aujourd'hui ? Tu lances une macro sous access ?

    en première partie elle récupère des champs (tous?) de la table en fonction du critère Ntypesuivi et les trie par date d'arrivée. il faudrait regarder les champs de Tdonnées et ce qu'ils contiennent pour en savoir plus
    il devrait être possible de lier un fichier excel à la table access et ensuite faire les calculs (sans doute en jours ouvrés + fériés
     
  8. Yves Decabooter

    Yves Decabooter XLDnaute Nouveau

    Inscrit depuis le :
    31 Août 2017
    Messages :
    12
    "J'aime" reçus :
    0
    Sexe :
    Masculin
    En fait je fait je clique sur un bouton calculer qui appelle la fonction VBA ci-avant et les données de Tdonnées sont uniquement celles que tu vois (le type de suivi c'est parce que j'ai un calcul de délais pour plusieurs suivi d'activités différentes ) :
    capture de ma table Tdonnées
    upload_2018-11-28_16-14-23.png
     
  9. ERIC S

    ERIC S XLDnaute Barbatruc

    Inscrit depuis le :
    7 Février 2006
    Messages :
    4366
    "J'aime" reçus :
    57
    Travail/Loisirs :
    Conseil lean et outils Excel : www.xlpourtpme.fr
    Habite à:
    Saint Judoce
    Utilise:
    Excel 2016 (PC)
    Re
    dans ta dernière copie d'écran les délais jour sont déjà calculés. C'est ce que tu récupères après clic sur bouton ou c'est ?
    ta base initiale doit plutôt être une ligne par donnée avec date début et date fin non ?

    Donc, de quelles données veux-tu ou peux-tu partir ? Après un calcul formule ou vba est toujours possible, il faut par contre savoir si on gère avec jours ouvrés …
    dans ton code le délai doit être calculé par "Calcul_délai (NtypeSuivi)", une fonction définie ailleurs je pense
     
  10. Yves Decabooter

    Yves Decabooter XLDnaute Nouveau

    Inscrit depuis le :
    31 Août 2017
    Messages :
    12
    "J'aime" reçus :
    0
    Sexe :
    Masculin
    Les délais sont calculés par le bouton et la fonction VBA.

    Ensuite il ne faut pas tenir compte des jours ouvrés, un calcule simplement de date a date. La fonction de calcul délais est celle mise ci avant...

    Public Sub Calcul_délai(NtypeSuivi)
    On Error GoTo err_delai
    Dim db As Database
    Dim rst As Recordset
    Dim rst2 As Recordset
    Dim cumul_arrivée As Long
    Dim indicjour As Byte
    Dim cumul_jour As Long
    Dim qté_à_traiter As Long
    Dim qté_traitée As Long
    Dim strsql As String
    Dim date_début As Date
    Dim stk_initial As Integer
    Dim indic_fin As Byte
    ' == ctrl
    strsql = "SELECT Tdonnées.NTypeSuivi, Tdonnées.Stock_depart, Tdonnées.Stock_fin"
    strsql = strsql & " FROM Tdonnées"
    strsql = strsql & " WHERE (((Tdonnées.NTypeSuivi)=" & NtypeSuivi & ") AND ((Tdonnées.Stock_depart)<0)) OR (((Tdonnées.NTypeSuivi)=" & NtypeSuivi & ") AND ((Tdonnées.Stock_fin)<0));"
    Set db = CurrentDb
    Set rst = db.OpenRecordset(strsql)
    If rst.RecordCount > 0 Then
    MsgBox "Stocks négatifs impossibles." & vbCrLf & "Veuillez corriger les arrivées et/ou les quantités traitées." & vbCrLf & vbCrLf & "Les délais n'ont pas été recalculés.", 48, "Erreur"
    Set db = Nothing
    Exit Sub
    End If
    date_début = DLookup("dtfige", "TTypeSuivi", "NTypeSuivi=" & NtypeSuivi)
    stk_initial = DLookup("StkDépart", "TTypeSuivi", "NTypeSuivi=" & NtypeSuivi)
    strsql = "SELECT TDonnées.Dte, TDonnées.Arrivée, TDonnées.Stock_depart, TDonnées.Stock_fin, TDonnées.Traité, TDonnées.Delai"
    strsql = strsql & " FROM TDonnées"
    strsql = strsql & " WHERE (((TDonnées.Dte) >= #" & Format(date_début, "MM/DD/YYYY") & "# And (TDonnées.Dte) < Date()) and ((tdonnées.ntypesuivi) = " & NtypeSuivi & "))"
    strsql = strsql & " ORDER BY TDonnées.Dte DESC;"
    Set rst = db.OpenRecordset(strsql)
    rst.MoveFirst
    Do Until rst.EOF
    Début:
    If rst!Traité = 0 Then

    rst.Edit
    rst!Delai = 0
    rst.Update
    rst.MoveNext
    If rst.EOF Then
    Set db = Nothing
    Exit Sub
    End If
    GoTo Début
    End If

    strsql = "SELECT TDonnées.Dte, TDonnées.Arrivée, TDonnées.Stock_depart, TDonnées.Stock_fin, TDonnées.Traité"
    strsql = strsql & " FROM TDonnées"
    strsql = strsql & " WHERE (((TDonnées.Dte) <= #" & Format(rst!Dte, "MM/DD/YYYY") & "#) and tdonnées.ntypesuivi = " & NtypeSuivi & ")"
    strsql = strsql & " ORDER BY TDonnées.Dte DESC;"

    Set rst2 = db.OpenRecordset(strsql)
    rst2.MoveFirst
    cumul_arrivée = 0
    indicjour = 0

    Do Until cumul_arrivée >= rst!Stock_depart
    If rst2.EOF Then
    cumul_arrivée = cumul_arrivée + stk_initial
    indic_fin = 1
    Else
    cumul_arrivée = cumul_arrivée + rst2!Arrivée
    indicjour = indicjour + 1
    rst2.MoveNext
    End If
    Loop

    rst2.MovePrevious
    qté_traitée = 0
    cumul_jour = 0


    If indic_fin = 0 Then
    qté_à_traiter = (rst2!Arrivée - (cumul_arrivée - rst!Stock_depart))
    Else
    qté_à_traiter = (rst2!Arrivée + stk_initial - (cumul_arrivée - rst!Stock_depart))
    End If

    If qté_à_traiter >= rst!Traité Then
    qté_à_traiter = rst!Traité
    cumul_jour = cumul_jour + (indicjour * qté_à_traiter)
    If cumul_jour <= 0 Then
    MsgBox "hhh"
    End If
    qté_traitée = rst!Traité
    End If

    Do Until qté_traitée >= rst!Traité

    cumul_jour = cumul_jour + (indicjour * qté_à_traiter)


    indicjour = indicjour - 1
    qté_traitée = qté_traitée + qté_à_traiter

    If indicjour > 0 Then
    rst2.MovePrevious
    End If

    If rst!Traité - qté_traitée >= rst2!Arrivée Then
    qté_à_traiter = rst2!Arrivée
    Else
    qté_à_traiter = rst!Traité - qté_traitée
    End If

    Loop
    rst.Edit
    rst!Delai = cumul_jour / rst!Traité

    rst.Update
    rst.MoveNext
    Loop
    Set db = Nothing
    Exit Sub
    err_delai:
    If Err = 3021 Then
    MsgBox "Impossible de calculer le délai du " & rst!Dte & vbCrLf & "Vous devez saisir au moins " & rst!Stock_depart & " en arrivée sur ce jour et/ou les jours précédents.", 48
    Set db = Nothing
    Exit Sub
    Else
    MsgBox Err.Description, , Err
    End If
    Exit Sub
    End Sub
     
  11. ERIC S

    ERIC S XLDnaute Barbatruc

    Inscrit depuis le :
    7 Février 2006
    Messages :
    4366
    "J'aime" reçus :
    57
    Travail/Loisirs :
    Conseil lean et outils Excel : www.xlpourtpme.fr
    Habite à:
    Saint Judoce
    Utilise:
    Excel 2016 (PC)
    Re

    sous Excel (formules ou vba …) il est possible de faire quelque chose mais je ne comprends toujours pas ce que tu veux car dans ton post 7 les délais sont déjà calculés
    je peux regarder pour te faire un calcul de délais en considérant que les données de départ sont les colonnes Dte … traité
    Mais est-ce cela que tu veux ? car ce sont probablement déjà des données travaillées, les données de départ pouvant être 1 ligne par dossier.
     
  12. Yves Decabooter

    Yves Decabooter XLDnaute Nouveau

    Inscrit depuis le :
    31 Août 2017
    Messages :
    12
    "J'aime" reçus :
    0
    Sexe :
    Masculin
    Alors en théorie le calcul devrait être le suivant :
    si pas de qté traitées alors 0,
    Ensuite pour la journée du 3/10 (70 qté traitées) => (42 venait de la vielle (soit 42*2jours) et 28 du jour même (soit 28*1).
    Donc mon calcul est (42*2 + 28) = 112 que je divise par mon nombre de qté traitées 70.
    Soit 112/70 = 1,6
    Cqfd ☺

    Par contre s'il reste du stock de l'avant veille celles-ci doivent être comptabilisé pour 3 jours de délais (*3) et ainsi de suite plus on prend du retard.
    C'est cette formule là que je ne parvient pas à monter !
     
  13. ERIC S

    ERIC S XLDnaute Barbatruc

    Inscrit depuis le :
    7 Février 2006
    Messages :
    4366
    "J'aime" reçus :
    57
    Travail/Loisirs :
    Conseil lean et outils Excel : www.xlpourtpme.fr
    Habite à:
    Saint Judoce
    Utilise:
    Excel 2016 (PC)
    re

    sauf si tu es sûr d'avoir très souvent des stocks à 0, les formules vont se compliquer très vite
    un essai avec une fonction personnalisée, à bousculer
     

    Pièces jointes:

  14. Yves Decabooter

    Yves Decabooter XLDnaute Nouveau

    Inscrit depuis le :
    31 Août 2017
    Messages :
    12
    "J'aime" reçus :
    0
    Sexe :
    Masculin
    Je vais regarder à ta fonction... Mais en effet potentiellement, mes tableaux sont mensualisé donc le risque est d'aller théoriquement jusque 30j de retard, ce que je n'espère pas sinon je suis virés lol ☺.
     
  15. Yves Decabooter

    Yves Decabooter XLDnaute Nouveau

    Inscrit depuis le :
    31 Août 2017
    Messages :
    12
    "J'aime" reçus :
    0
    Sexe :
    Masculin
    Bonjour, j'ai enfin eu le temps de regarder ta fonction qui semble bien fonctionner, sauf que mon fichier excel n'as pas les colonnes dans le même ordre que toi et que du coups j'ai du mal à la modifié pour mon cas. Je me perds dans les offsets ☺.

    Voilà comment est fait mon fichier Excel.
    upload_2018-12-6_10-3-31.png

    Attention, il ne faut pas figer les lettres de colonnes car j'ai la même chose à calculer sur d'autres colonnes. Petite info, pas besoin de sierreur car mon solde du mois précédent est toujours noté avant.
     

Partager cette page