Générer des nombres aléatoires, Excel VBA

Générer des nombres aléatoires, Excel VBA

Voici un code VBA détaillé pour générer des nombres aléatoires dans Excel. Je vais l’expliquer étape par étape pour que vous puissiez bien comprendre chaque partie du code.
Objectif :
Ce code va générer des nombres aléatoires dans une plage spécifiée et les placer dans des cellules de votre feuille Excel. Vous pouvez personnaliser la plage et le nombre de valeurs aléatoires que vous souhaitez générer.
Code VBA pour générer des nombres aléatoires :

Sub GenerateRandomNumbers()
    ' Définir les variables
    Dim ws As Worksheet
    Dim rng As Range
    Dim cell As Range
    Dim minValue As Double
    Dim maxValue As Double
    Dim numberOfValues As Long
    Dim isInteger As Boolean
    ' Initialiser les variables
    Set ws = ThisWorkbook.Sheets("Sheet1")  ' Remplacez par le nom de votre feuille
    Set rng = ws.Range("A1:A10")  ' Remplacez par la plage où vous souhaitez les valeurs
    minValue = 1  ' Valeur minimale pour générer des nombres aléatoires
    maxValue = 100  ' Valeur maximale pour générer des nombres aléatoires
    numberOfValues = rng.Cells.Count  ' Nombre de cellules à remplir avec des nombres aléatoires
    isInteger = True  ' Mettre à True pour générer des entiers, False pour des décimaux
    ' Boucle à travers chaque cellule dans la plage
    For Each cell In rng
        If isInteger Then
            ' Générer un nombre entier aléatoire entre minValue et maxValue
            cell.Value = Int((maxValue - minValue + 1) * Rnd + minValue)
        Else
            ' Générer un nombre décimal aléatoire entre minValue et maxValue
            cell.Value = (maxValue - minValue) * Rnd + minValue
        End If
    Next cell
End Sub

Explication détaillée du code :
1. Définir les variables :
La première étape consiste à définir les variables nécessaires. Cela nous permettra de gérer la feuille de calcul cible, la plage de cellules où nous voulons placer les nombres aléatoires et d’autres paramètres comme la valeur minimale et maximale pour la génération des nombres.

Dim ws As Worksheet
Dim rng As Range
Dim cell As Range
Dim minValue As Double
Dim maxValue As Double
Dim numberOfValues As Long
Dim isInteger As Boolean
  • ws fait référence à la feuille de calcul où les nombres aléatoires seront générés.
  • rng fait référence à la plage de cellules où les nombres aléatoires seront placés.
  • minValue et maxValue définissent les limites de la génération des nombres aléatoires.
  • numberOfValues contient le nombre de cellules dans la plage spécifiée.
  • isInteger est un indicateur booléen pour décider si l’on génère des entiers ou des nombres décimaux.

2. Initialisation des variables :
Après avoir défini les variables, vous les initialisez avec les valeurs appropriées. Vous pouvez ajuster ces valeurs selon vos besoins.

Set ws = ThisWorkbook.Sheets("Sheet1")  ' Remplacez par le nom de votre feuille
Set rng = ws.Range("A1:A10")  ' Remplacez par la plage que vous souhaitez
minValue = 1  ' Valeur minimale pour générer des nombres aléatoires
maxValue = 100  ' Valeur maximale pour générer des nombres aléatoires
numberOfValues = rng.Cells.Count  ' Nombre de cellules à remplir avec des nombres aléatoires
isInteger = True  ' Mettre à True pour générer des entiers, False pour des décimaux
  • ws est défini sur la feuille « Sheet1 ». Vous pouvez remplacer « Sheet1 » par le nom de la feuille de votre choix.
  • rng est défini sur la plage A1:A10. Vous pouvez changer cette plage par la vôtre (par exemple, B1:B50).
  • minValue et maxValue sont respectivement définis sur 1 et 100. Ce sont les bornes pour la génération des nombres aléatoires.
  • numberOfValues est défini automatiquement sur le nombre de cellules dans la plage spécifiée (A1:A10 dans cet exemple), ce qui permet au code de savoir combien de nombres aléatoires générer.
  • isInteger est défini sur True, ce qui signifie que le code va générer par défaut des nombres entiers (entiers).

3. Générer des nombres aléatoires :

For Each cell In rng
    If isInteger Then
        ' Générer un nombre entier aléatoire entre minValue et maxValue
        cell.Value = Int((maxValue - minValue + 1) * Rnd + minValue)
    Else
        ' Générer un nombre décimal aléatoire entre minValue et maxValue
        cell.Value = (maxValue - minValue) * Rnd + minValue
    End If
Next cell

Cette boucle passe en revue chaque cellule de la plage (rng) et, pour chaque cellule, génère un nombre aléatoire.

  • Rnd : Cette fonction génère un nombre aléatoire compris entre 0 et 1 (exclu). Elle est utilisée pour générer des nombres dans la plage souhaitée.
  • Nombres entiers : Si isInteger est True, le code génère un entier aléatoire en utilisant la fonction Int. L’expression (maxValueminValue + 1) * Rnd + minValue garantit que le nombre aléatoire est compris entre minValue et maxValue inclus.
  • Nombres décimaux : Si isInteger est False, le code génère un nombre décimal aléatoire en utilisant la formule (maxValueminValue) * Rnd + minValue, garantissant que le nombre se situe dans la plage spécifiée.

4. Explication de la formule pour générer des nombres aléatoires :
La formule utilisée pour générer des nombres aléatoires est la suivante :
randomNumber = (maxValue - minValue + 1) * Rnd + minValue

  • maxValue – minValue + 1 : Cette partie calcule l’étendue des valeurs possibles.
  • Rnd : Génère un nombre aléatoire compris entre 0 et 1.
  • (maxValue – minValue + 1) * Rnd : Cette expression met l’échelle pour que le nombre aléatoire tombe dans l’intervalle souhaité (de 0 à la largeur de l’intervalle).
  • + minValue : Cette partie déplace le nombre généré pour qu’il commence à minValue et atteigne maxValue.

Cette formule garantit que les nombres aléatoires sont bien compris entre minValue et maxValue et sont correctement mis à l’échelle.
5. Placer les nombres dans les cellules :
Une fois que le nombre aléatoire est généré pour chaque cellule, il est affecté à la valeur de la cellule correspondante à l’aide de :
cell.Value = randomNumber
Personnalisation :

  • Plage : Vous pouvez modifier la plage où les nombres aléatoires seront placés. Modifiez la ligne Set rng = ws.Range(« A1:A10 ») selon vos besoins (par exemple, B1:B20, C1:C50).
  • Type de valeur : Si vous souhaitez générer des nombres décimaux, modifiez la valeur de isInteger à False.
  • Valeurs minimales et maximales : Modifiez les variables minValue et maxValue pour changer la plage des nombres générés.

Cette approche vous offre une grande flexibilité pour générer des nombres aléatoires en fonction de vos besoins.

Facebook
Twitter
LinkedIn
WhatsApp
Email
Print
0
Nous aimerions avoir votre avis, veuillez laisser un commentaire.x