répartition sous VBA

  • Initiateur de la discussion Initiateur de la discussion judu
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

judu

XLDnaute Nouveau
bonjour

j'aimerais mettre en place un fichier pour mon boulot

j'arrive à générer des listes d'ouvriers et à calculer mes besoins mais j'aimerais répartir les gens aléatoirement sur les postes, tout en gardant en vue le critère "formation" et évidement sans doublon dans le choix de noms... (difficile de séparer un ouvrier en 2, rare sont ceux qui acceptent...)

je met en PJ un fichier pour illustrer ce que j’essaie de faire:

feuille 1, nous avons les postes possibles et les gens formés pour chaque poste
feuille 2, le nombre d'ouvriers nécessaires sur chacun des postes
enfin sur la feuille 3, la répartition aléatoire de personnes sur les postes

j'aimerais de l'aide pour une macro qui choisi dans la feuille 1, le nombre de personnes indiqués pour chaque poste dans la feuille 2 et créée la liste de la feuille 3, toujours sans doublons évidemment...

pensez vous pouvoir m'aider?

merci d'avance
 

Pièces jointes

hello,

je suis en train d'essayer vos solutions, j'ai un souci avec celle de youky,

lorsque je l'adapte a mon fichier, plus rien ne marche
la première fois j'obtenais une liste mais toutes équipes confondues je pense avoir corrigé le PB
mais maintenant dès le lancement de la macro j'ai un message d'erreur...
upload_2018-1-20_15-14-48.png


et le débogueur s'arréte sur une ligne ou je ne vois pas d'erreur:
upload_2018-1-20_15-15-53.png


une idée?
 
Hello,
J'ai ajouté du code en Userform1 (ici en gras)

Private Sub UserForm_Initialize()
With Feuil4
Set dico = CreateObject("Scripting.Dictionary")
a = .Range("A2:A" & .[A65000].End(xlUp).Row)
For i = LBound(a) To UBound(a)
dico(a(i, 1)) = ""
Next i
ListBox1.List = Application.Transpose(dico.keys)
On Error Resume Next
For k = 0 To ListBox1.ListCount - 1
ListBox1.Selected(k) = Feuil3.ListBox1.Selected(k)
Next

End With
End Sub

EDIT: il est préférable de remplacer on error par
'On Error Resume Next
If Feuil3.ListBox1.ListCount = 0 Then Exit Sub

Bruno
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
404
Réponses
5
Affichages
330
Retour