Macro pour touche F9 (ALEA)

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

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

J

JJ1

Guest
Bonsoir le Forum,

Dans mon fichier, je souhaiterais un code VBA qui agit 1000 fois sur la touche F9 pour produire aléatoirement 1000 fois 12 nombres et les conserver à partir de la colonne AA.
Pouvez-vous m'y aider?
merci
Bonne soirée
 

Pièces jointes

Re : Macro pour touche F9 (ALEA)

Re,
Je n'ai pas fait appel à "Randomize" car mon fichier fait appel à de nombreuses conditions AVANT alea et que ma fonction "alea" en tient compte alors que Randomize les ignore (ce qui est normal).
Merci en tout cas pour votre travail.
Bon AM à tous
 
Re : Macro pour touche F9 (ALEA)

Bonjour à tous

Sinon, JJ1, tu peux aussi recopier 2000 fois ta formule vers le bas puis avec NB.Si repérer les doublons puis supprimer les lignes sans doublons.

Ou alors concaténer tes lignes, les trier et supprimer les doublons.

Avec Henry (que je salue 😉), tu en a pour 5 minutes à le faire toi même 😛. Mais c'est vrai, qu'il faut ausssi un peu réfléchir 😀.
 
Re : Macro pour touche F9 (ALEA)

Bonjour Michel,
Je sais que je peux trier les résultats et supprimer les lignes de doublons (donc mes lignes de tableau)
mais, en raison de la taille de mon tableau et de sa disposition, je ne peux pas utiliser cette méthode (sinon tu penses bien que je l'aurai fait)
merci à vous et bonne soirée, je vais continuer par des formules.
 
Re : Macro pour touche F9 (ALEA)

Salut

A voir (macro) si tu tiens à garder tes formules en M1:X1.
L'optimisation dépend des macros mais aussi du contexte !
La durée d'exécution d'une procédure peut être grandement augmentée si tu as, par exemple, un bon nombre de formules, de mises en forme ... dans ta feuille.
 

Pièces jointes

Re : Macro pour touche F9 (ALEA)

Re

@ JJ1 As-tu testé mes propositions ?

@ Fo_rum

Ton code apparait assez similaire a celui que j'ai commis , mais je m'explique mal la difference en terme de temps d'execution
pour memoire , mon code dans les mêmes conditions que le tien

Code:
Sub test2()
debut = Timer
Application.ScreenUpdating = False
Columns("AA:AL").ClearContents
ligne = 1
Dim coll As Collection
Set coll = New Collection
While ligne < 1001
Calculate
For n = 13 To 24
x = Cells(1, n)
 On Error Resume Next
   coll.Add x, CStr(x)
 On Error GoTo 0
Next n
For n = 1 To coll.Count
 Cells(ligne, 26 + n) = coll(n)
Next n
For n = 1 To coll.Count
 coll.Remove 1
Next n
ligne = ligne + 1
Wend
Application.ScreenUpdating = True
MsgBox (Timer - debut)
End Sub
 
Re : Macro pour touche F9 (ALEA)

Salut pierrejean

je pense que le gain de temps est une accumulation de poignées de dixièmes :

'Columns("AA:AL").ClearContents
Range("AA1:AL1000").ClearContents

'ligne = 1

Set coll = Nothing (neutralisation globale ici)
' For N = 1 To coll.Count
' coll.Remove 1
'Next N
' ligne = ligne + 1

avec
While ligne < 1001
' Calculate (qui n'est pas obligatoire)
Set coll = New Collection (la collection est redéfinie ici donc boucle en moins)
ligne=ligne+1 (ici, la variable est 1 puis incrémentée)
For N = 1 To coll.Count
Cells(ligne, 26 + N) = coll(N)
Next N

Je pense que le fait de désactiver le calcul automatique y est pour quelque chose.
 
Re : Macro pour touche F9 (ALEA)

Re

Pour le fun, traitée sous l'angle rapidité d'execution et la participation de Fo-rum

Code:
Sub test3()
debut = Timer
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Columns("AA:AL").ClearContents
ligne = 1
Dim coll As Collection
Set coll = New Collection
While ligne < 1001
Range("M1:X1").Calculate
tablo = Range("M1:X1")
For n = LBound(tablo, 2) To UBound(tablo, 2)
 On Error Resume Next
   coll.Add tablo(1, n), CStr(tablo(1, n))
 On Error GoTo 0
