Générer des données aléatoires à des fins de test, Excel VBA

Générer des données aléatoires à des fins de test, Excel VBA

Voici une explication détaillée en français pour générer des données aléatoires à des fins de test à l’aide de VBA dans Excel, ainsi qu’un exemple de code VBA.
Objectif :
L’objectif est de créer une macro VBA qui génère des données aléatoires dans une feuille de calcul Excel. Ces données peuvent être des nombres, des textes ou des dates, et sont utiles pour des tests (par exemple, lors de tests de formules, de la création de rapports d’exemple ou du débogage).
Explication détaillée étape par étape :
1. Génération de nombres aléatoires :

    • Excel offre plusieurs fonctions intégrées pour générer des données aléatoires :
      • RANDBETWEEN(min, max) : Cette fonction retourne un entier aléatoire compris entre les valeurs minimales et maximales spécifiées.
      • RAND() : Cette fonction retourne un nombre à virgule flottante aléatoire entre 0 et 1.
      • Exemple : RANDBETWEEN(1, 100) génère des entiers aléatoires entre 1 et 100.

2. Génération de texte aléatoire :

  • Pour générer des chaînes de caractères aléatoires, vous pouvez utiliser la fonction CHAR() qui convertit un code ASCII en caractère.
  • Vous pouvez générer des chaînes aléatoires en combinant plusieurs lettres (caractères de l’alphabet) ou même des mots entiers.

3. Génération de dates aléatoires :

  • Les dates peuvent être générées en utilisant la fonction DATE et en y ajoutant des nombres aléatoires pour simuler des dates dans une plage donnée.

4. Vue d’ensemble de la macro VBA :

  • Vous allez écrire une macro qui génère des données aléatoires dans plusieurs colonnes (par exemple des nombres aléatoires, des textes et des dates). Cela vous permet de simuler différents types de données pour des tests.

Exemple de code VBA :

Sub GenerateRandomData()
    ' Définir les variables
    Dim ws As Worksheet
    Dim row As Long, col As Long
    Dim randomInt As Integer
    Dim randomFloat As Double
    Dim randomDate As Date
    Dim randomString As String
    Dim charCode As Integer
    Dim i As Integer
    ' Créer une nouvelle feuille pour les données générées
    Set ws = ThisWorkbook.Sheets.Add
    ws.Name = "RandomData"
    ' Définir les en-têtes de colonnes
    ws.Cells(1, 1).Value = "Entier Aléatoire"
    ws.Cells(1, 2).Value = "Flottant Aléatoire"
    ws.Cells(1, 3).Value = "Date Aléatoire"
    ws.Cells(1, 4).Value = "Texte Aléatoire"
    ' Générer des données aléatoires pour 100 lignes
    For row = 2 To 101 ' 100 lignes de données
        ' Générer un entier aléatoire entre 1 et 100
        randomInt = WorksheetFunction.RandBetween(1, 100)
        ws.Cells(row, 1).Value = randomInt
        ' Générer un nombre flottant aléatoire entre 0 et 1
        randomFloat = WorksheetFunction.Rand()
        ws.Cells(row, 2).Value = randomFloat
        ' Générer une date aléatoire entre le 01/01/2020 et le 31/12/2025
        randomDate = DateSerial(2020, 1, 1) + WorksheetFunction.RandBetween(0, 2191) ' L'offset maximal pour les dates est de 2191 jours
        ws.Cells(row, 3).Value = randomDate
        ' Générer une chaîne de caractères aléatoire (longueur 5)
        randomString = ""
        For i = 1 To 5 ' 5 caractères
            charCode = WorksheetFunction.RandBetween(65, 90) ' Codes ASCII pour les lettres majuscules
            randomString = randomString & Chr(charCode)
        Next i
        ws.Cells(row, 4).Value = randomString
    Next row
    ' Ajuster automatiquement la taille des colonnes pour une meilleure lisibilité
    ws.Columns("A:D").AutoFit
End Sub

Explication détaillée du code :
1. Configuration de la feuille de calcul :

  • Dim ws As Worksheet : Déclare une variable ws qui contiendra la référence à la feuille de calcul où les données aléatoires seront générées.
  • Set ws = ThisWorkbook.Sheets.Add : Ajoute une nouvelle feuille de calcul au classeur et l’assigne à la variable ws.
  • ws.Name = "RandomData" : Nomme la nouvelle feuille "RandomData" pour une identification facile.

2. Ajout des en-têtes :

  • ws.Cells(1, 1).Value = "Entier Aléatoire" : Ajoute des en-têtes de colonnes à la ligne 1 pour décrire les données de chaque colonne.
  • De même, les autres colonnes sont remplies avec les en-têtes pour « Flottant Aléatoire », « Date Aléatoire » et « Texte Aléatoire ».

3. Génération des données aléatoires :

    • Entier aléatoire :
      • randomInt = WorksheetFunction.RandBetween(1, 100) génère un entier aléatoire entre 1 et 100. La fonction RandBetween() d’Excel est utilisée ici.
    • Flottant aléatoire :
      • randomFloat = WorksheetFunction.Rand() génère un nombre décimal aléatoire entre 0 et 1.
    • Date aléatoire :
      • randomDate = DateSerial(2020, 1, 1) + WorksheetFunction.RandBetween(0, 2191) génère une date aléatoire entre le 1er janvier 2020 et le 31 décembre 2025. La fonction DateSerial() retourne une date, et on y ajoute un nombre aléatoire de jours (entre 0 et 2191).
    • Texte aléatoire :
      • Le code génère une chaîne de 5 lettres majuscules aléatoires. La boucle itère 5 fois et utilise Chr(WorksheetFunction.RandBetween(65, 90)) pour créer des caractères aléatoires à partir des codes ASCII des lettres A à Z.

4. Ajustement automatique des colonnes :

  • Après avoir rempli les données, ws.Columns("A:D").AutoFit ajuste la taille des colonnes pour que tout soit bien lisible.

Comment utiliser ce code :
1. Ouvrez Excel et appuyez sur Alt + F11 pour ouvrir l’éditeur VBA.
2. Dans l’éditeur, allez dans Insertion > Module pour créer un nouveau module.
3. Copiez et collez le code dans ce module.
4. Appuyez sur F5 pour exécuter le code, ou retournez dans Excel et exécutez la macro depuis l’onglet Développeur.
Résultat :

  • Une nouvelle feuille appelée « RandomData » sera créée dans le classeur.
  • La feuille contiendra 100 lignes de données aléatoires avec 4 colonnes : entiers aléatoires, flottants aléatoires, dates aléatoires et textes aléatoires.

Ce code peut être personnalisé davantage en fonction du type et de la quantité de données que vous souhaitez générer. Vous pouvez ajuster la plage des nombres, modifier la plage des dates ou changer la longueur des chaînes de caractères selon vos besoins de test.

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