XL 2016 Sujet excel formule choix aléatoire selon conditions

  • Initiateur de la discussion Initiateur de la discussion Samulo
  • Date de début Date de début

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

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

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

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

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

  • Question Question
Réponses
14
Affichages
517
Réponses
20
Affichages
660
  • Question Question
Microsoft 365 Publipostage avec Excel
Réponses
10
Affichages
442

Statistiques des forums

Discussions
315 285
Messages
2 118 027
Membres
113 414
dernier inscrit
AmadouK