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
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