Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Distribution du travail par noms

16 réponses
Avatar
Denys
Bonjour,

J'ai 9 feuilles excel nomm=E9es comme suit: Employ=E9s, R=E9sultats, Lundi,=
Mardi, Mercredi, Jeudi, Vendredi, Samedi, Dimanche

Sur la feuille R=E9sultats, j'ai g=E9n=E9ralememt entre 1600 et 2000 lignes=
d'information de la colonne A =E0 la colonne Y.

Dans la feuille r=E9sultats, il y a une date de rapport en colonne A. Avec =
une macro, je r=E9partis le travail du lundi dans la feuille lundi etc....

Si je suppose que le lundi il y a 287 =E9l=E9ments, le mardi 323 etc.... je=
souhaiterais pouvoir mettre en colonne Z le pr=E9nom des employ=E9s qui au=
ront =E0 traiter l'information.

Donc, comment avoir une mcaro qui distribuerait le pr=E9nom en colonne Z se=
lon le nombre souhait=E9.. Par exemple lundi je veux que Marc ait 75 items,=
Paul 38, Pierre 42 etc....

En colonne A de la feuille Employ=E9s, j'aurais le nom des employ=E9s, en p=
artant de la ligne 4. TotDist veut dire Total Distribu=E9 et le montant ins=
crit dans les cellules B3 =E0 H3 serait le total des cellules de la colonne=
correspondate.

L'usager pourrait donc inscrire le montant =E0 distribuer =E0 chaque employ=
=E9.=20

Col A B C D E F G H
Employ=E9s Lundi Mardi Mercredi Jeudi Vendredi Samedi Dimanche
Total 238 361 222 352 289 84 3
TotDist 238 0 0 0 0 0 0
Paul 38 =09
Pierre 74 =09
Jos=E9e 44 =09
Lucie 59
Daniel 23 =09
Monique 0 =09
=20
Ensuite, et c'est l=E0 o=F9 j'ai besoin de votre aide, l'usager n'aurait qu=
'=E0 cliquer sur un bouton afin que le nombre exact de lignes soit assign=
=E9 =E0 chaque employ=E9 par jour correspondant dans la colonne Z....=20

Par exemple, si je veux distribuer 38 items =E0 Paul le lundi, il faudrait =
que le nom Paul apparaisse dans la colonne Z 38 fois (donc de Z2 =E0 Z39) P=
ar la suite, si le nom de Pierre y est 74 fois, ce devrait =EAtre =E0 parti=
r de Z40 jusqu'=E0 Z114 etc... etc pour tous les jours de la semaine...

Est-ce que quelqu'un saurait comment s'y prendre ?

Merci pour votre temps

Denys

10 réponses

1 2
Avatar
GL
Le 31/03/2015 15:53, Denys a écrit :
Bonjour,

J'ai 9 feuilles excel nommées comme suit: Employés, Résultats, Lundi, Mardi, Mercredi, Jeudi, Vendredi, Samedi, Dimanche

Sur la feuille Résultats, j'ai généralememt entre 1600 et 2000 lignes d'information de la colonne A à la colonne Y.

Dans la feuille résultats, il y a une date de rapport en colonne A. Avec une macro, je répartis le travail du lundi dans la feuille lundi etc....

Si je suppose que le lundi il y a 287 éléments, le mardi 323 etc.... je souhaiterais pouvoir mettre en colonne Z le prénom des employés qui auront à traiter l'information.

Donc, comment avoir une mcaro qui distribuerait le prénom en colonne Z selon le nombre souhaité.. Par exemple lundi je veux que Marc ait 75 items, Paul 38, Pierre 42 etc....

En colonne A de la feuille Employés, j'aurais le nom des employés, en partant de la ligne 4. TotDist veut dire Total Distribué et le montant inscrit dans les cellules B3 à H3 serait le total des cellules de la colonne correspondate.

L'usager pourrait donc inscrire le montant à distribuer à chaque employé.

Col A B C D E F G H
Employés Lundi Mardi Mercredi Jeudi Vendredi Samedi Dimanche
Total 238 361 222 352 289 84 3
TotDist 238 0 0 0 0 0 0
Paul 38
Pierre 74
Josée 44
Lucie 59
Daniel 23
Monique 0

Ensuite, et c'est là où j'ai besoin de votre aide, l'usager n'aurait qu'à cliquer sur un bouton afin que le nombre exact de lignes soit assigné à chaque employé par jour correspondant dans la colonne Z....

Par exemple, si je veux distribuer 38 items à Paul le lundi, il faudrait que le nom Paul apparaisse dans la colonne Z 38 fois (donc de Z2 à Z39) Par la suite, si le nom de Pierre y est 74 fois, ce devrait être à partir de Z40 jusqu'à Z114 etc... etc pour tous les jours de la semaine...

