Exécution d'une macro au hasard
Résolu
Baldurr
Messages postés
7
Statut
Membre
-
Baldurr Messages postés 7 Statut Membre -
Baldurr Messages postés 7 Statut Membre -
Bonjour,
Je ne vois pas de topic là-dessus :
Je cherche une macro (toute simple) pour exécuter, AU HASARD, un macro parmi un choix.
Disons que mes macros sont 3 : "mac1", "mac2" et "mac3".
Je ne vois pas quoi mettre comme commande (alea? rnd ? autre ?). Rien de ce que j'ai essayé ne marche, je suis pourtant sur que ça ne doit pas être compliqué, grrr
Je ne vois pas de topic là-dessus :
Je cherche une macro (toute simple) pour exécuter, AU HASARD, un macro parmi un choix.
Disons que mes macros sont 3 : "mac1", "mac2" et "mac3".
Sub macro_au_hasard() ??? End Sub
Je ne vois pas quoi mettre comme commande (alea? rnd ? autre ?). Rien de ce que j'ai essayé ne marche, je suis pourtant sur que ça ne doit pas être compliqué, grrr
5 réponses
-
Bonjour
Sub macro_zazaz() N = 3 choix = Int(Rnd * N) + 1 Select Case choix Case 1 macro1 Case 2 macro2 '.... ect jusquà N End Select End Sub -
Bonjour,
Hélas, ce que vous proposez ne marche pas. Il sélectionne 1 case, puis une autre, etc. à toute vitesse, sans que j'ai la main et en choisissant "Case 1" à chaque fois, jusqu'à rencontrer un problème de pile. Voici ce que cela donne avec mon appli :
Sub suitazar() N = 3 choix = Int(rnd * N) + 1 Select Case choix Case 1 suite_mac_ace 'nom de la 1è macro Case 2 suite_mac_ier 'nom de la 2è Case 3 suite_mac_ard 'nom de la 3è End Select End Sub
Sinon, l'idée est bonne. Il y a 3 macros, on appelle "choix" le ... choix aléatoire entre le "Case1", "Case2" ou "Case3". Mais :
- Il choisit toujours le 1
- La macro "suitazar" devrait exécuter la macro choisie "suite_mac_ace" ou "...ier" ou "...ard" puis s'arrêter puisque la macro en question sélectionne une cellule prédéfinie et attend une réponse avant de continuer son exécution (ça, j'ai réussi :-) ).
Une autre idée ?
Merci néanmoins Michel ;-)
Baldur -
Re-,
J'ai essayé ton code dans un classeur vierge :
Sub suitazar2() N = 3 choix = Int(Rnd * N) + 1 Select Case choix Case 1 ActiveCell.FormulaR1C1 = "un" ActiveCell.Offset(1, 0).Select Case 2 ActiveCell.FormulaR1C1 = "deux" ActiveCell.Offset(1, 0).Select Case 3 ActiveCell.FormulaR1C1 = "trois" ActiveCell.Offset(1, 0).Select End Select End Sub
Il marche parfaitement. Du coup, je me demande bien pourquoi, dans l'autre cas, il choisit toujours "suite_mac_ace ". Sinon, j'ai de nouveau la main (j'ai déplacé l'emplacement de l'exécution de "suitazar"). Il ne reste plus qu'à voir
cet histoire de choix ... grmpf ...
Baldur -
Désolé je viens d'essayer en remplaçant les appels macro par des msgbox et ca marche! j'ai ajouté l'instruction Randomize pour le principe mais ca n'a pas grand effet
Sub suitazar() N = 3 Randomize choix = Int(Rnd * N) + 1 Select Case choix Case 1 MsgBox "suite_mac_ace" 'nom de la 1è macro Case 2 MsgBox "suite_mac_ier" 'nom de la 2è Case 3 MsgBox "suite_mac_ard" 'nom de la 3è End Select End Sub
Au fait, tu es bien sur Excel: je m'aperçois que tu n'avais pas précisé... -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Oui.
Merci Michel, mais, ça y est, j'ai trouvé.
Les 3 macros concernaient des feuilles différentes mais étaient gérées indépendamment. J'ai donc juste rajouté
Worksheets("feuille ard").Select '(par exemple)
en début d'exécution. Sujet clos, MERCI !!!!