TIRAGE ALEATOIRE SUR 20 JOURS

bonjour à tous

je cherche a effectuer un tirage aléatoire et différent sur 20 jours - j'arrive à le faire sur un jour

je joint mon tableau

merci

tomatito 37

Comme ceci ?

salut Steelson et merci pour ce début de réponse mais c'est pas tout à fait ça

idée : vingt jours : 20 personnes

chaque personne ne peut se trouver deux fois dans une même ligne

merci

j'espère que c'est plus clair

tomatito37

Bonjour,

une proposition de solution via une macro

Le forum,steelson, h2s04 merci

serait-il possible d'adapter la macro avec des lettres ( noms) ?

merci

re-Bonjour,

macro adaptée

le forum

h2s04

c'est extra ...

sans m'y connaitre suffisament j'ai comparé les deux macros

je vois ce qui a été modifié mais je ne comprends évidement pas encore la signification

j'ai un souhait pour une petite variante en annexe, si ce n'est pas trop demander

en vous remerciant

tomatito37

Bonjour,

dans ton exemple tu mets 4 personnes pour 5 jours. comment faut-il remplir le 5ème jour ?

oui

Effectivement h2s04

mets 5 noms

merci bien

tomatito37

re-bonjour,

voici

le forum

h2s04 merci

je vais tenter de comprendre la macro

tomatito37

re bonjour

voici le code avec quelques commentaires, n'hésite pas à me revenir si les commentaires ne sont pas compréhensibles.

Sub tirage()
nj = Cells(Rows.Count, 1).End(xlUp).Row - 3 ' nj = nombre d'agents
    For i = 1 To nj ' on recopie les noms des agents en ligne 4 (1 agent par jour)
        Cells(4, i + 5) = Cells(i + 3, 1)
    Next i
    'on crée d'abord un tableau on l'on est sûr d'avoir un agent différent par tache et différent pour chaque jour
'exemple sur un carré 4x4   
'ABCD
'BCDA
'CDAB
'DABC
    'pour cela, on remplit tout le tableau en décalant les agents vers la gauche, l'agent le plus à gauche va à la droite du tableau
    For i = 2 To nj 'on prend chaque ligne
        For j = 1 To nj 'on prend chaque colonne
          If j = nj Then ' si jour le plus à droite on prend l'agent qui se trouve le plus à gauche
           Cells(i + 3, j + 5) = Cells(i + 2, 6)
          Else
                Cells(i + 3, j + 5) = Cells(i + 2, j + 6) 'on copie l'agent qui se trouve dans la case supérieure de droite
            End If
        Next j
    Next i
    ' le tableau est rempli sans doublon ligne ni colonne

    'on peut mélanger les lignes et les colonnes

    For i = 1 To 25 ' on mélange 25 fois les lignes et les colonnes
    'melange colonne
        d = Application.RandBetween(6, 5 + nj) 'choix aléatoire d'une colonne à déplacer
        Range(Cells(4, d), Cells(3 + nj, d)).Cut
        c = d
        While c = d
        c = Application.RandBetween(6, 5 + nj) ' choix aléatoire d'une colonne de destination
        Wend
        Range(Cells(4, c), Cells(3 + nj, c)).Insert shift:=xlToRight ' déplacement de la colonne au nouvel endroit
      'melange ligne 
       d = Application.RandBetween(4, 3 + nj) ' choix aléatoire d'une ligne à déplacer
        Range(Cells(d, 6), Cells(d, 5 + nj)).Cut
        c = d
        While c = d
        c = Application.RandBetween(4, 3 + nj) 'choix alétoire d'une ligne de destination
        Wend
        Range(Cells(c, 6), Cells(c, 5 + nj)).Insert shift:=xlDown ' déplacement de la ligne au nouvel endroit
    Next i
    For c = 6 To 5 + nj 'on recopie les couleurs de l'entête
    Range(Cells(4, c), Cells(3 + nj, c)).Interior.Color = Cells(3, c).Interior.Color
    Next c
End Sub
tomatito37 a écrit :

salut Steelson et merci pour ce début de réponse mais c'est pas tout à fait ça

idée : vingt jours : 20 personnes

chaque personne ne peut se trouver deux fois dans une même ligne

merci

j'espère que c'est plus clair

tomatito37

ok, dans ce cas voici une autre solution, toujours sans macro :

h2s04, steelson

merci pour tous ces renseignements, je teste et essaye de comprendre ce wk

je reviens vers le forum

merci

bonjour


le forum bonjour,

h2s04

steelson

juste un petit question pour les combinaisons

merci

C'est bien le cas ... sauf qu'en ajoutant du texte en ligne et colonne cela fausse les résultats !!

Dans ce cas, crée un onglet supplémentaire avec liaisons ...

j'ai quand même un doute, dans ce cas démasque l'onglet "pre-mélange", lui est bon mais la rotation est trop régulière ...

je regarde cela dans l'apm

salut le forum

steelson

fais à ton aise ça ne presse pas

merci

tomatito37

J'ai changé de stratégie ... je suis reparti de ton fichier initial.

Le but est de décaler (rotation) mais avec un nombre aléatoire également et unique.

le forum

h2s04

steelson

merci pour ce dernier ajout

tomatito37

Rechercher des sujets similaires à "tirage aleatoire jours"