Bonsoir à tous,
Petit casse-tête entre amis...
Je voudrais dans une appli obliger de choisir une quantité qui doit être
combinaison d'emballages possibles.
Comme chacun sait qu'un bon exemple vaut tous les discours...
J'ai des assiettes que je peux conditionner par 15, 25, 40. Dans une
rubrique texte, on met alors
25/15/40 pour dire que 25 sera la quantité par défaut et les autres des
alternatives.
On peut bien évidemment mélanger plusieurs emballages...
Quels quantités sont valides ?
10 non... ne correspond à aucun conditionnement
15 oui facile
20 non, 1 x 15 puis ???
30 oui, 2 x 15
45 oui, 3 x 15
48 non
50 oui, 2 x 25
55 oui, 2 x 15 + 1 x 25
60 oui, 4 x 15
65, oui 1 x 40 + 1 x 25 ou 2 x 25 + 1 x 15
69, non
... Et ainsi de suite
Comment feriez vous une fonction qui me renverrait Vrai/Faux en lui
2 paramètres : "Quantité" (60) et "chaine de conditionnement" (25/15/40)
Des remerciements en pagaille au premier qui trouve la sympathique
B. Nève
Bonsoir à tous,
Petit casse-tête entre amis...
Je voudrais dans une appli obliger de choisir une quantité qui doit être
combinaison d'emballages possibles.
Comme chacun sait qu'un bon exemple vaut tous les discours...
J'ai des assiettes que je peux conditionner par 15, 25, 40. Dans une
rubrique texte, on met alors
25/15/40 pour dire que 25 sera la quantité par défaut et les autres des
alternatives.
On peut bien évidemment mélanger plusieurs emballages...
Quels quantités sont valides ?
10 non... ne correspond à aucun conditionnement
15 oui facile
20 non, 1 x 15 puis ???
30 oui, 2 x 15
45 oui, 3 x 15
48 non
50 oui, 2 x 25
55 oui, 2 x 15 + 1 x 25
60 oui, 4 x 15
65, oui 1 x 40 + 1 x 25 ou 2 x 25 + 1 x 15
69, non
... Et ainsi de suite
Comment feriez vous une fonction qui me renverrait Vrai/Faux en lui
2 paramètres : "Quantité" (60) et "chaine de conditionnement" (25/15/40)
Des remerciements en pagaille au premier qui trouve la sympathique
B. Nève
nospam-bne@dagico.com
Bonsoir à tous,
Petit casse-tête entre amis...
Je voudrais dans une appli obliger de choisir une quantité qui doit être
combinaison d'emballages possibles.
Comme chacun sait qu'un bon exemple vaut tous les discours...
J'ai des assiettes que je peux conditionner par 15, 25, 40. Dans une
rubrique texte, on met alors
25/15/40 pour dire que 25 sera la quantité par défaut et les autres des
alternatives.
On peut bien évidemment mélanger plusieurs emballages...
Quels quantités sont valides ?
10 non... ne correspond à aucun conditionnement
15 oui facile
20 non, 1 x 15 puis ???
30 oui, 2 x 15
45 oui, 3 x 15
48 non
50 oui, 2 x 25
55 oui, 2 x 15 + 1 x 25
60 oui, 4 x 15
65, oui 1 x 40 + 1 x 25 ou 2 x 25 + 1 x 15
69, non
... Et ainsi de suite
Comment feriez vous une fonction qui me renverrait Vrai/Faux en lui
2 paramètres : "Quantité" (60) et "chaine de conditionnement" (25/15/40)
Des remerciements en pagaille au premier qui trouve la sympathique
B. Nève
si tu rajoute dans l'appel a la procedure /5 pour prendre les colis de 5
sinon ca fonctionne pas tu obtient : OK avec 119 x 40 / 1 x 5
ca fonctionne
faites des test avec la deuxieme celle qui donne le resultat et la chaine
retour
pour voir le dispatch
"Roumegou" a écrit dans le message de news:
bpcnig$dtv$
> Impressionnant mais comme je ne comprenais pas comment cela marchait
> vraiment, j'ai testé ta proc
>
> > PROCEDURE TestEmballage(emballage est une chaîne, quantite est une
> > chaîne)
> >
> > i = 1
> > TANTQUE i <= Dimension(emb)
> > SI rest = emb[i] ALORS
>
> ici je crois que ce serait plutôt SI rest>=emb[i] ALORS ????
>
>
> > rest = rest - emb[i]
> > i=1
> > FIN
>
> Mais en faisant des tests, Prenons la valeur 4780 qui est renvoyée
> innéligible par ta proc.
> C'est vrai que PartieEntiere(4780/25)= 191 soit 4475 et donc reste 5 et
> le fait plus.
> Pourtant 4780=(5 * 190) + (15 * 2)
>
>
>
> Moralité : la bête n'est pas morte ;-)
> Eric
>
>
si tu rajoute dans l'appel a la procedure /5 pour prendre les colis de 5
sinon ca fonctionne pas tu obtient : OK avec 119 x 40 / 1 x 5
ca fonctionne
faites des test avec la deuxieme celle qui donne le resultat et la chaine
retour
pour voir le dispatch
"Roumegou" <roumegou@wanadoo.fr> a écrit dans le message de news:
bpcnig$dtv$1@news-reader2.wanadoo.fr...
> Impressionnant mais comme je ne comprenais pas comment cela marchait
> vraiment, j'ai testé ta proc
>
> > PROCEDURE TestEmballage(emballage est une chaîne, quantite est une
> > chaîne)
> >
> > i = 1
> > TANTQUE i <= Dimension(emb)
> > SI rest = emb[i] ALORS
>
> ici je crois que ce serait plutôt SI rest>=emb[i] ALORS ????
>
>
> > rest = rest - emb[i]
> > i=1
> > FIN
>
> Mais en faisant des tests, Prenons la valeur 4780 qui est renvoyée
> innéligible par ta proc.
> C'est vrai que PartieEntiere(4780/25)= 191 soit 4475 et donc reste 5 et
> le fait plus.
> Pourtant 4780=(5 * 190) + (15 * 2)
>
>
>
> Moralité : la bête n'est pas morte ;-)
> Eric
>
>
si tu rajoute dans l'appel a la procedure /5 pour prendre les colis de 5
sinon ca fonctionne pas tu obtient : OK avec 119 x 40 / 1 x 5
ca fonctionne
faites des test avec la deuxieme celle qui donne le resultat et la chaine
retour
pour voir le dispatch
"Roumegou" a écrit dans le message de news:
bpcnig$dtv$
> Impressionnant mais comme je ne comprenais pas comment cela marchait
> vraiment, j'ai testé ta proc
>
> > PROCEDURE TestEmballage(emballage est une chaîne, quantite est une
> > chaîne)
> >
> > i = 1
> > TANTQUE i <= Dimension(emb)
> > SI rest = emb[i] ALORS
>
> ici je crois que ce serait plutôt SI rest>=emb[i] ALORS ????
>
>
> > rest = rest - emb[i]
> > i=1
> > FIN
>
> Mais en faisant des tests, Prenons la valeur 4780 qui est renvoyée
> innéligible par ta proc.
> C'est vrai que PartieEntiere(4780/25)= 191 soit 4475 et donc reste 5 et
> le fait plus.
> Pourtant 4780=(5 * 190) + (15 * 2)
>
>
>
> Moralité : la bête n'est pas morte ;-)
> Eric
>
>
Salut !
Salut Benoit !
Ton problème m'a interpellé ce matin ...
Voici une solution qui semble marcher ...
PROCEDURE QuantitéValide(nQty=0,cCond="")
LOCAL
nCond est un entier
tnCond est un tableau de 0 entiers
nLoop est un entier
nResteAlivrer est un entier
nCondMax, nCondMin sont des entiers
nCondStandard est un entier
SI nQty = 0 ALORS
Erreur("Quantitévalide a été invoqué sans quantité à livrer !")
FIN
SI SansEspace(cCond) = "" ALORS
Erreur("Quantitévalide a été invoqué sans conditionnement !")
FIN
nCondMax = 0
nCondMin = 999999999
nCond = ChaîneOccurrence(cCond+"/","/")
POUR nLoop = 1 A nCond
Dimension(tnCond,nLoop)
tnCond[nLoop] = Val(ExtraitChaîne(cCond,nLoop,"/"))
SI nLoop = 1 ALORS
nCondStandard = tnCond[nLoop]
FIN
nCondMin = Min(nCondMin,tnCond[nLoop])
nCondMax = Max(nCondMax,tnCond[nLoop])
SI nQty = tnCond[nLoop] ALORS RENVOYER Vrai
FIN
SI nQty < nCondMin ALORS
// Pas besoin de tester
RENVOYER Faux
SINON
nResteAlivrer = nQty
BOUCLE
// Ici on privilégie les plus grands conditionnements
// Si on veut privilégier les conditionnements standards
// Il suffit d'inverser les conditions ...
SI nResteAlivrer >= nCondMax ALORS
nResteAlivrer = modulo(nResteAlivrer,nCondMax)
SINON
SI nResteAlivrer >= nCondStandard ALORS
nResteAlivrer = modulo(nResteAlivrer,nCondStandard)
SINON
SI nResteAlivrer < nCondMin ALORS
SORTIR
SINON
POUR nLoop = 1 A nCond
SELON tnCond[nLoop]
CAS nCondMax,nCondStandard
// On a déjà testé
AUTRE CAS
nResteAlivrer = modulo(nResteAlivrer,tnCond[nLoop])
FIN
FIN
FIN
FIN
FIN
FIN
FIN
SI nResteAlivrer = 0 ALORS
RENVOYER Vrai
SINON
RENVOYER Faux
FIN
Bien à toi !
Salut !
Salut Benoit !
Ton problème m'a interpellé ce matin ...
Voici une solution qui semble marcher ...
PROCEDURE QuantitéValide(nQty=0,cCond="")
LOCAL
nCond est un entier
tnCond est un tableau de 0 entiers
nLoop est un entier
nResteAlivrer est un entier
nCondMax, nCondMin sont des entiers
nCondStandard est un entier
SI nQty = 0 ALORS
Erreur("Quantitévalide a été invoqué sans quantité à livrer !")
FIN
SI SansEspace(cCond) = "" ALORS
Erreur("Quantitévalide a été invoqué sans conditionnement !")
FIN
nCondMax = 0
nCondMin = 999999999
nCond = ChaîneOccurrence(cCond+"/","/")
POUR nLoop = 1 A nCond
Dimension(tnCond,nLoop)
tnCond[nLoop] = Val(ExtraitChaîne(cCond,nLoop,"/"))
SI nLoop = 1 ALORS
nCondStandard = tnCond[nLoop]
FIN
nCondMin = Min(nCondMin,tnCond[nLoop])
nCondMax = Max(nCondMax,tnCond[nLoop])
SI nQty = tnCond[nLoop] ALORS RENVOYER Vrai
FIN
SI nQty < nCondMin ALORS
// Pas besoin de tester
RENVOYER Faux
SINON
nResteAlivrer = nQty
BOUCLE
// Ici on privilégie les plus grands conditionnements
// Si on veut privilégier les conditionnements standards
// Il suffit d'inverser les conditions ...
SI nResteAlivrer >= nCondMax ALORS
nResteAlivrer = modulo(nResteAlivrer,nCondMax)
SINON
SI nResteAlivrer >= nCondStandard ALORS
nResteAlivrer = modulo(nResteAlivrer,nCondStandard)
SINON
SI nResteAlivrer < nCondMin ALORS
SORTIR
SINON
POUR nLoop = 1 A nCond
SELON tnCond[nLoop]
CAS nCondMax,nCondStandard
// On a déjà testé
AUTRE CAS
nResteAlivrer = modulo(nResteAlivrer,tnCond[nLoop])
FIN
FIN
FIN
FIN
FIN
FIN
FIN
SI nResteAlivrer = 0 ALORS
RENVOYER Vrai
SINON
RENVOYER Faux
FIN
Bien à toi !
Salut !
Salut Benoit !
Ton problème m'a interpellé ce matin ...
Voici une solution qui semble marcher ...
PROCEDURE QuantitéValide(nQty=0,cCond="")
LOCAL
nCond est un entier
tnCond est un tableau de 0 entiers
nLoop est un entier
nResteAlivrer est un entier
nCondMax, nCondMin sont des entiers
nCondStandard est un entier
SI nQty = 0 ALORS
Erreur("Quantitévalide a été invoqué sans quantité à livrer !")
FIN
SI SansEspace(cCond) = "" ALORS
Erreur("Quantitévalide a été invoqué sans conditionnement !")
FIN
nCondMax = 0
nCondMin = 999999999
nCond = ChaîneOccurrence(cCond+"/","/")
POUR nLoop = 1 A nCond
Dimension(tnCond,nLoop)
tnCond[nLoop] = Val(ExtraitChaîne(cCond,nLoop,"/"))
SI nLoop = 1 ALORS
nCondStandard = tnCond[nLoop]
FIN
nCondMin = Min(nCondMin,tnCond[nLoop])
nCondMax = Max(nCondMax,tnCond[nLoop])
SI nQty = tnCond[nLoop] ALORS RENVOYER Vrai
FIN
SI nQty < nCondMin ALORS
// Pas besoin de tester
RENVOYER Faux
SINON
nResteAlivrer = nQty
BOUCLE
// Ici on privilégie les plus grands conditionnements
// Si on veut privilégier les conditionnements standards
// Il suffit d'inverser les conditions ...
SI nResteAlivrer >= nCondMax ALORS
nResteAlivrer = modulo(nResteAlivrer,nCondMax)
SINON
SI nResteAlivrer >= nCondStandard ALORS
nResteAlivrer = modulo(nResteAlivrer,nCondStandard)
SINON
SI nResteAlivrer < nCondMin ALORS
SORTIR
SINON
POUR nLoop = 1 A nCond
SELON tnCond[nLoop]
CAS nCondMax,nCondStandard
// On a déjà testé
AUTRE CAS
nResteAlivrer = modulo(nResteAlivrer,tnCond[nLoop])
FIN
FIN
FIN
FIN
FIN
FIN
FIN
SI nResteAlivrer = 0 ALORS
RENVOYER Vrai
SINON
RENVOYER Faux
FIN
Bien à toi !
Ouais il interpelle tout le monde et il nous provoque ;-)
Si cela se trouve il est mort de rire à nous voir nous démener rofl
Désolé Marcel mais avec le test à 4780, cela ne fn pas (ni avec 80 et 45
d'ailleurs)
Bon moi j'arrête de me casser la tête.
Eric
wrote:
> Salut !
>
> Salut Benoit !
> Ton problème m'a interpellé ce matin ...
> Voici une solution qui semble marcher ...
>
> PROCEDURE QuantitéValide(nQty=0,cCond="")
> LOCAL
> nCond est un entier
> tnCond est un tableau de 0 entiers
> nLoop est un entier
>
> nResteAlivrer est un entier
> nCondMax, nCondMin sont des entiers
> nCondStandard est un entier
>
>
> SI nQty = 0 ALORS
> Erreur("Quantitévalide a été invoqué sans quantité à livrer !")
> FIN
> SI SansEspace(cCond) = "" ALORS
> Erreur("Quantitévalide a été invoqué sans conditionnement !")
> FIN
> nCondMax = 0
> nCondMin = 999999999
> nCond = ChaîneOccurrence(cCond+"/","/")
> POUR nLoop = 1 A nCond
> Dimension(tnCond,nLoop)
> tnCond[nLoop] = Val(ExtraitChaîne(cCond,nLoop,"/"))
> SI nLoop = 1 ALORS
> nCondStandard = tnCond[nLoop]
> FIN
> nCondMin = Min(nCondMin,tnCond[nLoop])
> nCondMax = Max(nCondMax,tnCond[nLoop])
> SI nQty = tnCond[nLoop] ALORS RENVOYER Vrai
> FIN
> SI nQty < nCondMin ALORS
> // Pas besoin de tester
> RENVOYER Faux
> SINON
> nResteAlivrer = nQty
> BOUCLE
> // Ici on privilégie les plus grands conditionnements
> // Si on veut privilégier les conditionnements standards
> // Il suffit d'inverser les conditions ...
> SI nResteAlivrer >= nCondMax ALORS
> nResteAlivrer = modulo(nResteAlivrer,nCondMax)
> SINON
> SI nResteAlivrer >= nCondStandard ALORS
> nResteAlivrer = modulo(nResteAlivrer,nCondStandard)
> SINON
> SI nResteAlivrer < nCondMin ALORS
> SORTIR
> SINON
> POUR nLoop = 1 A nCond
> SELON tnCond[nLoop]
> CAS nCondMax,nCondStandard
> // On a déjà testé
> AUTRE CAS
> nResteAlivrer = modulo(nResteAlivrer,tnCond[nLoop])
> FIN
> FIN
> FIN
> FIN
> FIN
> FIN
> FIN
> SI nResteAlivrer = 0 ALORS
> RENVOYER Vrai
> SINON
> RENVOYER Faux
> FIN
>
> Bien à toi !
--
Eric Roumegou
Ouais il interpelle tout le monde et il nous provoque ;-)
Si cela se trouve il est mort de rire à nous voir nous démener rofl
Désolé Marcel mais avec le test à 4780, cela ne fn pas (ni avec 80 et 45
d'ailleurs)
Bon moi j'arrête de me casser la tête.
Eric
Marcel.berman@managingbusiness.be wrote:
> Salut !
>
> Salut Benoit !
> Ton problème m'a interpellé ce matin ...
> Voici une solution qui semble marcher ...
>
> PROCEDURE QuantitéValide(nQty=0,cCond="")
> LOCAL
> nCond est un entier
> tnCond est un tableau de 0 entiers
> nLoop est un entier
>
> nResteAlivrer est un entier
> nCondMax, nCondMin sont des entiers
> nCondStandard est un entier
>
>
> SI nQty = 0 ALORS
> Erreur("Quantitévalide a été invoqué sans quantité à livrer !")
> FIN
> SI SansEspace(cCond) = "" ALORS
> Erreur("Quantitévalide a été invoqué sans conditionnement !")
> FIN
> nCondMax = 0
> nCondMin = 999999999
> nCond = ChaîneOccurrence(cCond+"/","/")
> POUR nLoop = 1 A nCond
> Dimension(tnCond,nLoop)
> tnCond[nLoop] = Val(ExtraitChaîne(cCond,nLoop,"/"))
> SI nLoop = 1 ALORS
> nCondStandard = tnCond[nLoop]
> FIN
> nCondMin = Min(nCondMin,tnCond[nLoop])
> nCondMax = Max(nCondMax,tnCond[nLoop])
> SI nQty = tnCond[nLoop] ALORS RENVOYER Vrai
> FIN
> SI nQty < nCondMin ALORS
> // Pas besoin de tester
> RENVOYER Faux
> SINON
> nResteAlivrer = nQty
> BOUCLE
> // Ici on privilégie les plus grands conditionnements
> // Si on veut privilégier les conditionnements standards
> // Il suffit d'inverser les conditions ...
> SI nResteAlivrer >= nCondMax ALORS
> nResteAlivrer = modulo(nResteAlivrer,nCondMax)
> SINON
> SI nResteAlivrer >= nCondStandard ALORS
> nResteAlivrer = modulo(nResteAlivrer,nCondStandard)
> SINON
> SI nResteAlivrer < nCondMin ALORS
> SORTIR
> SINON
> POUR nLoop = 1 A nCond
> SELON tnCond[nLoop]
> CAS nCondMax,nCondStandard
> // On a déjà testé
> AUTRE CAS
> nResteAlivrer = modulo(nResteAlivrer,tnCond[nLoop])
> FIN
> FIN
> FIN
> FIN
> FIN
> FIN
> FIN
> SI nResteAlivrer = 0 ALORS
> RENVOYER Vrai
> SINON
> RENVOYER Faux
> FIN
>
> Bien à toi !
--
Eric Roumegou
Ouais il interpelle tout le monde et il nous provoque ;-)
Si cela se trouve il est mort de rire à nous voir nous démener rofl
Désolé Marcel mais avec le test à 4780, cela ne fn pas (ni avec 80 et 45
d'ailleurs)
Bon moi j'arrête de me casser la tête.
Eric
wrote:
> Salut !
>
> Salut Benoit !
> Ton problème m'a interpellé ce matin ...
> Voici une solution qui semble marcher ...
>
> PROCEDURE QuantitéValide(nQty=0,cCond="")
> LOCAL
> nCond est un entier
> tnCond est un tableau de 0 entiers
> nLoop est un entier
>
> nResteAlivrer est un entier
> nCondMax, nCondMin sont des entiers
> nCondStandard est un entier
>
>
> SI nQty = 0 ALORS
> Erreur("Quantitévalide a été invoqué sans quantité à livrer !")
> FIN
> SI SansEspace(cCond) = "" ALORS
> Erreur("Quantitévalide a été invoqué sans conditionnement !")
> FIN
> nCondMax = 0
> nCondMin = 999999999
> nCond = ChaîneOccurrence(cCond+"/","/")
> POUR nLoop = 1 A nCond
> Dimension(tnCond,nLoop)
> tnCond[nLoop] = Val(ExtraitChaîne(cCond,nLoop,"/"))
> SI nLoop = 1 ALORS
> nCondStandard = tnCond[nLoop]
> FIN
> nCondMin = Min(nCondMin,tnCond[nLoop])
> nCondMax = Max(nCondMax,tnCond[nLoop])
> SI nQty = tnCond[nLoop] ALORS RENVOYER Vrai
> FIN
> SI nQty < nCondMin ALORS
> // Pas besoin de tester
> RENVOYER Faux
> SINON
> nResteAlivrer = nQty
> BOUCLE
> // Ici on privilégie les plus grands conditionnements
> // Si on veut privilégier les conditionnements standards
> // Il suffit d'inverser les conditions ...
> SI nResteAlivrer >= nCondMax ALORS
> nResteAlivrer = modulo(nResteAlivrer,nCondMax)
> SINON
> SI nResteAlivrer >= nCondStandard ALORS
> nResteAlivrer = modulo(nResteAlivrer,nCondStandard)
> SINON
> SI nResteAlivrer < nCondMin ALORS
> SORTIR
> SINON
> POUR nLoop = 1 A nCond
> SELON tnCond[nLoop]
> CAS nCondMax,nCondStandard
> // On a déjà testé
> AUTRE CAS
> nResteAlivrer = modulo(nResteAlivrer,tnCond[nLoop])
> FIN
> FIN
> FIN
> FIN
> FIN
> FIN
> FIN
> SI nResteAlivrer = 0 ALORS
> RENVOYER Vrai
> SINON
> RENVOYER Faux
> FIN
>
> Bien à toi !
--
Eric Roumegou
pour 4780
si tu appelle la procedure acec :
"40/25/15" -------------> pas possible (en fait reste 5)
"40/25/15/5" -------------> 119 x 40 / 1 x 5
"25/40/15/5" -------------> 191 x 25 / 1 x 5
voila l'importance des paquets est respecter par leur ordre dans la
chaine
pour 4780
si tu appelle la procedure acec :
"40/25/15" -------------> pas possible (en fait reste 5)
"40/25/15/5" -------------> 119 x 40 / 1 x 5
"25/40/15/5" -------------> 191 x 25 / 1 x 5
voila l'importance des paquets est respecter par leur ordre dans la
chaine
pour 4780
si tu appelle la procedure acec :
"40/25/15" -------------> pas possible (en fait reste 5)
"40/25/15/5" -------------> 119 x 40 / 1 x 5
"25/40/15/5" -------------> 191 x 25 / 1 x 5
voila l'importance des paquets est respecter par leur ordre dans la
chaine
Bonsoir à tous,
Petit casse-tête entre amis...
Je voudrais dans une appli obliger de choisir une quantité qui doit
être une combinaison d'emballages possibles.
Comme chacun sait qu'un bon exemple vaut tous les discours...
J'ai des assiettes que je peux conditionner par 15, 25, 40. Dans une
rubrique texte, on met alors
25/15/40 pour dire que 25 sera la quantité par défaut et les autres
des alternatives.
On peut bien évidemment mélanger plusieurs emballages...
Quels quantités sont valides ?
10 non... ne correspond à aucun conditionnement
15 oui facile
20 non, 1 x 15 puis ???
30 oui, 2 x 15
45 oui, 3 x 15
48 non
50 oui, 2 x 25
55 oui, 2 x 15 + 1 x 25
60 oui, 4 x 15
65, oui 1 x 40 + 1 x 25 ou 2 x 25 + 1 x 15
69, non
... Et ainsi de suite
Comment feriez vous une fonction qui me renverrait Vrai/Faux en lui
envoyant 2 paramètres : "Quantité" (60) et "chaine de
conditionnement" (25/15/40)
Des remerciements en pagaille au premier qui trouve la sympathique
fonction.
B. Nève
Bonsoir à tous,
Petit casse-tête entre amis...
Je voudrais dans une appli obliger de choisir une quantité qui doit
être une combinaison d'emballages possibles.
Comme chacun sait qu'un bon exemple vaut tous les discours...
J'ai des assiettes que je peux conditionner par 15, 25, 40. Dans une
rubrique texte, on met alors
25/15/40 pour dire que 25 sera la quantité par défaut et les autres
des alternatives.
On peut bien évidemment mélanger plusieurs emballages...
Quels quantités sont valides ?
10 non... ne correspond à aucun conditionnement
15 oui facile
20 non, 1 x 15 puis ???
30 oui, 2 x 15
45 oui, 3 x 15
48 non
50 oui, 2 x 25
55 oui, 2 x 15 + 1 x 25
60 oui, 4 x 15
65, oui 1 x 40 + 1 x 25 ou 2 x 25 + 1 x 15
69, non
... Et ainsi de suite
Comment feriez vous une fonction qui me renverrait Vrai/Faux en lui
envoyant 2 paramètres : "Quantité" (60) et "chaine de
conditionnement" (25/15/40)
Des remerciements en pagaille au premier qui trouve la sympathique
fonction.
B. Nève
nospam-bne@dagico.com
Bonsoir à tous,
Petit casse-tête entre amis...
Je voudrais dans une appli obliger de choisir une quantité qui doit
être une combinaison d'emballages possibles.
Comme chacun sait qu'un bon exemple vaut tous les discours...
J'ai des assiettes que je peux conditionner par 15, 25, 40. Dans une
rubrique texte, on met alors
25/15/40 pour dire que 25 sera la quantité par défaut et les autres
des alternatives.
On peut bien évidemment mélanger plusieurs emballages...
Quels quantités sont valides ?
10 non... ne correspond à aucun conditionnement
15 oui facile
20 non, 1 x 15 puis ???
30 oui, 2 x 15
45 oui, 3 x 15
48 non
50 oui, 2 x 25
55 oui, 2 x 15 + 1 x 25
60 oui, 4 x 15
65, oui 1 x 40 + 1 x 25 ou 2 x 25 + 1 x 15
69, non
... Et ainsi de suite
Comment feriez vous une fonction qui me renverrait Vrai/Faux en lui
envoyant 2 paramètres : "Quantité" (60) et "chaine de
conditionnement" (25/15/40)
Des remerciements en pagaille au premier qui trouve la sympathique
fonction.
B. Nève
essaye avec ca :
essaye avec ca :
essaye avec ca :
Petit problème sympa mais somme toute assez facile à résoudre.
Voici ma solution.
QuantiteTotale est un entier //A livrer
Cond40 est un entier //Conditionnement par 40
Cond20 est un entier //Conditionnement par 20
Cond15 est un entier //Conditionnement par 15
Reste1 est un entier
Reste2 est un entier
Reste3 est un entier
QuantiteTotaleG80
Cond40= PartieEntière(QuantiteTotale/40)
Reste1= modulo(QuantiteTotale,40)
SI modulo(Reste1,20)>0 ALORS
SI modulo(Reste1,15)>0 ALORS
Erreur("Erreur de conditionnement","Vous devez compléter votre
commande d'au moins "+ (15-Reste1)+" produits")
RETOUR
FIN
FIN
Cond20= PartieEntière(Reste1/20)
Reste2=modulo(Cond20,20)
Cond15= PartieEntière(Reste2/15)
Reste3=modulo(Cond15,15)
SI Reste3>0 ALORS
Erreur("Erreur de conditionnement","Vous devez compléter votre
commande d'au moins "+ Reste3+" produits")
SINON
Info("Votre commande sera conditionné avec "+RC+...
Cond40+" cartons de 40"+RC+...
Cond20+" cartons de 20"+RC+...
Cond15+" cartons de 15")
FIN
-----------------------------------------------------
Eric LAURENT.
B. Neve wrote:Bonsoir à tous,
Petit casse-tête entre amis...
Je voudrais dans une appli obliger de choisir une quantité qui doit
être une combinaison d'emballages possibles.
Comme chacun sait qu'un bon exemple vaut tous les discours...
J'ai des assiettes que je peux conditionner par 15, 25, 40. Dans une
rubrique texte, on met alors
25/15/40 pour dire que 25 sera la quantité par défaut et les autres
des alternatives.
On peut bien évidemment mélanger plusieurs emballages...
Quels quantités sont valides ?
10 non... ne correspond à aucun conditionnement
15 oui facile
20 non, 1 x 15 puis ???
30 oui, 2 x 15
45 oui, 3 x 15
48 non
50 oui, 2 x 25
55 oui, 2 x 15 + 1 x 25
60 oui, 4 x 15
65, oui 1 x 40 + 1 x 25 ou 2 x 25 + 1 x 15
69, non
... Et ainsi de suite
Comment feriez vous une fonction qui me renverrait Vrai/Faux en lui
envoyant 2 paramètres : "Quantité" (60) et "chaine de
conditionnement" (25/15/40)
Des remerciements en pagaille au premier qui trouve la sympathique
fonction.
B. Nève
Petit problème sympa mais somme toute assez facile à résoudre.
Voici ma solution.
QuantiteTotale est un entier //A livrer
Cond40 est un entier //Conditionnement par 40
Cond20 est un entier //Conditionnement par 20
Cond15 est un entier //Conditionnement par 15
Reste1 est un entier
Reste2 est un entier
Reste3 est un entier
QuantiteTotaleG80
Cond40= PartieEntière(QuantiteTotale/40)
Reste1= modulo(QuantiteTotale,40)
SI modulo(Reste1,20)>0 ALORS
SI modulo(Reste1,15)>0 ALORS
Erreur("Erreur de conditionnement","Vous devez compléter votre
commande d'au moins "+ (15-Reste1)+" produits")
RETOUR
FIN
FIN
Cond20= PartieEntière(Reste1/20)
Reste2=modulo(Cond20,20)
Cond15= PartieEntière(Reste2/15)
Reste3=modulo(Cond15,15)
SI Reste3>0 ALORS
Erreur("Erreur de conditionnement","Vous devez compléter votre
commande d'au moins "+ Reste3+" produits")
SINON
Info("Votre commande sera conditionné avec "+RC+...
Cond40+" cartons de 40"+RC+...
Cond20+" cartons de 20"+RC+...
Cond15+" cartons de 15")
FIN
-----------------------------------------------------
Eric LAURENT.
B. Neve wrote:
Bonsoir à tous,
Petit casse-tête entre amis...
Je voudrais dans une appli obliger de choisir une quantité qui doit
être une combinaison d'emballages possibles.
Comme chacun sait qu'un bon exemple vaut tous les discours...
J'ai des assiettes que je peux conditionner par 15, 25, 40. Dans une
rubrique texte, on met alors
25/15/40 pour dire que 25 sera la quantité par défaut et les autres
des alternatives.
On peut bien évidemment mélanger plusieurs emballages...
Quels quantités sont valides ?
10 non... ne correspond à aucun conditionnement
15 oui facile
20 non, 1 x 15 puis ???
30 oui, 2 x 15
45 oui, 3 x 15
48 non
50 oui, 2 x 25
55 oui, 2 x 15 + 1 x 25
60 oui, 4 x 15
65, oui 1 x 40 + 1 x 25 ou 2 x 25 + 1 x 15
69, non
... Et ainsi de suite
Comment feriez vous une fonction qui me renverrait Vrai/Faux en lui
envoyant 2 paramètres : "Quantité" (60) et "chaine de
conditionnement" (25/15/40)
Des remerciements en pagaille au premier qui trouve la sympathique
fonction.
B. Nève
nospam-bne@dagico.com
Petit problème sympa mais somme toute assez facile à résoudre.
Voici ma solution.
QuantiteTotale est un entier //A livrer
Cond40 est un entier //Conditionnement par 40
Cond20 est un entier //Conditionnement par 20
Cond15 est un entier //Conditionnement par 15
Reste1 est un entier
Reste2 est un entier
Reste3 est un entier
QuantiteTotaleG80
Cond40= PartieEntière(QuantiteTotale/40)
Reste1= modulo(QuantiteTotale,40)
SI modulo(Reste1,20)>0 ALORS
SI modulo(Reste1,15)>0 ALORS
Erreur("Erreur de conditionnement","Vous devez compléter votre
commande d'au moins "+ (15-Reste1)+" produits")
RETOUR
FIN
FIN
Cond20= PartieEntière(Reste1/20)
Reste2=modulo(Cond20,20)
Cond15= PartieEntière(Reste2/15)
Reste3=modulo(Cond15,15)
SI Reste3>0 ALORS
Erreur("Erreur de conditionnement","Vous devez compléter votre
commande d'au moins "+ Reste3+" produits")
SINON
Info("Votre commande sera conditionné avec "+RC+...
Cond40+" cartons de 40"+RC+...
Cond20+" cartons de 20"+RC+...
Cond15+" cartons de 15")
FIN
-----------------------------------------------------
Eric LAURENT.
B. Neve wrote:Bonsoir à tous,
Petit casse-tête entre amis...
Je voudrais dans une appli obliger de choisir une quantité qui doit
être une combinaison d'emballages possibles.
Comme chacun sait qu'un bon exemple vaut tous les discours...
J'ai des assiettes que je peux conditionner par 15, 25, 40. Dans une
rubrique texte, on met alors
25/15/40 pour dire que 25 sera la quantité par défaut et les autres
des alternatives.
On peut bien évidemment mélanger plusieurs emballages...
Quels quantités sont valides ?
10 non... ne correspond à aucun conditionnement
15 oui facile
20 non, 1 x 15 puis ???
30 oui, 2 x 15
45 oui, 3 x 15
48 non
50 oui, 2 x 25
55 oui, 2 x 15 + 1 x 25
60 oui, 4 x 15
65, oui 1 x 40 + 1 x 25 ou 2 x 25 + 1 x 15
69, non
... Et ainsi de suite
Comment feriez vous une fonction qui me renverrait Vrai/Faux en lui
envoyant 2 paramètres : "Quantité" (60) et "chaine de
conditionnement" (25/15/40)
Des remerciements en pagaille au premier qui trouve la sympathique
fonction.
B. Nève
Firetox wrote:
> essaye avec ca :
>
Ca marchera pas ...
Le test qui tue c'est 4780 (par ex)
Firetox wrote:
> essaye avec ca :
>
Ca marchera pas ...
Le test qui tue c'est 4780 (par ex)
Firetox wrote:
> essaye avec ca :
>
Ca marchera pas ...
Le test qui tue c'est 4780 (par ex)