Générateur aleatoire

Résolu/Fermé
lepapillon2015 Messages postés 27 Date d'inscription jeudi 2 avril 2015 Statut Membre Dernière intervention 3 mai 2015 - 14 avril 2015 à 10:56
lepapillon2015 Messages postés 27 Date d'inscription jeudi 2 avril 2015 Statut Membre Dernière intervention 3 mai 2015 - 14 avril 2015 à 16:31
bonjour la communauté !
J'espère que vous allez tous bien!
J'ai un petit problème, je cherche à faire un générateur aleatoire sur une colonne de 30 cases par exemples, et qui affiche 1 ou 2 dans ces dernières!
Je crois que c'est pas compliqué mais je galère !
Merci d'avance !
A voir également:

5 réponses

ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 160
14 avril 2015 à 12:03
Bonjour Lepapillon, bonjour le forum,

Peut-être comme ça :

Sub Macro1()
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim I As Byte 'déclare la variable I (Incrément)

Set O = Sheets("Feuil1") 'définit l'onglet O (à adapter à ton cas)
Randomize 'lance le générateur de nombre aléatoire
For I = 1 To 30 'boucle de 1 à 30
    O.Cells(I, 1).Value = Int(2 * Rnd + 1) 'renvoie dans la cellule ligne I colonne 1 (=A) de l'onglet O un nombre aléatoire 1 ou 2
Next I 'prochaine ligne de la boucle
End Sub

Voir l'aide Visual basic sur le mot clé Rnd...
2
lepapillon2015 Messages postés 27 Date d'inscription jeudi 2 avril 2015 Statut Membre Dernière intervention 3 mai 2015
14 avril 2015 à 14:49
Hello, je complique un peu le truc mais est ce que c'est possible de faire une seconde colonne qui affiche par exemple "Bonjour" pour la valeur 1 et "Bonsoir" pour la valeur 2 dans chaque cellule correspondante??
Merci bcp bcp de votre aide :)
0
Thorak83 Messages postés 1051 Date d'inscription jeudi 20 juin 2013 Statut Membre Dernière intervention 22 décembre 2017 156
14 avril 2015 à 12:02
Bonjour

Sub Aleatoire()
  Dim CelDepart As String
  Dim NbCel As Integer
  Dim i As Integer
  
  CelDepart = "A1"
  NbCel = 30
  Range(CelDepart).Select
  For i = 1 To NbCel
    Randomize
    ActiveCell.Value = Int(2 * Rnd) + 1
    ActiveCell.Offset(1, 0).Select
  Next
End Sub


C'est un exemple

cordialement
1
ccm81 Messages postés 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 2 404
Modifié par ccm81 le 14/04/2015 à 15:00
Bonjour à tous

Une solution sans macro (au cas où .... )
https://www.cjoint.com/?3DopmMT44Nt

Cdlmnt
1
lepapillon2015 Messages postés 27 Date d'inscription jeudi 2 avril 2015 Statut Membre Dernière intervention 3 mai 2015
14 avril 2015 à 15:01
Merci! Le top serait en VBA car c'est pour un projet, mais en tout cas merci :)
0
ccm81 Messages postés 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 2 404
14 avril 2015 à 15:18
En reprenant le code de ThauTheme par exemple

For I = 1 To 30 
O.Cells(I, 1).Value = Int(2 * Rnd + 1)
If O.Cells(I, 1).Value = 1 Then
O.Cells(I, 2).Value = "bonjour"
Else
O.Cells(I, 2).Value = "bonsoir"
End If
Next I

Cdlmnt
0
lepapillon2015 Messages postés 27 Date d'inscription jeudi 2 avril 2015 Statut Membre Dernière intervention 3 mai 2015
14 avril 2015 à 15:45
vous êtes au top!! Merci bcp!
0
lepapillon2015 Messages postés 27 Date d'inscription jeudi 2 avril 2015 Statut Membre Dernière intervention 3 mai 2015
14 avril 2015 à 15:56
For I = 1 To 30
If O.Cells(I, 2).Value = "bonjour"
cell.Interior.ColorIndex = 3
Else
cell.Interior.ColorIndex = 4
End If
Next I
End Sub

J'essaye de colorier en rouge pour bonjour dans la continuité de ce que vous avez fait mais cela ne marqhe pas, il exige un then ....
Merci d'avance si vous avez une idée et surtout du temps que vous me consacrez :)
0
ccm81 Messages postés 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 2 404
14 avril 2015 à 16:03
1. eh bien, tu l'ajoutes !
If O.Cells(I, 2).Value = "bonjour"  Then

2. ou mieux
For I = 1 To 30
If O.Cells(I, 2).Value = "bonjour"
For I = 1 To 30
O.Cells(I, 1).Value = Int(2 * Rnd + 1)
If O.Cells(I, 1).Value = 1 Then
O.Cells(I, 2).Value = "bonjour"
O.Cells(I, 2).Interior.ColorIndex = 3
Else
O.Cells(I, 2).Value = "bonsoir"
O.Cells(I, 2).Interior.ColorIndex = 4
End If
Next I

Bon courage
0
lepapillon2015 Messages postés 27 Date d'inscription jeudi 2 avril 2015 Statut Membre Dernière intervention 3 mai 2015
14 avril 2015 à 14:38
Je vais essayer!
En tout cas merci bcp de votre réactivité, cela fait plaisir à voir :)
Je vous tiens au courant, et encore merci !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lepapillon2015 Messages postés 27 Date d'inscription jeudi 2 avril 2015 Statut Membre Dernière intervention 3 mai 2015
14 avril 2015 à 14:41
CA MARCHE!!!
Merci vous êtes au top! :)
0