[Résolu] Formule avec date dans générateur d'état  

 

Fabien
(@fabien)
Membre de confiance
Inscription: Il y a 5 mois
Messages: 10
7 juin 2019 07:56  

Bonjour,

Tout d'abord, n'ayant pas vu de rubrique générateur d'état, je me permet de poster ce message ici.

Je souhaite faire des formules avec des champs date dans le générateur d'état, mais j'ai quelques soucis de mise en forme.

je souhaite soustraire à une date un nombre de jour fixe.

Le format date sur le tableau apparait en jj/mm/aaaa et le nombre de jour est une valeur numérique (2 par exemple)

j'ai essayé les formule simple du type Z25-Z172 ou val(Z25)-Z172 mais ce ne fonctionne pas. (résultat 0 ou erreur)

J'arrive par contre à faire une comparaison avec une formule (SI Z25<Z172 ALORS Z172 SINON Z25) mais le format du résultat passe en aaaammjj, ce qui n'est pas pratique.

Y a t-il une solution pour la formule et pour le format.

Merci de votre aide


Citation
promethium33
(@promethium33)
Membre 5 étoiles
Inscription: Il y a 7 mois
Messages: 91
7 juin 2019 09:29  

Bonjour,

Les champs dates ne sont pas numérique donc pas de calcul direct depuis ceux-ci, il vous faut les convertier avant de calculer avec la fonction DateVersEntier().

Ex : DateVersEntier(Zxx)-Val(Zyy)


RépondreCitation
Fabien
(@fabien)
Membre de confiance
Inscription: Il y a 5 mois
Messages: 10
7 juin 2019 09:49  

Bonjour Promethium33,

Merci pour ta réponse.

J'ai effectivement essayer de faire cette formule {DATEVERSENTIER(Z25)-VAL(Z285)} mais je ne comprends pas le résultat :

Pour l'exemple j'ai mon champs date (12/06/2019) auquel je veux soustraire mon champs numérique (2). En appliquant la formule dans le générateur d'état, le résultat obtenu est de 80149

Quand je décompose ma formule pour tester l'opération, j'ai pourtant :

DATEVERSENTIER(Z25) j'obtiens 20190612

VAL(Z285) j'obtiens 2

Voila si tu as une idée je suis preneur.

Merci.

 


RépondreCitation
Fabien
(@fabien)
Membre de confiance
Inscription: Il y a 5 mois
Messages: 10
7 juin 2019 10:36  

Bonjour,

Bon j'ai rajouter deux colonnes pour scinder l'opération et fait la formaule sur la 3eme. ca marche, Mais je me retrouve de nouveau avec le format aaaammjj que je souhaiterai afficher au format jj/mm/aaaa. de plus je ne sais pas comment masquer les colonnes qui servent uniquement au calcul.

Si quelqu'un a une solution ou une piste de recherche.

Merci d'avance.


RépondreCitation
promethium33
(@promethium33)
Membre 5 étoiles
Inscription: Il y a 7 mois
Messages: 91
7 juin 2019 10:47  

J'ai déjà une remarque : cela posera de gros problème pour les date à cheval entre 2 mois, la conversion fait passer cela en pur numérique donc tu te retrouvera avec un 20190599 par exemple...

Quel est l'objectif de ce calcul et le contexte, je pense qu'il faut procéder autrement : quel fichier du GE et quels champs utilisés ?


RépondreCitation
Fabien
(@fabien)
Membre de confiance
Inscription: Il y a 5 mois
Messages: 10
7 juin 2019 11:32  

Le fichier utilisé est celui Cdes client.

Les champs en question sont

Délai jour

Délai Ddé

