Jouer avec un jeu complet (Microsoft Excel)
Excel est excellent pour générer des nombres aléatoires, mais il est moins efficace pour remplir une plage de cellules avec des nombres aléatoires dans lesquels aucun nombre particulier n’est répété deux fois. Par exemple, vous souhaiterez peut-être remplir 52 cellules avec les nombres 1 à 52, dans un ordre aléatoire. (Ceci est très similaire au choix des cartes d’un jeu dans un ordre aléatoire, où une carte particulière ne peut être choisie qu’une seule fois. Ainsi, le titre de cette astuce.)
Il n’y a évidemment pas de fonction Excel intégrée pour fournir cette capacité, vous devez donc travailler avec des macros. Heureusement, une telle macro n’est pas terriblement difficile à créer. La macro suivante fera très bien l’affaire:
Sub FillRand() Dim nums() As Integer Dim maxval As Integer Dim nrows As Integer, ncols As Integer Dim j As Integer, k As Integer Dim Ptr As Integer Randomize Set s = Selection maxval = s.Cells.Count nrows = s.Rows.Count ncols = s.Columns.Count ReDim nums(maxval, 2) 'Fill the initial array For j = 1 To maxval nums(j, 1) = j nums(j, 2) = Int((Rnd * maxval) + 1) Next j 'Sort the array based on the random numbers For j = 1 To maxval - 1 Ptr = j For k = j + 1 To maxval If nums(Ptr, 2) > nums(k, 2) Then Ptr = k Next k If Ptr <> j Then k = nums(Ptr, 1) nums(Ptr, 1) = nums(j, 1) nums(j, 1) = k k = nums(Ptr, 2) nums(Ptr, 2) = nums(j, 2) nums(j, 2) = k End If Next j 'Fill in the cells Ptr = 0 For j = 1 To nrows For k = 1 To ncols Ptr = Ptr + 1 s.Cells(j, k) = nums(Ptr, 1) Next k Next j End Sub
Cette macro utilise un tableau à deux dimensions (nums) pour déterminer les nombres à utiliser et l’ordre dans lequel ils doivent être utilisés. Près du début de la macro, le tableau est rempli d’un nombre statique (de 1 au nombre de cellules) et d’un nombre aléatoire compris entre 1 et le nombre de cellules. Ce deuxième numéro est ensuite utilisé pour trier le tableau. Une fois le tableau stocké, il suffit de placer les numéros d’origine dans les cellules.
À propos, la raison pour laquelle un tableau à deux dimensions est utilisé est que la fonction Rnd utilisée par VBA pour générer des nombres aléatoires peut renvoyer des valeurs en double. Ainsi, même si la deuxième dimension du tableau peut contenir des doublons, lorsque le tableau est finalement trié, la première dimension n’aura pas de doublons.
Pour utiliser la macro, commencez par sélectionner les cellules que vous souhaitez remplir avec des valeurs séquentielles dans un ordre aléatoire. Lorsque vous exécutez la macro, cette plage est remplie. Par exemple, si vous sélectionnez dix cellules, puis exécutez la macro, ces cellules sont remplies avec les nombres 1 à 10, dans un ordre aléatoire.
_Note: _
Si vous souhaitez savoir comment utiliser les macros décrites sur cette page (ou sur toute autre page des sites ExcelTips), j’ai préparé une page spéciale qui comprend des informations utiles.
lien: / excelribbon-ExcelTipsMacros [Cliquez ici pour ouvrir cette page spéciale dans un nouvel onglet de navigateur]
.
ExcelTips est votre source pour une formation Microsoft Excel rentable.
Cette astuce (8269) s’applique à Microsoft Excel 2007, 2010, 2013, 2016, 2019 et Excel dans Office 365. Vous pouvez trouver une version de cette astuce pour l’ancienne interface de menu d’Excel ici:
link: / excel-Playing_with_a_Full_Deck [Jouer avec un deck complet]
.