Générateur aleatoire

Résolu
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 !

5 réponses

  1. 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...
    1. 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 :)
  2. 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. Bonjour à tous

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

      Cdlmnt
      1. Merci! Le top serait en VBA car c'est pour un projet, mais en tout cas merci :)
      2. 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
      3. vous êtes au top!! Merci bcp!
      4. 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 :)
      5. 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
    2. Je vais essayer!
      En tout cas merci bcp de votre réactivité, cela fait plaisir à voir :)
      Je vous tiens au courant, et encore merci !