Est-ce que quelqu'un saurait comment s'y prendre ?



Oui facile ;-) Il vous faut la somme cumulée : dans votre exemple :

Paul 38 38
Pierre 74 112
Josée 44 156
Lucie 59 215
Daniel 23 238
Monique 0 238

Ensuite vous inscrivez une formule matricielle en cellule Z1 :
{=SOMME(SI(LIGNE()>$K$4:$K$9;1))}
($K$4:$K$9 est l'adresse de la somme cumulée)

Et vous recopiez cette formule vers le bas : vous aurez 38 zéros pour
Paul, 74 "1" pour Pierre, 44 "2" pour Josée etc. Avec

=INDEX($A$4:$A$9;Z1+1)
($A$4:$A$9 est l'adresse des noms d'employés)

vous récupérez les noms.

Florent.




Merci pour votre temps

Denys

Avatar
MichD
Bonjour,

Un petit fichier exemple pour illustrer le propos.
Avatar
Denys
Bonjour Florent,

Merci beaucoup....seulement, ça ne fonctionne que pour le premier nom...p our le reste, le nombre ne correspond pas...probablement parce qu'excel ne prend pas en considération les premiers résultats...

Dans l'exemple, cela fonctionne pour les lignes 1 à 55, ensuite 56 à 70 et ensuite les deux suivantes...

Carol 55
Cathy 70
Monique 72
Daniel 72
Sebastien72

Ce qui me semble logique.... à moins que j'aie manqué quelque chose...

http://cjoint.com/?3CFszKoE5k6

Le fichier donne les résultats

Merci

Denys
Avatar
GL
Le 31/03/2015 18:13, Denys a écrit :
Bonjour Florent,

Merci beaucoup....seulement, ça ne fonctionne que pour le premier nom...pour le reste, le nombre ne correspond pas...probablement parce qu'excel ne prend pas en considération les premiers résultats...

Dans l'exemple, cela fonctionne pour les lignes 1 à 55, ensuite 56 à 70 et ensuite les deux suivantes...

Carol 55
Cathy 70
Monique 72
Daniel 72
Sebastien72

Ce qui me semble logique.... à moins que j'aie manqué quelque chose...



Non je ne vois votre problème, ça semble fonctionner.
Vous avez peut-être validé la formule matricielle en un seul morceau,
ici, c'est bien une formule matricielle, mais qui renvoie un scalaire,
donc il faut la valider sur une seule cellule... à recopier vers le bas.

http://cjoint.com/?3CFtGOfcZY2

A moins que j'ai, à mon tour, raté quelque chose ;-)

Bonne soirée.


http://cjoint.com/?3CFszKoE5k6

Le fichier donne les résultats

Merci

Denys

Avatar
Denys
Bonjour Florent,

Je vois où était mon erreur.....c'était de ne pas avoir additionné le nombre de lignes comme vous avez fait en colonne F....

Ca va être plus facile maintenant....Je vais mettre tout ça en VBA..

merci infiniment....

Denys

P.S. si j'ai un problème... je me permettrai de revenir.... Merci encor e...
Avatar
MichD
Désolé, code corrigé.


http://cjoint.com/?ECFut6gQXHj
Avatar
Denys
Le mardi 31 mars 2015 14:08:11 UTC-4, MichD a écrit :
Désolé, code corrigé.


http://cjoint.com/?ECFut6gQXHj



Bonjour Denis

Super.... le nombre de lignes n'étant jamais le même à tous les jours , ni les mêmes employés, je vais essayer d'adapter.... Merci infiniment , je vais sauver beaucoup de temps...

Denys
Avatar
GL
Le 31/03/2015 21:13, Denys a écrit :
Le mardi 31 mars 2015 14:08:11 UTC-4, MichD a écrit :
Désolé, code corrigé.


http://cjoint.com/?ECFut6gQXHj



Bonjour Denis

Super.... le nombre de lignes n'étant jamais le même à tous les jours, ni les mêmes employés, je vais essayer d'adapter.... Merci infiniment, je vais sauver beaucoup de temps...

Denys



On dit gagner du temps, en français, et sauver en anglais...
Bonne soirée.
Avatar
MichD
Dans une autre feuille ou dans la même feuille, tu crées une liste
d'employés avec le nombre d’emplois qui leur sont attribués.

Je crois que la procédure peut s'appliquer, peu importe de nombre d'employés.

http://cjoint.com/?EDba5rOtQcK
Avatar
MichD
Dans la procédure, il y a une coquille,

identifie cette ligne de code :
Nb = Application.RandBetween(1, 341)

Et

remplace-la par celle-ci :
Nb = Application.RandBetween(1, X)
1 2