Excel VBA : générateur de nombres aléatoires sans doublons (4 exemples)

  • Partage Ça
Hugh West

Cet article illustre 4 exemples de générateur de nombres aléatoires sans doublons en utilisant VBA dans Excel. Ici, nous utiliserons la fonction Rnd intégrée d'Excel pour configurer notre code. Plongeons dans les exemples pour apprendre les techniques de génération de nombres aléatoires uniques.

Télécharger le cahier d'exercices

Téléchargez ce cahier d'exercices pour vous entraîner pendant que vous lisez cet article.

Générateur de nombres aléatoires sans doublons.xlsm

4 exemples de générateur de nombres aléatoires sans doublons en Excel VBA

Écrire du code dans l'éditeur Visual Basic

A générer des nombres aléatoires sans doublons nous devons Ouvrir le site et écrire du code VBA dans le éditeur Visual Basic. Suivez les étapes à ouvrir le site éditeur de base visuel et y écrire du code.

  • Allez à la Développeur de l'onglet Ruban Excel .
  • Cliquez sur le site Option Visual Basic.

  • Dans le Visual Basic pour les applications cliquez sur le bouton Insérer une liste déroulante à sélectionnez le site Nouveau module option.

Maintenant, mettez votre code à l'intérieur de la éditeur de code visuel et appuyez sur F5 à exécuter il.

1. Utilisation de la fonction Rnd de VBA pour générer des nombres aléatoires sans doublons

Le site Fonction Rnd est utilisé dans Excel VBA à générer des nombres aléatoires qui sont entre 0 et 1 exclusif.

Tâche : Générer 10 numéros aléatoires entre 0 et 1 sur cellules A1:A10.

Code : Insérer les éléments suivants code dans le éditeur de base visuel et appuyez sur F5 à exécuter il.

 Public Sub GenerateRandomNumNoDuplicates() Set cellRange = Range("A1:A10") cellRange.Clear For Each Rng In cellRange randomNumber = Rnd Do While Application.WorksheetFunction.CountIf(cellRange, randomNumber)>= 1 randomNumber = Rnd Loop Rng.Value = randomNumber Next End Sub 

Sortie La capture d'écran ci-dessus montre 10 numéros aléatoires uniques dans le entre 0 et 1.

Explication du code :

Dans ce code, nous avons utilisé le Fonction Rnd à insérer des nombres aléatoires dans le Plage de cellules A1:A10 . avant en insérant a nouveau numéro nous avons utilisé un Boucle Do While à regardez pour le numéro dans le plage de cellules prédéfinie (A1:A10) si elle existe déjà ou pas Pour vérifier le existence de la numéro dans le gamme de cellules à chaque fois, nous avons configuré le code avec le Fonction COUNTIF Cette fonction vérifie a nouveau numéro aléatoire dans le liste de les numéros déjà existants avant de l'insérer.

Lire la suite : Formule Excel pour générer un nombre aléatoire (5 exemples)

2. Générateur de nombres aléatoires pour une borne inférieure et une borne supérieure définies, sans doublons.

A générer des nombres aléatoires dans un plage définie nous devons définir le en bas de l'échelle et Haut de page dans notre code VBA. À titre d'information, l'option en bas de l'échelle est le le plus petit numéro et le Haut de page est le le plus grand nombre dans le gamme pour le générateur de nombres aléatoires. Nous pouvons utiliser la formule suivante formule dans notre code.

(limite supérieure - limite inférieure + 1) * Rnd + limite inférieure

2.1 Générateur de nombres aléatoires - Décimal

Tâche : Générer 10 numéros aléatoires entre 10 et 20 sur cellules A1:A10.

Code : Insérer les éléments suivants code dans le éditeur de base visuel et appuyez sur F5 à exécuter il.

 Public Sub GenerateRandomNumNoDuplicates() lowerbound = 1 upperbound = 10 Set cellRange = Range( "A1:A10") cellRange.Clear For Each Rng In cellRange randomNumber = (upperbound - lowerbound + 1) * Rnd + lowerbound Do While Application.WorksheetFunction.CountIf(cellRange, randomNumber)>= 1 randomNumber = (upperbound - lowerbound + 1) * Rnd + lowerbound Loop Rng.Value =randomNumber Next End Sub 

Sortie La capture d'écran ci-dessus montre 10 numéros aléatoires uniques dans le entre 1 et 10.

2.2 Générateur de nombres aléatoires - Entier

Dans cette illustration, nous allons utiliser le Fonction Int de VBA à supprimer le site partie fractionnaire de la nombres aléatoires .

Tâche : Générer 20 nombres entiers aléatoires entre 1 et 20 sur cellules A1:B10.

Code : Insérer les éléments suivants code dans le éditeur de base visuel et appuyez sur F5 à exécuter il.

 Public Sub GenerateRandomNumNoDuplicates() lowerbound = 1 upperbound = 20 Set cellRange = Range("A1:B10") cellRange.Clear For Each Rng In cellRange randomNumber = Int((upperbound - lowerbound + 1) * Rnd + lowerbound) Do While Application.WorksheetFunction.CountIf(cellRange, randomNumber)>= 1 randomNumber = Int((upperbound - lowerbound + 1) * Rnd + lowerbound) LoopRng.Value = randomNumber Next End Sub 

Sortie La capture d'écran ci-dessus montre 20 nombres entiers aléatoires uniques dans le entre 1 et 20.

Lire la suite : Générateur de nombres aléatoires dans Excel sans répétitions (9 méthodes)

