Bonjour
J'ai du mal à saisir les subtilités d'une formule sous excel.
Je veux faire afficher dans 4 cases adjacentes sur une même ligne, 4 nombre aléatoires distincts compris entre 1 et 23.
Initialement, je connais la méthode ou l'on crée 23 colonnes, peuplées de ALEA() et on utilise la fonction RANG(A1; A1:A23) pour avoir le rang des elements A1 à A4 dans la ligne A1:A23. Ensuite on pouvait cacher les colonnes inutiles, et ne faire apparaître que ce qui compte.
Mais j'avais trouvé une autre méthode. directe. Plus légère.
Case A2 vide
Case B2 contient:
=PETITE.VALEUR(SI(NB.SI($A2:A2 ,LIGNE(INDIRECT("1:23")))=0,LI GNE(INDIRECT("1:23"))),ENT( ALEA()*(24-COLONNES($A2:B2)+1)+1))
Cliquez pour afficher
Je comprends que:
1/ ENT( ALEA()*(24-COLONNES($A2:B2)+1)+1) => génère un nombre aléatoire entre 1 et 24- qqchose
2/ NB.SI($A2:A2,LIGNE(INDIRECT("1 :23")))=0 retourne { composé de VRAI et de FAUX selon que les éléments de $A2:A2 soient dans la liste {1, 2, ... 23} ou pas
3/ SI(NB.SI($A2:B2,LIGNE(INDIRECT ("1:23")))=0,LIGNE(INDIRECT("1 :23"))) retourne une liste {nombres de 1, 2, ...23 , et FAUX }. Il s'agit de SI(range1, range2). Ceci n'est pas dans l'aide.
4/ Et qu'enfin PETITE.VALEUR fait ce qui lui est demandé.
Ceci marche sans problème. Et je peux vérifier avec le module d'évaluation de formule que le processus se passe correctement.
Mes 2 questions sont:
plus précisément, la formule s'évalue différemment:pourquoi si je remplace dans la formule précédente de B2 "ENT(...)" par un nombre > 1, le programme plante?
> à l'étape NB.SI($A2:B2,LIGNE(INDIRECT("1 :23"))) on obtient NB.SI($A2:B2,1)... du coup ca n'est plus une matrice!
=> PETITE.VALEUR rend une erreur "#NOMBRE!"
Ce code j'ai du le garder depuis qq années. Je ne sais plus d'ou je l'avais sorti. J'aimerai comprendre les subtilités de ces commandes. Et pourquoi ce changement. Je ne trouve pas de détails dans l'aide d'excel.pourquoi je laisse la colonne A vide?
En pièce jointe le mini ficher excel pour suivre pas à pas l'evaluation faite par excel, avec une ligne qui marche. Et la seconde ligne avec l'erreur que je veux comprendre. C'est sous Microsoft Excel 2010.
-----