Si vous souhaitez générer une liste de nombres aléatoires uniques, vous pouvez utiliser les fonctions RANDBETWEEN et VBA RND. Dans cet article, nous allons générer 3 numéros uniques à partir de la liste fournie.

Vous pouvez trouver la question originale http://www.excelforum.com/excel-programming-vba-macros/1093315-vba-for-do- while-loop.html[ici]

Question: Je veux qu’une macro génère une liste de 3 nombres aléatoires à partir d’une liste de nombres enregistrés dans la colonne A. Il y a une condition que le code VBA doit être pris en compte. La condition est qu’il y a 3 nombres qui existent dans la colonne B, donc la macro doit créer une liste de nombres qui ne se sont pas produits une fois dans la colonne B. De cette façon, nous pouvons avoir une liste de nombres uniques dans la colonne B & C. |||| Voici un aperçu de l’exemple que nous avons:

img1

===

Pour obtenir la liste des nombres aléatoires uniques; nous devons suivre les étapes ci-dessous pour lancer l’éditeur VB Cliquez sur l’onglet Développeur Dans le groupe Code, sélectionnez Visual Basic

  • Copiez le code ci-dessous dans le module standard

img2

Pour exécuter la macro, nous pouvons appuyer sur la touche F5 du clavier si vous êtes actif dans l’écran de Visual Basic Editor. Une autre façon d’exécuter la macro consiste à utiliser la touche «ALT + F8»; sélectionnez la macro et cliquez sur le bouton Exécuter

Sub RandomNumbers()

Dim ws As Worksheet

Dim ar As Variant

Dim RandomNum As Long

Dim i As Integer

Dim myVal As Long

Randomize

Set ws = ThisWorkbook.Sheets("Numbers")

With ws

ar = .Range("A" & Rows.Count).End(xlUp).Row

.Range("C1:C3").ClearContents

For i = 1 To 3

Do

RandomNum = Int((1 - ar + 1) * Rnd + ar)

myVal = .Range("A" & RandomNum).Value

Loop Until Range("B1:C24").Find(what:=myVal, lookat:=xlWhole) Is Nothing

.Range("C" & i).Value = myVal

Next i

End With

End Sub

img3

  • Lorsque nous exécutons le code VBA, la liste unique de numéros sera automatiquement générée

img4

img5

Explication du code:

Dans le code ci-dessus, nous utiliserons la fonction RND & INT avec la boucle For & Do pour obtenir le résultat.

  • Nous déclarons Dim ws comme feuille de travail; le but de déclarer ws comme feuille de travail est que nous voulons que le code s’exécute uniquement sur une feuille de calcul spécifique, c’est-à-dire

Numbers dans notre exemple Dim RandomNum As Long: cela sauvera les nombres uniques Set ws = ThisWorkbook.Sheets (« Numbers »): cette ligne garantira que le code s’exécute sur la feuille Numbers uniquement La prochaine ligne de code utilisera With instruction ar = .Range (« A » & Rows.Count) .End (xlUp) .Row: cette ligne sauvegardera la dernière cellule de la colonne A (24 dans notre exemple)

Range (« C1: C3 »). ClearContents: cette ligne effacera tout contenu existant dans la plage C1: C3 Ensuite, nous exécuterons la boucle For commençant de 1 à 3 fois avec Do Loop pour générer une liste de nombres aléatoires et vérifier l’absence de doublons dans la plage existante, c.-à-d. la colonne B Conclusion: Nous pouvons générer une liste de nombres aléatoires distincts à partir de alist dans Microsoft Excel avec une légère variation dans le code VBA ci-dessus.

Si vous avez aimé nos blogs, partagez-les avec vos amis sur Facebook. Et vous pouvez aussi nous suivre sur Twitter et Facebook.

image 48

Nous serions ravis de vous entendre, faites-nous savoir comment nous pouvons améliorer, compléter ou innover notre travail et le rendre meilleur pour vous. Écrivez-nous à [email protected]