Lectures similaires

  • Générateur de nombres aléatoires avec outil d'analyse de données et fonctions dans Excel
  • Comment générer des données aléatoires dans Excel (9 méthodes faciles)
  • Générateur de nombres aléatoires à 5 chiffres dans Excel (7 exemples)
  • Générateur de nombres aléatoires à 4 chiffres en Excel (8 exemples)
  • Générer un nombre aléatoire à partir d'une liste dans Excel (4 façons)

3. Spécifier les décimales pour le générateur de nombres aléatoires uniques dans Excel VBA

Nous pouvons utiliser le Fonction ronde dans notre code pour spécifier le site numéro de décimales dans le des numéros uniques générés de manière aléatoire . le syntaxe de la fonction est-

Round(expression, [numdecimalplaces])

Nous devons spécifier le site 2ème argument conformément à notre exigence .

Tâche : Générer 20 nombres aléatoires avec 2 décimales entre 1 et 20 sur cellules A1:B10.

Code : Insérer les éléments suivants code dans le éditeur de base visuel et appuyez sur F5 à exécuter il.

 Public Sub GenerateRandomNumNoDuplicates() lowerbound = 1 upperbound = 20 Set cellRange = Range("A1:B10") cellRange.Clear For Each Rng In cellRange randomNumber = Round((upperbound - lowerbound + 1) * Rnd + lowerbound, 2) Do While Application.WorksheetFunction.CountIf(cellRange, randomNumber)>= 1 randomNumber = Round((upperbound - lowerbound + 1) * Rnd + lowerbound, 2)Loop Rng.Value = randomNumber Next End Sub 

Sortie La capture d'écran ci-dessus montre 20 nombres entiers aléatoires uniques avec 2 décimales dans le entre 1 et 20.

Lire la suite : Générer un nombre aléatoire dans Excel avec des décimales (3 méthodes)

4. Développer un formulaire utilisateur pour un générateur de nombres aléatoires sans doublons en Excel VBA

Dans cette illustration, nous allons montrer comment utiliser une Formulaire utilisateur sur Excel VBA à générer des nombres aléatoires avec pas de doublons .

Tâche : Générer 20 numéros aléatoires dans l'intervalle des cellules A1:B10 en utilisant un Formulaire utilisateur avec le valeurs d'entrée (i) en bas de l'échelle (ii) Haut de page (iii) le nombre de décimales.

Créez un UserForm :

Suivez les étapes ci-dessous pour créer un Formulaire utilisateur avec notre champs de saisie souhaités .

  • Allez à la Développeur de l'onglet Ruban Excel .
  • Cliquez sur le site Option Visual Basic.

  • Dans le Visual Basic pour les applications cliquez sur le bouton Insérer une liste déroulante à sélectionnez le site Formulaire utilisateur option.

  • Dans le Ajout d'un formulaire d'utilisateur a étiquette .
  • Légende de la étiquette comme Limite inférieure dans les propriétés.

  • Ajouter deux plus étiquettes nommé Faisceau supérieur et Espaces décimaux .

  • Maintenant, ajoutez trois TextBoxes dans le Formulaire utilisateur .

  • A ce stade, ajouter a Bouton de commande et le nommer Générer .

  • Maintenant, double-cliquez le site Bouton de commande et mettez ce qui suit code dans le éditeur de code .
 Private Sub CommandButton1_Click() Dim lowerbound As Integer Dim upperbound As Integer Dim decimalPlaces As Integer lowerbound = Val(TextBox1.Text) upperbound = Val(TextBox2.Text) decimalPlaces = Val(TextBox3.Text) Set cellRange = Range("A1:B10") cellRange.Clear For Each Rng In cellRange randomNumber = Round((upperbound - lowerbound + 1) * Rnd + lowerbound, decimalPlaces) Do WhileApplication.WorksheetFunction.CountIf(cellRange, randomNumber)>= 1 randomNumber = Round((upperbound - lowerbound + 1) * Rnd + lowerbound, decimalPlaces) Loop Rng.Value = randomNumber Next End Sub 

  • Appuyez sur F5 à exécuter le site code et le Formulaire utilisateur a est apparu .
  • Mettez le en bas de l'échelle , supérieur, et le numéro de décimales dans le Formulaire utilisateur et a touché le Générer un bouton .

Sortie : En cellules A1:B10 il y a 20 numéros aléatoires avec 2 décimales dans le de 1 à 30.

Lire la suite : Comment générer des nombres aléatoires sans doublons dans Excel (7 façons)

Les choses à retenir

  • Nous pourrions également utiliser le Fonction de correction au lieu de la Fonction Int à générer des nombres entiers uniques La fonction supprime le site partie fractionnaire d'un numéro tout comme le Fonction Int .

Conclusion

Maintenant, nous savons comment générer des nombres aléatoires uniques en utilisant VBA dans Excel avec l'aide d'exemples appropriés. Nous espérons que cela vous aidera à utiliser la fonctionnalité avec plus de confiance. Si vous avez des questions ou des suggestions, n'oubliez pas de les mettre dans la boîte de commentaires ci-dessous.

Hugh West est un formateur et analyste Excel très expérimenté avec plus de 10 ans d'expérience dans l'industrie. Il est titulaire d'un baccalauréat en comptabilité et finance et d'une maîtrise en administration des affaires. Hugh a une passion pour l'enseignement et a développé une approche pédagogique unique qui est facile à suivre et à comprendre. Sa connaissance approfondie d'Excel a aidé des milliers d'étudiants et de professionnels du monde entier à améliorer leurs compétences et à exceller dans leur carrière. Grâce à son blog, Hugh partage ses connaissances avec le monde, offrant des tutoriels Excel gratuits et une formation en ligne pour aider les particuliers et les entreprises à atteindre leur plein potentiel.