Recalcul de nombres aléatoires différents

Le
Pouks
J'utilise la fonction alea() afin de générer une liste de nombres (Ex:
1-100). Est-ce que quelqu'un connait un moyen pour que la page de calcul me
retourne seulement des résultats différents ? J'avais pensé la jumeler à une
fonction si() et donner comme consigne un recalcul si 2 résultats sont
identiques, mais je doute qu'une commande puisse ordonner un recalcul

Toute aide sera grandement appréciée.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Philippe.R
Le #16413021
Bonjour,
La fonction si() ne provoquera effectivement pas le recalcul ; une piste
peut être avec :
http://www.excelabo.net/excel/comparerdiv.php#valeursuniques
--
Avec plaisir
http://dj.joss.free.fr/trombine.htm
http://jacxl.free.fr/mpfe/trombino.html
Philippe.R
Pour se connecter au forum :
http://www.excelabo.net/mpfe/connexion.php
News://news.microsoft.com/microsoft.public.fr.excel
"Pouks" news:
J'utilise la fonction alea() afin de générer une liste de nombres (Ex:
1-100). Est-ce que quelqu'un connait un moyen pour que la page de calcul
me
retourne seulement des résultats différents ? J'avais pensé la jumeler à
une
fonction si() et donner comme consigne un recalcul si 2 résultats sont
identiques, mais je doute qu'une commande puisse ordonner un recalcul...

Toute aide sera grandement appréciée.


Francois L
Le #16413091
Pouks a écrit :

Bonjour,

Il me semble que la macro suivante fait ce que tu veux...
'----------------------------
Sub alea_sans_doublons()
Dim ValMax As Long, DerCel As Long, ValBase As Long, MyVal As Long
ValMax = 100 ' Valeur Max (+1)
DerCel = 75 ' Nb de cellules
' Test de cohérence
If DerCel >= ValMax Then
MsgBox "Erreur de parametres," & Chr(13) & _
"Le nombre de cellules demandées est supérieur au nombre de valeurs
distinctes possibles"
Exit Sub
End If
' Ecriture de la première cellule (A1)
ValBase = Int(Rnd() * ValMax)
Range("A1") = ValBase
' Ecriture des cellules suivantes avec test
For i = 2 To DerCel
Calcul:
MyVal = Int(Rnd() * ValMax)
Range("A" & i) = MyVal
If Application.WorksheetFunction.CountIf(Range("A1:A" & i), MyVal) > 1 Then
GoTo Calcul
Else
End If
Next
End Sub
'-----------------------------------

François L


J'utilise la fonction alea() afin de générer une liste de nombres (Ex:
1-100). Est-ce que quelqu'un connait un moyen pour que la page de calcul me
retourne seulement des résultats différents ? J'avais pensé la jumeler à une
fonction si() et donner comme consigne un recalcul si 2 résultats sont
identiques, mais je doute qu'une commande puisse ordonner un recalcul...

Toute aide sera grandement appréciée.


LE TROLL
Le #16413161
Bonjour,

Est-ce que ça, ça marche, c'est du VB ?

NOMBRE PSEUDO ALEATOIRES génération de nombres
aléatoires
Nombre entier entre 1 et 100 avec un pas de 1

Dim hasard As long
Randomize
hasard = Int((maxi - mini + 1) * Rnd + mini)
Pas de 1

Si ça ne fonctionne pas, suffit pour faire un
nombre aléatoire, de prendre les secondes en les
multipliant par les minutes, puis en délimitant le
bornages du résultat... ou un truc de ce genre....


Pour ne pas avoir deux fois le même nombre, tu
peux par exemple faire une structure avec liste
(plus simple qu'avec variable indicé):

list1.clear
dim hasard as long
dim i as long
bis:
hasard = génération_nombre_pseudo_aléatoire
for i = 0 to list1.listcount-1
if list1.list(i) = hasard hten goto bis
next i
list1.additem hasard
list1.refresh
' suite de ton code
---
Romans, logiciels, email, site personnel
http://irolog.free.fr/joe.htm
------------------------------------------------------------------------------------





"Pouks" dans le message de news:

| J'utilise la fonction alea() afin de générer une
liste de nombres (Ex:
| 1-100). Est-ce que quelqu'un connait un moyen
pour que la page de calcul me
| retourne seulement des résultats différents ?
J'avais pensé la jumeler à une
| fonction si() et donner comme consigne un
recalcul si 2 résultats sont
| identiques, mais je doute qu'une commande puisse
ordonner un recalcul...
|
| Toute aide sera grandement appréciée.
Modeste
Le #16413371
Bonsour® Pouks avec ferveur ;o))) vous nous disiez :

J'utilise la fonction alea() afin de générer une liste de nombres (Ex:
1-100). Est-ce que quelqu'un connait un moyen pour que la page de
calcul me retourne seulement des résultats différents ? J'avais pensé
la jumeler à une fonction si() et donner comme consigne un recalcul
si 2 résultats sont identiques, mais je doute qu'une commande puisse
ordonner un recalcul...

Toute aide sera grandement appréciée.



A1= Alea()
B1=rang(A1;$A$1:$A$100)
recopier jusqu'en ligne 100

--
--
@+
;o)))
Pouks
Le #16415481
Merci du coup de main tout le monde. Je prends en note toutes ces
suggestions, je vais pouvoir en apprendre plus à propos des macros etc, mais
compte tenu de mes connaissances actuelles, les méthodes les plus simples
sont les meilleures. J'adopte donc la solution de "Modeste" qui fonctionne à
merveille.

Merci encore.
Francois L
Le #16415861
Pouks a écrit :
Merci du coup de main tout le monde. Je prends en note toutes ces
suggestions, je vais pouvoir en apprendre plus à propos des macros etc, mais
compte tenu de mes connaissances actuelles, les méthodes les plus simples
sont les meilleures. J'adopte donc la solution de "Modeste" qui fonctionne à
merveille.

Merci encore.



Re,

Eh oui, modeste et génial, comme d'hab

--
François L
Publicité
Poster une réponse
Anonyme