Créer des équipes au hasard (ou presque...)

antoineh

XLDnaute Nouveau
Bonjour,

Je rejoins la plateforme alors que je viens à peine de m'initier à VBA... Vous excuserez d'avance la naïveté de mes questions mais là, j'ai beau essayé de me débrouiller, je bloque !!

Je travaille à un évènement par équipe entre différentes écoles. Je souhaiterais créer des équipes (notées 1, 2, 3, ... 193) de 2 ou 3 coéquipiers. Seulement les membres d'une même équipe doivent faire partie d'une même école... C'est là le hic : comment répartir en fonction d'un nombre de coéquipiers (2 ou 3, avec une préférence pour 3) ET d'un nombre de personnes issu d'une certaine écoles (2,3,4, ou plus)...

En somme si j'ai 3 personnes d'une certaine école ça me fait une équipe, si ils sont 4 ça fait 2 équipes de 2, si ils sont 5, une équipe de 2 et une de 3, si 6, deux équipes de 3, etc...

J'ai réussi à trier la liste de participants en fonction de leur école avec VBA mais je ne parviens pas à attribuer les numéros d'équipes...

:confused:

heelp! merci beaucoup d'avance!
 

Pièces jointes

  • équipe.xlsm
    16.6 KB · Affichages: 253

solquagerius

XLDnaute Junior
Re : Créer des équipes au hasard (ou presque...)