Lors de la réception de notre commande nous rentrons automatiquement dans le "Délai arrivé client", cela rempli automatiquement le "Délai jour" avec le transport en moins, et le champs "Délai Ddé" qui lui inclus le transport. Lors de notre AR si le client ne respecte pas les délais standards, nous modifions alors la date "Délai arrivé client" avec celle de notre AR. La date "délai Ddé" elle n'est pas modifiée pour conserver la demande initiale du client. Lors de la préparation des expéditions notre magasin édite le générateur d'état qui donne la date d'expédition lié à l'AR (c'est à dire le Délai jour).

Cependant si les pièces sont mise en stock plus tôt que la date d'expédition prévu (fabrication plus rapide), le générateur d'état initiale ne permettait pas au magasin de savoir qu'il pouvait expédier les produits plus tôt.

J'ai donc rajouter le champs Délai Ddé dans le générateur mais celui ci ne déduit pas le transport donc je ne peux pas l'utiliser pour ma liste de préparation car sinon je vais expédier le jour de la réception client.

Je souhaite donc enlever le champs "délai achem" au "Délai Ddé" depuis le générateur d'etat.

j'espère avoir clarifié mes attentes.

 


RépondreCitation
Fabien
(@fabien)
Membre de confiance
Inscription: Il y a 5 mois
Messages: 10
7 juin 2019 13:11  

Sur la première phrase il faut lire :

Lors de la réception de notre commande nous rentrons la date de livraison dans le "Délai arrivé client", cela rempli...


RépondreCitation
ThibT
(@thibt)
Membre 5 étoiles
Inscription: Il y a 6 mois
Messages: 69
7 juin 2019 13:41  

Bonjour,

Vous n'êtes pas loin de la solution.

Il faut effectivement utiliser la fonction DateVersEntier() pour soustraire un nombre de jours à une date.

Mais il faut ensuite utiliser la fonction EntierVersDate() sur le résultat de la soustraction.

Vous devriez obtenir ceci :

EntierVersDate(DateVersEntier(Z25)-Val(Z285))

 

En revanche, la fonction DateVersEntier() devrait pour la date du 12/06/2019 vous retourner : 80151

Si ce n'est pas le cas, c'est que vous ne passer pas le bon paramètre.

<Date> : Chaîne de caractères, variable de type Date ou variable de type DateHeure
 
Date à convertir. Cette date peut correspondre à :
  • une chaîne de caractères au format AAAAMMJJ (AAAA correspond à l'année, MM au mois et JJ au jour).
  • une variable de type Date.

Vous pouvez essayer ceci :

EntierVersDate(DateVersEntier(DateVersChaine(Z25, "AAAMMJJ"))-Val(Z285))


RépondreCitation
Fabien
(@fabien)
Membre de confiance
Inscription: Il y a 5 mois
Messages: 10
7 juin 2019 14:43  

Merci ThibT,

Effectivement la ça marche correctement même avec des changement de mois.

Par contre le format reste en AAAAMMJJ et ne repasse pas en jj/mm/aaaa.

Seul bémol que je n'avais pas pris en compte, le délai d'acheminement ne tiens pas compte du calendrier (normale) et j'ai donc quelque date ou ma préparation tombe sur un weekend.

Dernière information pour ceux qui relirai le topic et qui voudrait utiliser la formule proposé, il manque un A dans les années.

Je vais continuer à travailler le sujet.

En tout cas merci à tous.


RépondreCitation
ThibT
(@thibt)
Membre 5 étoiles
Inscription: Il y a 6 mois
Messages: 69
7 juin 2019 15:07  

Du coup la bonne formule pour repasser la date au format JJ/MM/AAAA sera :

DateVersChaine(EntierVersDate(DateVersEntier(DateVersChaine(Z25, "AAAAMMJJ"))-Val(Z285)), "JJ/MM/AAAA")


RépondreCitation
Fabien
(@fabien)
Membre de confiance
Inscription: Il y a 5 mois
Messages: 10
7 juin 2019 15:34  

Apparemment les / de "JJ/MM/AAAA" lui pose problème. Je ne récupère juste que les jours (ex: 12) mais pas le / ni ce qui va derrière (/06/2019).

J'ai essayé avec - à la place de / mais c'est la même chose.

Par contre si je sort les / la  valeur s'affiche entière (12062019)

 


RépondreCitation
promethium33
(@promethium33)
Membre 5 étoiles
Inscription: Il y a 7 mois
Messages: 91
12 juin 2019 07:16  

Bonjour

Une autre piste serait de simplement lier le GE vers Excel et d'utiliser les formules excel pour retrouver les dates qui vous correspondent. De mon côté je cherchais à calculer un nombre de jours ouvrés, je n'ai pas trouvé dans le GE car il comptabilisait les week-end, tandis qu'excel comporte une fonction NB.JOURS.OUVRES qui me permettait d'avoir le bon indicateur.

Je pense que vous pourriez trouver votre bonheur pour prévoir des dates de préparation sur jours ouvrés via Excel. Le lancement se fait toujours depuis PMI et ouvre automatiquement le fichier que vous avez lié au GE, donc on ne mets pas vraiment de verrue externe au système avec ce type de processus.


RépondreCitation
Fabien
(@fabien)
Membre de confiance
Inscription: Il y a 5 mois
Messages: 10
12 juin 2019 07:21  

Merci promethium,

je vais aussi regarder cette piste.

Merci.


RépondreCitation
ThibT
(@thibt)
Membre 5 étoiles
Inscription: Il y a 6 mois
Messages: 69
12 juin 2019 09:41  
Posté par: Fabien

Apparemment les / de "JJ/MM/AAAA" lui pose problème. Je ne récupère juste que les jours (ex: 12) mais pas le / ni ce qui va derrière (/06/2019).

J'ai essayé avec - à la place de / mais c'est la même chose.

Par contre si je sort les / la  valeur s'affiche entière (12062019)

 

Bonjour,

Il y a effectivement un problème avec la valeur de retour de la fonction DateVersChaine() dans PMI...

Vous pouvez comme le dit @promethium33, chaîner votre GE avec un fichier Excel (ou un WDEtat).

Et si vous tenez absolument à rester dans le GE, il y a une solution mais c'est un peu lourd :

EntierVersDate(DateVersEntier(DateVersChaine(Z25, "AAAAMMJJ"))-Val(Z285), "J") + "/" + EntierVersDate(DateVersEntier(DateVersChaine(Z25, "AAAAMMJJ"))-Val(Z285), "M") + "/" + EntierVersDate(DateVersEntier(DateVersChaine(Z25, "AAAAMMJJ"))-Val(Z285), "A")

Vous pouvez essayer de simplifier en enlevant le premier DateVersChaine() qui ne doit pas être indispensable :

EntierVersDate(DateVersEntier(Z25)-Val(Z285), "J") + "/" + EntierVersDate(DateVersEntier(Z25)-Val(Z285), "M") + "/" + EntierVersDate(DateVersEntier(Z25)-Val(Z285), "A")

Mais pour les jours ouvrés c'est effectivement complexe à gérer dans le GE...

Bon courage


RépondreCitation
admin-mypmi
(@admin-mypmi)
Membre
Inscription: Il y a 8 mois
Messages: 18
12 juin 2019 11:24  

Bonjour Fabien,

Nous avons déplacé votre message dans la catégorie "Statistiques / Générateur d'Etat" car elle est plus adaptée à votre sujet.

Nous vous remercions de votre implication.


RépondreCitation