XL 2016 Sujet excel formule choix aléatoire selon conditions

Samulo

XLDnaute Nouveau
Bonjour,

J'ai un sujet sur excel à traiter et il me faut une formule bien spécifique que je n'arrive pas à trouver, je t'explique :

Voici la base de travail déjà (exemple pour 1 produit) :

1610359097746.png



Je cherche une formule qui selon un nombre de produit insérer dans une cellule, cela sélectionne les machines pour lesquelles ce nombre est inférieure ou égal à la tournée (nombre de produit que peut contenir la cellule), et que après ça fasse un choix aléatoire entre ces machines.

Exemple : Je décide de produire 250 produits donc les machines "FESSMAN2, GERNAL1, BM1, BM2" sont concernés car leur tournée est égal à 312 et je veux que parmis ces 4 machines excel m'en choisissent une aléatoirement.

J'avais trouvé une formule permettant cela sauf que pour la formule que j'ai touvé il faut que la base de donnée reste fixe et inchangée or la base sera amené à être mofidifiée en ajoutant des nouveaux produit et ainsi changeant la position de certains dans la base donc il faut pas se référer à une cellule fixe. (Je ne sais pas si tu m'as compris.. ^^ )

Merci de votre aide !

Samulo
 

Pièces jointes

  • Exemple.xls
    17 KB · Affichages: 30
Dernière édition:

JJ68

XLDnaute Junior
Bonjour Samulo,

Cette formule semble convenir à ton cahier des charges

En D13 :

=INDEX(C:C;PETITE.VALEUR(SI($G$2:$G$9=MIN.SI.ENS(G:G;G:G;">="&$D$12);LIGNE($G$2:$G$9);"");ENT(ALEA()*NB.SI(G:G;MIN.SI.ENS(G:G;G:G;">="&$D$12)))+1))

valider en matriciel (ctrl + maj + entrée)
 

Pièces jointes

  • Exemple1.xls
    24.5 KB · Affichages: 7

Rouge

XLDnaute Impliqué
Bonjour,

Question, pourquoi un fichier "Xls" alors que vous êtes en excel 2016, donc "Xlsx"?

Voici avec quelques cellules qui contiennent des formules intermédiaires (sur fond bleu)

Cdlt
 

Pièces jointes

  • Samulo_Sujet excel formule choix aléatoire selon conditions.xlsx
    13.4 KB · Affichages: 8

Samulo

XLDnaute Nouveau
Bonjour,

Question, pourquoi un fichier "Xls" alors que vous êtes en excel 2016, donc "Xlsx"?

Voici avec quelques cellules qui contiennent des formules intermédiaires (sur fond bleu)

Cdlt

Je ne sais pas pourquoi xls..

Impeccable ! Merci beaucoup ! L'idéal pour moi serait de faire sans formules intermédiaires mais si pas le choix alors cette solution me va à merveille !
 

Samulo

XLDnaute Nouveau
Voir cette nouvelle version SANS min.si.ens

=INDEX(C:C;PETITE.VALEUR(SI(G:G=MIN(SI(G:G>=$D$12;G:G));LIGNE(G:G);"");ENT(ALEA()*NB.SI(G:G;MIN(SI(G:G>=$D$12;G:G))))+1))
Merci beaucoup ça fonctionne à merveille ! Cependant, c'est que pour un produit..

J'ai ajouter dans le fichier une feuille "base" et "charge" le but c'est dans la feuille charge quand une quantité est renseignée cela affiche la machine choisie comme ta formule le fait mais avec les données spécifiques de ce code produit qui sont dans la feuille "base"..
J'espère tu arrives à me suivre..
 

Pièces jointes

  • Copie de Exemple1-2.xlsx
    58.9 KB · Affichages: 6

JJ68

XLDnaute Junior
Tu m'as fait transpiré là, mais je crois que je l'ai...

=SI($C2>0;
INDEX(BASE!$C:$C;PETITE.VALEUR(SI(INDIRECT("BASE!G"&EQUIV(A2;BASE!A:A;0)&":G"&(EQUIV(A2;BASE!A:A;0)+NB.SI(BASE!A:A;A2)-1))=MIN(SI(INDIRECT("BASE!G"&EQUIV(A2;BASE!A:A;0)&":G"&(EQUIV(A2;BASE!A:A;0)+NB.SI(BASE!A:A;A2)-1))>=$C2;INDIRECT("BASE!G"&EQUIV(A2;BASE!A:A;0)&":G"&(EQUIV(A2;BASE!A:A;0)+NB.SI(BASE!A:A;A2)-1))));LIGNE(INDIRECT("BASE!G"&EQUIV(A2;BASE!A:A;0)&":G"&(EQUIV(A2;BASE!A:A;0)+NB.SI(BASE!A:A;A2)-1)));"");ENT(ALEA()*NB.SI(INDIRECT("BASE!G"&EQUIV(A2;BASE!A:A;0)&":G"&(EQUIV(A2;BASE!A:A;0)+NB.SI(BASE!A:A;A2)-1));MIN(SI(INDIRECT("BASE!G"&EQUIV(A2;BASE!A:A;0)&":G"&(EQUIV(A2;BASE!A:A;0)+NB.SI(BASE!A:A;A2)-1))>=$C2;INDIRECT("BASE!G"&EQUIV(A2;BASE!A:A;0)&":G"&(EQUIV(A2;BASE!A:A;0)+NB.SI(BASE!A:A;A2)-1));""))))+1));"")
 

Pièces jointes

  • Copie de Exemple1-2.xlsx
    57.9 KB · Affichages: 5

Samulo

XLDnaute Nouveau
Tu m'as fait transpiré là, mais je crois que je l'ai...

=SI($C2>0;
INDEX(BASE!$C:$C;PETITE.VALEUR(SI(INDIRECT("BASE!G"&EQUIV(A2;BASE!A:A;0)&":G"&(EQUIV(A2;BASE!A:A;0)+NB.SI(BASE!A:A;A2)-1))=MIN(SI(INDIRECT("BASE!G"&EQUIV(A2;BASE!A:A;0)&":G"&(EQUIV(A2;BASE!A:A;0)+NB.SI(BASE!A:A;A2)-1))>=$C2;INDIRECT("BASE!G"&EQUIV(A2;BASE!A:A;0)&":G"&(EQUIV(A2;BASE!A:A;0)+NB.SI(BASE!A:A;A2)-1))));LIGNE(INDIRECT("BASE!G"&EQUIV(A2;BASE!A:A;0)&":G"&(EQUIV(A2;BASE!A:A;0)+NB.SI(BASE!A:A;A2)-1)));"");ENT(ALEA()*NB.SI(INDIRECT("BASE!G"&EQUIV(A2;BASE!A:A;0)&":G"&(EQUIV(A2;BASE!A:A;0)+NB.SI(BASE!A:A;A2)-1));MIN(SI(INDIRECT("BASE!G"&EQUIV(A2;BASE!A:A;0)&":G"&(EQUIV(A2;BASE!A:A;0)+NB.SI(BASE!A:A;A2)-1))>=$C2;INDIRECT("BASE!G"&EQUIV(A2;BASE!A:A;0)&":G"&(EQUIV(A2;BASE!A:A;0)+NB.SI(BASE!A:A;A2)-1));""))))+1));"")

Merci, quel logique as-tu utilisée pour créer la formule ? Est-ce par rapport au nombre de machine par exemple ?

Cordialement,

Samuel
 

JJ68

XLDnaute Junior
J'ai gardé l'idée initiale mais fait en sorte de réduire le champs de recherche aux seules lignes du produit concerné, ce qui me fait en soit directement intégrer ce deuxième critère.
Pour ces longues formules, je travaille par portions "digestes" que je réassemble à la fin. Il faut par contre garder le format de ta liste, c'est à dire qu'un produit doit avoir toutes ses lignes qui se suivent.
 

Discussions similaires

Réponses
8
Affichages
420