pb tache a effectuer sur excell (tri au hasard)

ober

XLDnaute Nouveau
bonjour
voila j'ai un petit probleme
je souhaiterai faire un tableau ou il y a une tache a effectuer chaque semaine et cette tache necessite 2 personnes j'ai environ une 1o noms differents pour cette tache et il faut que les deux personnes qui effectu cette tache soient choisi au hasard ou aleatoirement et la semaine prochaine deux autres personnes differentes etc... merci a la fin de la boucle la premiere personne a effectue la tache peut effectuer la tache avec un autre merci beaucoup j'espere avoir la solution au plus vite merci d'avance :) :) :)
 

porcinet82

XLDnaute Barbatruc
Salut Ober,

JE n'ai pas utiliser de formules car je ne les connaits pas ou tres peu, j'ai utiliser une macro que tu trouveras en faisant Alt+F11, puis en allant voir dans le module 1.

Si tu veux plus de renseignements, d'explications, ou un coup de main pour pouvoir adapter a ton fichier refais signe, avec eventuellement une PJ avec exemple.

@+
 

ober

XLDnaute Nouveau
bonjour porcinet
merci pour de tes conseils , j'ai un autre pb la solution que tu as faites est valable sur deux semaines est ce que cela peut se faire sur toutes les semaines de l'année tout en changeant de noms à chaque fois
encore merci ;) ;) :)
 
O

ober

Guest
salut porcinet merci pour ton tutorial poor zippeet desole pour mon amateurisme en informatique donc je te joint le fichier a+ :) :) :woohoo: [file name=tachesplanifies.zip size=1606]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/tachesplanifies.zip[/file]
 

Pièces jointes

  • tachesplanifies.zip
    1.6 KB · Affichages: 41

porcinet82

XLDnaute Barbatruc
Salut Ober,

