Amélioration sur combinaison aléatoires

Bonjour à tous,

Je suis en train de travailler sur une génération de combinaison aléatoires dans une feuille excel, et je me base sur quelque chose que j'ai trouvé sur ce très bon forum : l'application qui génère des histoires aléatoirement.

J'utilise donc ce bout de code (j'ai 12 colonnes, formule en O1 dans mon fichier joint) : =INDIRECT("a"&ALEA.ENTRE.BORNES(1;NBVAL(A1:A3)))&", "&INDIRECT("b"&ALEA.ENTRE.BORNES(1;NBVAL(A1:A3)))&" "&INDIRECT("c"&ALEA.ENTRE.BORNES(1;NBVAL(A1:A1025)))&" "&INDIRECT("d"&ALEA.ENTRE.BORNES(1;NBVAL(A1:A3)))&" "&INDIRECT("e"&ALEA.ENTRE.BORNES(1;NBVAL(A1:A3)))&" "&INDIRECT("f"&ALEA.ENTRE.BORNES(1;NBVAL(A1:A3)))&" "&INDIRECT("g"&ALEA.ENTRE.BORNES(1;NBVAL(A1:A3)))&" "&INDIRECT("h"&ALEA.ENTRE.BORNES(1;NBVAL(A1:A3)))&" "&INDIRECT("i"&ALEA.ENTRE.BORNES(1;NBVAL(A1:A3)))&" "&INDIRECT("j"&ALEA.ENTRE.BORNES(1;NBVAL(A1:A3)))&" "&INDIRECT("k"&ALEA.ENTRE.BORNES(1;NBVAL(A1:A3)))&" "&INDIRECT("l"&ALEA.ENTRE.BORNES(1;NBVAL(A1:A3)))

Cela fonctionne bien, mais :

  • mes colonnes ne contiennent pas toutes le même nombre de lignes, donc la formule me retourne parfois des phrases où il manque des mots (il prend une cellule vide). Auriez-vous une idée pour que ça prenne en compte le nombre de ligne de chaque colonne, sachant que ce nombre est variable
  • j'aimerai pouvoir choisir le nombre de combinaison à éditer. Par exemple, une case où j'entre un chiffre X et une macro qui me génère les X combinaisons avec la formule ci-dessus.

Si quelqu'un a une idée pour m'aider un peu, je vous serai reconnaissant

Merci beaucoup

12exmel.xlsm (8.91 Ko)

Bonjour,

pas regardé mais tu as une partie de alea (le 3e) qui va de a1:a1025 ...

Normal ?

P.

un essai:

N1 contient le nombre de phrase à générer

Sub phrase()

For i = 1 To [N1].Value

Cells(2 + i, 15).FormulaLocal = _

"=INDIRECT(""a""&ALEA.ENTRE.BORNES(1;NBVAL(A1:A3)))& "" ,"" &INDIRECT(""b""&alea.entre.bornes(1;nbval(A1:A3)))& "" "" &INDIRECT(""c""&alea.entre.bornes(1;nbval(A1:A3)))& "" "" &INDIRECT(""d""&alea.entre.bornes(1;nbval(A1:A3)))& "" ""& INDIRECT(""e""&alea.entre.bornes(1;nbval(A1:A3)))&INDIRECT(""f""&alea.entre.bornes(1;nbval(A1:A3)))& "" ""&INDIRECT(""g""&alea.entre.bornes(1;nbval(A1:A3)))& "" "" &INDIRECT(""h""&alea.entre.bornes(1;nbval(A1:A3)))& "" "" &INDIRECT(""i""&alea.entre.bornes(1;nbval(A1:A3)))& "" "" &INDIRECT(""j""&alea.entre.bornes(1;nbval(A1:A3)))& "" ""&INDIRECT(""k""&alea.entre.bornes(1;nbval(A1:A3)))& "" "" &INDIRECT(""l""&alea.entre.bornes(1;nbval(A1:A3)))"

Next

End Sub

Merci pour ton aide

Le code fonctionne bien pour le nombre de phrase à ressortir, mais ne résout pas mon problème de case vide.

Par exemple, il prend parfois une cellule vide qu'il vient mettre dans la phrase (exemple colonne J où il n'y a qu'une seule possibilité, parfois il l'a prend, et d'autres fois il prend "vide")

J'ai modifié le code comme suit pour bien avoir toutes les valeurs :

Sub MELANGEUR()

For i = 1 To [N1].Value

Cells(2 + i, 15).FormulaLocal = _

"=INDIRECT(""a""&ALEA.ENTRE.BORNES(1;NBVAL(A1:A10)))& "" "" &INDIRECT(""b""&alea.entre.bornes(1;nbval(B1:B10)))& "" "" &INDIRECT(""c""&alea.entre.bornes(1;nbval(C1:C10)))& "" "" &INDIRECT(""d""&alea.entre.bornes(1;nbval(D1:D10)))& "" ""& INDIRECT(""e""&alea.entre.bornes(1;nbval(E1:E10)))& "" ""& INDIRECT(""f""&alea.entre.bornes(1;nbval(F1:F10)))& "" ""&INDIRECT(""g""&alea.entre.bornes(1;nbval(G1:G10)))& "" "" &INDIRECT(""h""&alea.entre.bornes(1;nbval(H1:H10)))& "" "" &INDIRECT(""i""&alea.entre.bornes(1;nbval(I1:I10)))& "" "" &INDIRECT(""j""&alea.entre.bornes(1;nbval(J1:J10)))& "" ""&INDIRECT(""k""&alea.entre.bornes(1;nbval(K1:K10)))& "" "" &INDIRECT(""l""&alea.entre.bornes(1;nbval(L1:L10)))"

Next

End Sub

Mais... il me faudra un "Alea entre bornes" qui ne prennent que les cellules non vides ?

Ca existe ?


JE crois que j'ai trouvé, il suffit de mettre $ avant les références de cellules...

Merci beaucoup @Patrick1957 pour ton aide

Rechercher des sujets similaires à "amelioration combinaison aleatoires"