Tirage au sort cadeaux de Noël

bonjour à tous,

Cela fait quelques années que pour les Noëls familiaux, nous avons décidé d'éviter la surenchère de cadeau: chacun se voit attribué par tirage au sort une personne a qui il est chargé de faire un unique cadeau.

Nous sommes une petite quinzaine, certains sont en couple, d'autre non.

Je suis chargé de faire la tirage au sort .

Chaque année c'est un peu le casse tête, car en gros, il ne faut ni tomber sur son conjoint pour ceux qui en ont, ni sur la personne a qui l'on a déjà fait un cadeau l'année dernière.

Du coup, j'ai crée un tirage aléatoire de l'ordre de la liste de nom, ce qui permets d'éviter le doublon de se faire son propre cadeau (et en plus à la côté sympathique de ne faire qu'une seule boucle mais c'est accessoire) mais ne résout en rien le problème d'éviter de faire un cadeau à son conjoint ou à la personne a qui l'on faisait déjà un cadeau l'année précédente.

Je me retrouve donc alors à refaire sans cesse le tirage au sort, jusqu'à éviter tous les problèmes de conjoints et de doublons de l'année précédente. En gros la liste ne convient jamais et je suis presque toujours obligé au bout d'un 50aine d'essais de tricher et de finir ma liste à l'ancienne avec des noms dans un chapeau (au moins quand ca ne va pas, on remets le nom dans le chapeau et on retire).

Je souhaiterais donc une bonne fois pour toute arriver à faire ce fichier qui me calculerait tout cela automatiquement.

Le problème c'est que je n'ai aucune idée de la bonne méthode pour arriver à mes fins.

Si quelqu'un peut m'aider ou m'indiquer la bonne piste pour faire cela, je lui en serais fortement reconnaissant.

Bonne journée à tous

Bonjour,

Merci de joindre le fichier que tu utilises.

Bonjour,

Merci de joindre mon cadeau de Noël.

merci bernard22 pour ton aide.

Actuellement, j'ai fait ma liste sous google sheet, car la formule est plus simple à faire je crois:

j'ai mes noms en B1 jusqu'à B15

et ma formule

=sort(B1:B15;arrayFormula(randbetween(sign(row(B1:B15));1000000));true)

Ce qui fait que ca me fait une liste de ces noms dans un ordre aléatoire.

Je n'ai plus qu'à dire le premier de la liste fait un cadeau au 2ieme, qui fait un cadeau au 3ieme, jusqu'au dernier qui fait un cadeau au premier.

Ca permets d'éviter de se faire un cadeau à soi même.

Bon c'est sur google sheet, mais je crois que sous excel, on trouve ici plein d'exemples avec des macros:

Option Explicit

Sub Tirage()
Randomize
Dim I As Integer
Dim Sortie As Byte
Dim Top As Byte
Dim flag() As Integer
Top = 15 'Nbre de valeurs différentes
ReDim flag(Top)

For I = 1 To Top
  flag(I) = 1
Next I

For I = 1 To Top

 Sortie = Int(Rnd() * Top) + 1
                    If flag(Sortie) = 1 Then
                            flag(Sortie) = 0

                    Else
                    While flag(Sortie) = 0
                    Sortie = Int(Rnd() * Top) + 1
                    Wend
                             flag(Sortie) = 0
                    End If

Worksheets("feuil1").Cells(I, 1).Value = Sortie
Next I

Worksheets("feuil1").Range("A1:B15").Sort Key1:=Range("A1"), Order1:=xlAscending

End Sub

Le problème c'est que cela n'intègre pas les conditions restrictives qui me compliquent la vie:

par exemple, B1 est marié avec B2, et l'année dernière il a fait un cadeau à B8, il ne faut donc pas qu'il puisse tomber cette année sur B2 et sur B8 (et évidemment sur lui même).

Et cette liste se complique au fur et à mesure du tirage car les choix possibles s'amenuisent au fur et à mesure que les gens ont déja étés choisis.

J'imagine que cela implique que plein de fois la boucle ne trouve aucune résolution (si le dernier n'a plus comme choix que son conjoint par exemple) et que elle devra alors se refaire jusqu'à trouver une issue favorable.

Pas simple quoi et cela dépasse mes capacités. En tout cas je ne vois pas comment le faire.

@dhany, c'est à double tranchant, une fois qu'on est sur la liste, on recoit un cadeau mais on est obligé d'en faire un également

Alors en voici un d'avance : ... et merci de préparer ma longue commande (de 3 pages) au Père Noël !

dhany a écrit :

Alors en voici un d'avance : ... et merci de préparer ma longue commande (de 3 pages) au Père Noël !

ha oui 3 pages quand même!

Loin de moi l'idée de briser tous vos rêves bien sûr, je ne veux pas être brutal, mais il me semble avoir entendu dire que, peut-être, il se pourrait que le père Noël ne soit pas tout à fait totalement véridique et que ce soit un peu romancé... Voila, on ne serait pas tout à fait sûr à 100% de l'existence du père Noël...

Je suis désolé si l'annonce vous parait violente, c'est une information à prendre avec des pincettes évidemment, Mais on peut légitimement émettre des doutes ou tout au moins quelques petites réserves sur cette histoire qui parait un peu incroyable quand même.

buvette1 a écrit :

il se pourrait que le père Noël ne soit pas tout à fait totalement véridique et que ce soit un peu romancé...

Voila, on ne serait pas tout à fait sûr à 100% de l'existence du père Noël...

quelle terrible nouvelle ! mais c'est ça !!! du coup, le choc à été si violent que je suis allé faire

je suis donc indisponible pour une durée indéterminée, alors maintenant, laisse-moi hiberner en paix !

(je sortirai peut-être de ma cataplexie au printemps prochain)

Avis à tous les enfants qui liraient ces messages hautement incompréhensibles pour vous : je crois que buvette1 a un peu trop bu !

alors surtout, les enfants, ne pleurez pas ! je vous affirme que si vous êtes bien sages, le Père Noël passera vous voir, même

si vous êtes tout petits ... surtout si vous êtes tout petits.

bonjour,

une proposition

1'871buvette1.xlsm (17.86 Ko)

merci h2so4,

cela m'a l'air fabuleux tout ça!!!

Un immense merci!!!

Rechercher des sujets similaires à "tirage sort cadeaux noel"