Ton fichier ma permis de faire quelque chose, mais tu ne m'avais pas donné la liste des noms, donc j'ai du improviser. Je suppose que tu as une liste de 108 noms (étant donné qu'il y a 54 semaines dans une année) qui se trouve dans la colonne A.

Regarde le fichier joint et tiens moi au courant si ce n'est pas encore tout a fait ca.

[file name=Ober_v2.zip size=10469]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Ober_v2.zip[/file]

@+
 

Pièces jointes

  • Ober_v2.zip
    10.2 KB · Affichages: 69
O

ober

Guest
salut porcinet
effectivement je me suis mal faits comprendre
donc j'ai bien une liste qui peut varier entre 5 et15 personnes( ou plus), que cette tache necessite deux personnes et ces personnes doivent etre choisi au hasard , mais une fois que les 5 ou 15 personnes soient deja tous passé une fois ,on peut les reprendre let les remelanger avec d'autres personnes deja passe
exemple si pierre et jack effectu la tache semaine 1 ,andre et thierry semaine 2 et lorsque les 15 personnes sont passe rien n'empeche de choisir pierre et thierry en semaine 8 :eek: :eek: :eek: :silly:
merci et a+ ton message que j'ai recu confirme t'il bien ce que je dis??
 

porcinet82

XLDnaute Barbatruc
Salut Ober,

Ok, je vois bien ce qu'il faut faire, la modif n'est pas tres longue a réaliser, mais je ne suis pas sur de pouvoir te faire ca avant lundi ou mardi.

Juste une dernière question pour etre sur d'avoir bien compris, en faite, les personnes reviennent plusieurs fois (je suppose le meme nombre de fois dans la mesure du possible), mais tu ne veux pas les memes couples (egalement dans la mesure du possible).

@+
 
O

ober

Guest
salut porcinet
c'est exactement ca ,nous sommes bien d'accord il y a environ entre 5 et 15 personnes differentes peut etre plus, par contre peux tu m'expliquer comment tu fait. la demarche a suivre pour faire cette macro ok merci et a+ :) :)
 

porcinet82

XLDnaute Barbatruc
Salut Ober,

Je viens de reflechir a la manière de faire la mouvelle macro, mais je ne sais pas trop comment m'y prendre.
Le problème est que si il y a un nombre impair de personne, ca fou le bordel et je ne sais pas trop comment le gerer, est-ce possible d'avoir seulemnt un nombre pair?
Tu veux forcement que toutes les personnes passent au moins une fois avant qu'elles repassent une seconde fois?

Sinon pour la macro, je t'ai commenter la dernière que je t'ai proposée, mais elle ne fonctionne pas dans le cas de figure que tu souhaites. Enfin peut etre que tu pourra essayer de la modifier par toi meme.
Pour le code, copie/colle sous vba pour que ce soit plus lisible.

Code:
Sub nom_alea()
Dim nb_alea As Byte
Dim nom_1 As String
Dim nom_2 As String
Dim col As Variant
Dim plage As Range
'Declaration des variables

For j = 2 To 55
'pour j allant de 2 a 55 (nombre de semaines correspondant au colonnes B a BC)
refais:
'retour du goto qui est plus bas (GoTo refais)
    Randomize
    'Fonction qui permet de remettre a 0 la fonction aleatoire
    nb_alea_1 = Int((10 * Rnd) + 1)
    'la variable nb_alea_1 resoit un entier entre 1 et 10
    nom_1 = Cells(nb_alea_1, 1).Value
    'nom_1 recoit la valeur de la cellule ligne nb_alea_1 et colonne 1
    
retour:
'retour du goto qui est plus bas (GoTo retour)
    Randomize
    'Fonction qui permet de remettre a 0 la fonction aleatoire
    nb_alea_2 = Int((10 * Rnd) + 1)
    'la variable nb_alea_2 resoit un entier entre 1 et 10
    If nb_alea_2 ‹› nb_alea_1 Then
    'si nb_alea_2 est different de nb_alea_1 alors
        nom_2 = Cells(nb_alea_2, 1).Value
        'nom_2 recoit la valeur de la cellule ligne nb_alea_2 et colonne 1
    Else: GoTo retour
    'sinon on retourne a la ligne de code retour:
    'on refais la procédure jusqu'a ce que nb_alea_2 ‹› nb_alea_1
    End If
    If Cells(3, 2).Value = '' Then
    'si la cellule B3 est vide alors
        Cells(3, j).Value = nom_1
        'la cellule ligne 3 colonne j recoit nom_1
        Cells(4, j).Value = nom_2
        'la cellule ligne 4 colonne j recoit nom_2
    Else
    'sinon
        Range('IV4').Select
        'je me positionne en IV4
        Selection.End(xlToLeft).Select
        'je reviens vers la gauche pour trouver la derniere cellule non vide
        col = ActiveCell.Address
        'la variable col recoit l'adresse de la derniere cellule non vide
        Set plage = Range('B3:' & col)
        'plage recoit la plage de cellule B3:B & col
        For Each cel In plage
        'pour toutes les cellules de la plage plage
            If cel = nom_1 Then GoTo refais
            'si la cellule cel est egale a nom_1 alors retour a la ligne refais:
        Next cel
        For Each cel In plage
        'pour toutes les cellules de la plage plage
            If cel = nom_2 Then GoTo retour
            'si la cellule cel est egale a nom_2 alors retour a la ligne retour:
        Next cel
        Cells(3, j).Value = nom_1
        'la cellule ligne 3 colonne j prend la valeur  de la variable nom_1
        Cells(4, j).Value = nom_2
        'la cellule ligne 4 colonne j prend la valeur  de la variable nom_2
    End If
Next j
End Sub

Tiens moi au courant, je ne laisse pas tombé.

@+
 
O

ober

Guest
salut porcinet
oui tu peux mettre un chiffre pair et dans la mesure du possible toutes les personnes passent un fois avant qu'll repassent une seconde fois autrement ce n'est pas trop graves :) j'ai un peu de mal a copier/coller le code, connait tu un tutorial qui apprend à faire des macros ? a+ et encore merci .
 

Discussions similaires

Statistiques des forums

Discussions
312 224
Messages
2 086 409
Membres
103 201
dernier inscrit
centrale vet