Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

répartition sous VBA

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

  • demo.xlsx
    10.2 KB · Affichages: 20

youky(BJ)

XLDnaute Barbatruc
Bonjour à tous, Judu, Job,
J'ai apporté quelques amélioration pour facilité.
Notamment une listebox dans l'onglet pour visualiser les équipes présentes.
Bruno
 

Pièces jointes

  • demo (1).xlsm
    35.8 KB · Affichages: 14

judu

XLDnaute Nouveau
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...


et le débogueur s'arréte sur une ligne ou je ne vois pas d'erreur:


une idée?
 

youky(BJ)

XLDnaute Barbatruc
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:

job75

XLDnaute Barbatruc
Re judu,

UserForm1.Show est surligné parce qu'il y a un bug dans la macro UserForm_Initialize.

Raison (assez évidente) : dans votre fichier la feuille de CodeName Feuil4 n'existe pas...

A+
 

Discussions similaires

Réponses
2
Affichages
124
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…