Génération de chaînes aléatoires de caractères (Microsoft Excel)
Nancy essaie de faire en sorte qu’Excel choisisse 50 « nombres » contenant chacun huit caractères aléatoires. Les caractères peuvent être des chiffres ou des lettres (majuscules ou minuscules).
Si vos nombres aléatoires devaient vraiment être des nombres (chiffres seulement), alors les générer serait facile. Tout ce que vous auriez à faire est d’utiliser la fonction RANDBETWEEN (dans Analysis ToolPak) de cette manière:
=RANDBETWEEN(10000000,99999999)
Ce n’est cependant pas ce que veut Nancy. Ses «nombres» aléatoires peuvent également contenir des lettres majuscules et minuscules. Cela devient un peu plus collant.
Il existe cependant plusieurs approches que vous pouvez utiliser.
Une approche consiste à mettre tous vos caractères possibles dans une cellule individuelle, telle que B7:
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789
Nommez cette cellule quelque chose de chic, comme MySource. Vous pouvez ensuite utiliser une formule telle que la suivante pour renvoyer la chaîne aléatoire de caractères:
=MID(MySource,RANDBETWEEN(1,LEN(MySource)),1) & MID(MySource,RANDBETWEEN(1,LEN(MySource)),1) & MID(MySource,RANDBETWEEN(1,LEN(MySource)),1) & MID(MySource,RANDBETWEEN(1,LEN(MySource)),1) & MID(MySource,RANDBETWEEN(1,LEN(MySource)),1) & MID(MySource,RANDBETWEEN(1,LEN(MySource)),1) & MID(MySource,RANDBETWEEN(1,LEN(MySource)),1) & MID(MySource,RANDBETWEEN(1,LEN(MySource)),1)
La formule est longue; il a été divisé en lignes individuelles pour plus de clarté, mais il s’agit toujours d’une formule unique. Il concatène huit caractères extraits de la source que vous avez entrée dans la cellule B7.
Une autre approche consiste à créer une table contenant tous les caractères souhaités dans votre chaîne de texte aléatoire. Commencez par placer les nombres 1 à 62 dans une colonne, un nombre dans chaque ligne. À gauche de ces chiffres, placez vos caractères – A, B, C, D, etc. (Il doit s’agir des mêmes caractères que vous avez placés dans la cellule B7 dans la technique précédente.) Sélectionnez les deux colonnes des 62 lignes et donnez-lui un nom , comme MyTable. Vous pouvez ensuite utiliser la formule suivante pour générer les caractères aléatoires:
=VLOOKUP(RANDBETWEEN(1,62),MyTable,2) & VLOOKUP(RANDBETWEEN(1,62),MyTable,2) & VLOOKUP(RANDBETWEEN(1,62),MyTable,2) & VLOOKUP(RANDBETWEEN(1,62),MyTable,2) & VLOOKUP(RANDBETWEEN(1,62),MyTable,2) & VLOOKUP(RANDBETWEEN(1,62),MyTable,2) & VLOOKUP(RANDBETWEEN(1,62),MyTable,2) & VLOOKUP(RANDBETWEEN(1,62),MyTable,2)
Encore une fois, rappelez-vous qu’il s’agit d’une formule unique, bien qu’elle soit un peu plus courte que la formule précédente.
Chacune des approches présentées jusqu’à présent présente un inconvénient: elles sont régénérées chaque fois que votre feuille de calcul est recalculée. Ainsi, il est difficile d’avoir une seule chaîne aléatoire générée qui ne changera pas régulièrement. La meilleure façon de contourner cela est d’utiliser une macro, mais vous ne voulez pas nécessairement utiliser une fonction définie par l’utilisateur. Pourquoi? Parce qu’il changerait également son résultat chaque fois que la feuille de calcul était recalculée.
Au lieu de cela, vous avez besoin d’une macro qui placera les chaînes aléatoires dans votre classeur à partir d’un emplacement de cellule spécifique. Voici un exemple d’une telle macro:
Sub MakeRandom() Dim J As Integer Dim K As Integer Dim iTemp As Integer Dim sNumber As String Dim bOK As Boolean Range("D4").Activate Randomize For J = 1 To 50 sNumber = "" For K = 1 To 8 Do iTemp = Int((122 - 48 + 1) * Rnd + 48) Select Case iTemp Case 48 To 57, 65 To 90, 97 To 122 bOK = True Case Else bOK = False End Select Loop Until bOK bOK = False sNumber = sNumber & Chr(iTemp) Next K ActiveCell.Value = sNumber ActiveCell.Offset(1, 0).Select Next J End Sub
Exécutez la macro et tout ce qui se trouve dans les cellules D4: D53 est écrasé par les valeurs aléatoires. Si vous souhaitez que les valeurs soient écrites dans un emplacement différent, modifiez l’instruction Range vers le début de la macro.
_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 (3872) s’applique à Microsoft Excel 97, 2000, 2002 et 2003. Vous pouvez trouver une version de cette astuce pour l’interface ruban d’Excel (Excel 2007 et versions ultérieures) ici:
link: / excelribbon-Generating_Random_Strings_of_Characters [Génération de chaînes aléatoires de caractères]
.