Salut !
Juste pour savoir si j'ai bien compris :
T'as un fichier excel disons avec une colonne avec le nom des participants et dans la colonne d'après le nom de l'école à laquelle il appartient. Le but est de former des équipes de 2 ou 3, mais avec des gens d'une même école !
et tout cela aléatoirement ? (on prend 3 types d'une école au hasard et on les mets dans la même équipe ?)
 

antoineh

XLDnaute Nouveau
Re : Créer des équipes au hasard (ou presque...)

C'est ça ! regarde mon fichier, il y a des participants qui viennent d'un peu partout, il se font trier par école mais après il faut leur attribuer des équipes... le début du programme marche pour la première délégation mais après ça bug, j'arrive pas à passer à l'équipe 2 puis 3, etc.
a mon avis dans l'idéal le programme doit compter le nombre de participants pour chaque école, la subdiviser en équipes et lui attribuer des numéros d'équipes...
 

antoineh

XLDnaute Nouveau
Re : Créer des équipes au hasard (ou presque...)

salut solquagerius,

c'est ça !
A mon avis, le programme devrait trier les participants (ça c'est fait), compter les membres par écoles, les répartir en équipes de 2 ou 3 (sachant qu'il faut maximiser les équipes de 3...) puis leur donner un nom (simplement 1,2,3, etc.)...

est-ce plus clair ?
 

antoineh

XLDnaute Nouveau
Re : Créer des équipes au hasard (ou presque...)

c'est ça !
A mon avis, le programme devrait trier les participants (ça c'est fait), compter les membres par écoles, les répartir en équipes de 2 ou 3 (sachant qu'il faut maximiser les équipes de 3...) puis leur donner un nom (simplement 1,2,3, etc.)...

est-ce plus clair ?
 

antoineh

XLDnaute Nouveau
Re : Créer des équipes au hasard (ou presque...)

lol, c'est absolument génial ! ça fait exactement ce que je veux, en plus on peut rajouter des écoles, d'autres membres, tout se met à jour! :p et en 1/4 d'heure !
j'ai eu 8 séances de 3h en VBA alors je ne comprends pas tout ! je veux bien tes commentaires :D
je regarde ça de plus prêt en essayant de l'adapter à mes feuilles, je reviens vers toi en cas de soucis.

++ et merci encore
 

antoineh

XLDnaute Nouveau
Re : Créer des équipes au hasard (ou presque...)

re-, solquagerius,

bon j'essaie d'adapter mais j'avoue que j'avais simplifié le problème et je me retrouve maintenant coincé...

voici un fichier plus près de ce que je souhaite... La liste des participants est dans le premier onglet. Je voudrais dans le deuxième onglet la liste des participants par écoles et la répartition par équipes, exactement comme tu l'as fait. Seulement après j'ai des fonction RechercheV pour associer aux équipes un pays (qui peuvent être mélangés afin de donner différentes répartitions)... or quand j'adapte ton programme il m'efface toute la feuille...

pourrais-tu adapter ton sublime programme à mes deux onglets ?!

merci beaucoup, je te laisse regarder le fichier, reviens vers moi si besoin.

@+
 

antoineh

XLDnaute Nouveau
Re : Créer des équipes au hasard (ou presque...)

... bon, je vais être très très lourd là :p mais il y a un truc qui ne fonctionne plus !...

avant ma présentation était comme ça :
Prénom ; Nom ; Ecole ; Numéro d'équipe ; Pays

et avec cette belle liste, je créé des étiquettes dans word!... avec ça :


Sub PilotageWord()
' Création de l'objet word, et attribution d'une valeur
' Attention, pour pouvoir utiliser ces méthodes il faut aller dans Outils/Références et cocher la case "Microsoft Word 12.0 Object Library"
Dim MyWord As Object
Set MyWord = New Word.Application

' Objets utiles au parcours du tableau
Dim nbLignes, indexLigne
Dim initTab As Range

'Initialisation
indexLigne = 1
nbLignes = 0

' On dit où se trouve la première case
Set initTab = Range("A1")
' Ouvrir Word
MyWord.WindowState = wdWindowStateMaximize
MyWord.Visible = True
' Code de Macro Word :
' Création d'un nouveau document
MyWord.Documents.Add

'On compte le nombre de lignes de la table
While initTab.Offset(nbLignes + 1, 0) <> 0
nbLignes = nbLignes + 1
Wend

' Tableau
MyWord.ActiveDocument.Tables.Add Range:=MyWord.Selection.Range, NumRows:=1, NumColumns:= _
2, DefaultTableBehavior:=wdWord9TableBehavior, AutoFitBehavior:= _
wdAutoFitFixed

With MyWord.Selection.Tables(1)
If .Style <> "Grille du tableau" Then
.Style = "Grille du tableau"
End If
.ApplyStyleHeadingRows = True
.ApplyStyleLastRow = False
.ApplyStyleFirstColumn = True
.ApplyStyleLastColumn = False
.ApplyStyleRowBands = True
.ApplyStyleColumnBands = False
End With


'On recompte le nombre de lignes de ta table
nbLignes = 0
While initTab.Offset(nbLignes, 0) <> 0
nbLignes = nbLignes + 1
Wend

'Pour chaque ligne de la table, on ajoute une case au tableau
While indexLigne < nbLignes
With MyWord.Selection
'.Font.Bold = True
.Font.Size = 12
'.Font.Name = "Arial"
End With
MyWord.Selection.TypeText Text:=initTab.Offset(indexLigne, 0).Value & " " & _
UCase(initTab.Offset(indexLigne, 1).Value)

MyWord.Selection.TypeParagraph
MyWord.Selection.TypeParagraph
MyWord.Selection.TypeParagraph

With MyWord.Selection
.Font.Bold = True
.Font.Size = 24
'.Font.Name = "Arial"
End With
MyWord.Selection.TypeText Text:=UCase(initTab.Offset(indexLigne, 4).Value)

MyWord.Selection.ParagraphFormat.Alignment = wdAlignParagraphCenter

MyWord.Selection.Font.Size = 12
MyWord.Selection.TypeParagraph
MyWord.Selection.TypeParagraph
MyWord.Selection.TypeParagraph

With MyWord.Selection
.Font.Italic = True
.Font.Size = 11
'.Font.Name = "Arial"
End With
MyWord.Selection.TypeText Text:="Ecole : " & initTab.Offset(indexLigne, 2).Value
MyWord.Selection.ParagraphFormat.Alignment = wdAlignParagraphRight

MyWord.Selection.MoveRight Unit:=wdCell
indexLigne = indexLigne + 1
Wend

' Impression
'MyWord.Application.PrintOut Filename:="", Range:=wdPrintAllDocument, Item:= _
' wdPrintDocumentContent, Copies:=1, Pages:="", PageType:=wdPrintAllPages, _
' ManualDuplexPrint:=False, Collate:=True, Background:=True, PrintToFile:= _
' False, PrintZoomColumn:=0, PrintZoomRow:=0, PrintZoomPaperWidth:=0, _
' PrintZoomPaperHeight:=0
' Ecriture d'un texte
' MyWord.Selection.TypeText ActiveCell.Value
'Enregistrement
'MyWord.ActiveDocument.SaveAs "essaiTableau.docx"
'Fermeture du document
' MyWord.ActiveDocument.Close


' Libération de la mémoire
Set MyWord = Nothing
End Sub



mais alors maintenant ça ne marche pluus ! tu saurais adapter l'un ou l'autre des programmes ?! après c'est fini lol !

merci bcp
 

antoineh

XLDnaute Nouveau
Re : Créer des équipes au hasard (ou presque...)

salut!

merci, maintenant mon publipostage fonctionne à merveille ! Par contre je viens de me rendre compte que ce n'est pas le cas des créations d'équipe en fait !! :D

je viens de remarquer qu'il y a des équipes à cheval sur deux écoles... or il faut qu'une équipe soit de trois (ou deux si pas le choix) et de la même école...

voilà de quoi te challenger ! :p
 
Dernière édition:

Discussions similaires

Réponses
5
Affichages
329

Membres actuellement en ligne

Statistiques des forums

Discussions
312 429
Messages
2 088 351
Membres
103 823
dernier inscrit
ben talha redouane