VBA chiffre aleatoire
Résolu
wave13960
Messages postés
25
Date d'inscription
Statut
Membre
Dernière intervention
-
wave13960 Messages postés 25 Date d'inscription Statut Membre Dernière intervention -
wave13960 Messages postés 25 Date d'inscription Statut Membre Dernière intervention -
A voir également:
- VBA chiffre aleatoire
- Excel trier par ordre croissant chiffre - Guide
- Clavier iphone chiffre et lettre - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Chiffre en lettre - Télécharger - Outils professionnels
- Télécharger macro convertir chiffre en lettre excel - Télécharger - Tableur
6 réponses
Bonsoir, tu n'as pas du bien chercher.
J'ai répondu à ce type de question il n'y a pas bien longtemps.
Tu fais un tableau de 2 enregistrements 2 et 4.
Ensuite tu tires aléatoirement entre 0 et 1 qui sont les indices du tableau.
J'ai répondu à ce type de question il n'y a pas bien longtemps.
Tu fais un tableau de 2 enregistrements 2 et 4.
Ensuite tu tires aléatoirement entre 0 et 1 qui sont les indices du tableau.
Bonsoir Wave, bonsoir le forum,
Peut-ête comme ça :
Peut-ête comme ça :
Sub Macro1() Dim CA As Byte Randomize Do CA = Int(3 * Rnd + 2) Loop Until CA <> 3 MsgBox CA End Sub
merci tout le monde, je viens de trouver une solution ; ) qui marche, j'ai maintenant un autre problème, je le poste sur ce sujet ou j'en créer un autre ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour tout le monde,
Mes meilleurs voeux.
La bonne réponse est celle de ThauThème que je salues.
J'ajouterai, juste pour être ch*ant, Timer après randomize.
Pourquoi la solution de wave13960 ne fonctionne pas.
Pour deux raisons :
1- GoTo, en VBA n'est à utiliser que pour le traitement d'erreur.
Il peut être utilisé car il existe, mais, en cas de plusieurs utilisations, on se retrouve avec un code Spaghetti (nommé ainsi car l'entremêlement des lignes de codes fait penser à un tas de ces pâtes...). Pour preuve, les nouveaux "créateurs" de virus via macro utilisent un code composé essentiellement de Goto pour tromper leur monde.
Autant prendre de bonnes habitudes et l'éviter.
2- Le GoTo de wave13960 ne renvoie pas au bon endroit car il ne recalcule pas le chiffre aléatoire.
Il eut fallut utiliser :
Mes meilleurs voeux.
La bonne réponse est celle de ThauThème que je salues.
J'ajouterai, juste pour être ch*ant, Timer après randomize.
Sub Macro1() Dim CA As Byte Randomize Timer Do CA = Int(3 * Rnd + 2) Loop Until CA <> 3 MsgBox CA End Sub
Pourquoi la solution de wave13960 ne fonctionne pas.
Pour deux raisons :
1- GoTo, en VBA n'est à utiliser que pour le traitement d'erreur.
Il peut être utilisé car il existe, mais, en cas de plusieurs utilisations, on se retrouve avec un code Spaghetti (nommé ainsi car l'entremêlement des lignes de codes fait penser à un tas de ces pâtes...). Pour preuve, les nouveaux "créateurs" de virus via macro utilisent un code composé essentiellement de Goto pour tromper leur monde.
Autant prendre de bonnes habitudes et l'éviter.
2- Le GoTo de wave13960 ne renvoie pas au bon endroit car il ne recalcule pas le chiffre aléatoire.
Dim Nb As Integer Randomize Nb = Int(Rnd() * 3) + 2 Nombre_aléatoire: If Nb <> 3 Then Cells(Ligne, Colonne).Value = Nb Else GoTo Nombre_aléatoire
Il eut fallut utiliser :
Dim Nb As Integer Randomize Nombre_aléatoire: Nb = Int(Rnd() * 3) + 2 If Nb <> 3 Then Cells(Ligne, Colonne).Value = Nb Else GoTo Nombre_aléatoire
Bonjour,
Comme promis hier à Whismeril, voici sa façon de faire mise en code VBA. Contrairement à ce que j'ai annoncé hier, c'est plus court et plus direct.
Ce qui nous amène, bien entendu, à une autre solution, avec Split :
Les deux peuvent bien sur être "raccourci" pour les codeurs fainéants des doigts, comme moi. Exemple pour le second :
🎼 Cordialement,
Franck 🎶
Comme promis hier à Whismeril, voici sa façon de faire mise en code VBA. Contrairement à ce que j'ai annoncé hier, c'est plus court et plus direct.
Dim Tabl(1) As Byte, Resulta As Byte Tabl(0) = 2 Tabl(1) = 4 Randomize Timer Resulta = Tabl(Round(Rnd()))
Ce qui nous amène, bien entendu, à une autre solution, avec Split :
Dim MesVal As String, Separ As String, Resulta As Byte MesVal = "2-4" Separ = "-" Randomize Timer Resulta = Split(Str, sep)(Round(Rnd()))
Les deux peuvent bien sur être "raccourci" pour les codeurs fainéants des doigts, comme moi. Exemple pour le second :
Dim Resulta As Byte Randomize Timer Resulta = Split("2-4", "-")(Round(Rnd()))
🎼 Cordialement,
Franck 🎶