Next n
For n = 1 To coll.Count
 Cells(ligne, 26 + n) = coll(n)
Next n
For n = 1 To coll.Count
 coll.Remove 1
Next n
ligne = ligne + 1
Wend
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
MsgBox (Timer - debut)
End Sub
 
Re : Macro pour touche F9 (ALEA)

Rebonjour à tous et merci pour vos macros (qui fonctionnent très bien-merci)

ps: je joins un exemple de mon "ALEA" par formule montrant pourquoi je ne souhaitais pas un "randomize" dans la macro.
En faisant plusieurs fois F9, vous allez vite comprendre le pourquoi....

En tout cas merci.
 

Pièces jointes

Re : Macro pour touche F9 (ALEA)

Bonjour à tous,

JJ1 ou JP, je t'ai souvent suivi dans ta quête du Graal mais tes demandes ici ou ailleurs deviennent complétement.... J'ai du mal à les qualifier...

Comme Toto : "En faisant plusieurs fois F9, vous allez vite comprendre le pourquoi...." Je suis toujours en attente d'un début de tentative de compréhension... Mais il est possible que cela vienne de moi...

Tu es dans ton trip... Mais pas nous... Loin de là...

A+ à tous
 
Re : Macro pour touche F9 (ALEA)

Bonjour à tous

Tu sais JC, pour essayer de gagner au loto, il en faut des codes à tester 🙂.

C'est bizarre comme j'ai le nez fin avec ce genre de demande (ça pleut en ce moment sur XLD, ça fait du bien 😛).

Je crois qu'il faut que je m'en éloigne 😱.
 
Dernière édition:
Re : Macro pour touche F9 (ALEA)

Bonjour à tous,

@ tototiti, Jean-Claude,

j'ai tiré la formule en B1 vers la droite jusqu'en L1

et c'est alors qu'en appuyant sur F9 que je me suis rendu compte que les "tirages aléatoires" ne donnent comme résultats que les nombres 1, 4 et 8 😱😱😱

à tel point que je ne comprends même plus la question posée initialement 😡😡😡

je me console en me posant la question: est-ce que JJ1 la comprend lui même 😀😀😀

à+
Philippe
 
Re : Macro pour touche F9 (ALEA)

Bonsoir,
Je constate que mon explication ne vous a pas paru claire: Alea fournit des nombres au hasard.
Ma formule alea tire des nombres pas totalement au hasard: alea tient compte des coefficients que j'affecte aux nombres, ainsi, ici, dans ce petit exemple caricatural, j'ai favorisé 3 nombres et pourquoi les autres ne sortent pas? à cause de mes coefficients qui se cumulent (voir ma formule alea en ligne 1 avec Equiv)
Donc mon copier/coller suffisait car je ne pense pas qu'une macro puisse tirer des nombres pas "totalement " au hasard mais "influencés" par les 10 points affectés aux nombres 1 -4 et 8 en colonne O
Espérant avoir été plus clair.....
Bonne soirée à tous (et merci).

Pour Philippe: la question initiale justement justifiait le copier/coller pour conserver cet alea "particulier" mais super astucieux quand on veut conserver(en mettant des points bien sûr dégressifs, et pas que des 10) ou éliminer (0 point) certains nombres en tirage aléatoire.
 
Dernière modification par un modérateur:
Re : Macro pour touche F9 (ALEA)

Bonsoir,

Ta colonne Q contient 4 données :

0.0%
33.3%
66.7%
100.0%

en A1 (et B1), tu as :

=EQUIV(ALEA();$Q$3:$Q$51)

La fonction ALEA() retourne une valeur décimale supérieure à 0 et inférieure à 1.

La fonction EQUIV va rechercher cette valeur dans la colonne Q et va retourner le rang de la valeur immédiatement inférieure.

ainsi, si ALEA() retourne une valeur < 0.33, EQUIV trouve comme valeur immédiatement inférieure : 0.0% (dont le rang est 1)

si ALEA() retourne une valeur > 0.333 et < 0.667, EQUIV trouve comme valeur immédiatement inférieure : 33.3% (dont le dernier rang est 4)

même raisonnement pour le cas où ALEA() retournerait une valeur > 0.667

Il n'y a donc rien d'anormal.

@+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
3
Affichages
655
Retour