Gary a deux listes dans une feuille de calcul. L’un d’eux, dans la colonne A, contient une liste d’articles excédentaires dans notre entreprise et l’autre, dans la colonne G, contient une liste de noms. Il n’y a rien dans les colonnes B: F. Gary aimerait attribuer des noms, au hasard, à la liste des éléments. Chaque nom de la colonne G ne doit être attribué qu’une seule fois. S’il y a plus de noms que d’éléments, certains noms ne seront pas utilisés. S’il y a moins de noms que d’éléments, certains éléments n’auront pas de noms associés.

Cela peut être fait de plusieurs façons. Le plus simple, cependant, est peut-être d’attribuer simplement un nombre aléatoire à chaque élément de la colonne A.

En supposant que le premier élément est dans la cellule A1, mettez ce qui suit dans la cellule B1:

=RAND()

Double-cliquez sur la poignée de remplissage dans la cellule B1, et vous devriez vous retrouver avec un nombre aléatoire (entre 0 et 1) à droite de chaque élément de la colonne A.

Maintenant, sélectionnez toutes les cellules de la colonne B et appuyez sur Ctrl + C pour les copier dans le Presse-papiers. Utilisez Collage spécial pour coller les valeurs directement dans ces cellules de la colonne B. (Cela convertit les cellules des formules en valeurs statiques réelles.)

Triez les colonnes A et B par ordre croissant en fonction des valeurs de la colonne B.

Si vous regardez à travers les lignes, vous aurez maintenant des éléments (colonne A) associés au hasard avec un nom (colonne G).

Même si ce n’est pas nécessaire, vous pouvez également suivre ces mêmes étapes pour ajouter un nombre aléatoire à droite de chaque nom, puis trier les noms. (Je dis que ce n’est pas nécessaire car la randomisation des éléments devrait être suffisante pour garantir qu’il y a des éléments aléatoires associés à chaque nom.)

La technique discutée jusqu’à présent fonctionne très bien si vous ne devez effectuer l’appariement aléatoire qu’une fois de temps en temps. Si vous devez le faire assez souvent, une macro peut être une meilleure approche. Il existe, bien sûr, de nombreuses approches macro-basées que vous pourriez utiliser. L’approche suivante suppose que la liste d’éléments est dans la colonne A et la liste de noms dans la colonne G. Elle suppose également qu’il existe des cellules d’en-tête dans la ligne 1 pour chaque colonne.

Sub AssignNames()

Set srItems = Range("A2").CurrentRegion     Set srNames = Range("G2").CurrentRegion     NameCount = srItems.Rows.Count - 1     ItemCount = srNames.Rows.Count - 1

'Randomize Names     ReDim tempArray(NameCount, 2)

For x = 0 To NameCount - 1         tempArray(x, 0) = Range("G2").Offset(x, 0)

tempArray(x, 1) = Rnd()

Next x

'Bubble Sort     For i = 0 To NameCount - 2         For j = i To NameCount - 1             If tempArray(i, 1) > tempArray(j, 1) Then                 tempItem = tempArray(j, 0)

tempName = tempArray(j, 1)

tempArray(j, 0) = tempArray(i, 0)

tempArray(j, 1) = tempArray(i, 1)

tempArray(i, 0) = tempItem                 tempArray(i, 1) = tempName             End If         Next j     Next i

'AssignNames     Range("B2") = "Assigned"

AssignCount = NameCount     If NameCount > ItemCount Then AssignCount = ItemCount         For x = 0 To AssignCount         Range("B2").Offset(x, 0) = tempArray(x, 0)

Next x End Sub

S’il y a plus de noms que d’éléments, la macro attribue au hasard des noms aux éléments. S’il y a plus d’éléments que de noms, il attribue aléatoirement certains éléments à des noms et laisse au hasard des « trous » (éléments sans nom). Il les stocke dans la colonne B, écrasant tout ce qui s’y trouvait.

_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 (5682) s’applique à Microsoft Excel 2007, 2010, 2013, 2016, 2019 et Excel dans Office 365.