Attribuer des postes en fonction d'un classement

Bonjour à tous

J'aimerais écrire quelques lignes de VBA pour gérer une liste de vœux d'étudiants

Ces étudiants passent un concours et sont classés

Ils formulent alors 3 vœux d'affectation chacun

Puis en fonction du nombre de place par poste ils sont affectés

Le problème c'est que j'ai plusieurs milliers d'étudiants et le faire manuellement prendrait un temps fou

Alors je vous ai fait un petit exemple de feuille

également j'ai une vague idée des étapes du code, malheureusement je ne sais le traduire en VBA....

Voici les étapes:

Ici les données sont sous formes de tableau donc je peux les trier par ordre de prioriré

Ce qui fait que la fonction recherche n'a pas besoin de tenir compte du classement de chacun

Il suffit que la recherche se fasse de haut en bas

Je pense (supposition) que le plus simple serait que :

1: création d'une copie de la liste des voeux et de la liste des places

Puis dans les copies:

2: Recherche "Nice" dans la colonne voeux 1

3: Sur une nouvelle page, recopie le premier nom suivit de "Nice" dans la colonne voeux 1, ici c'est Jean

4: soustraie 1 du nombre de postes pour Nice

5: Supprime toute la ligne correspondant au nom

6: Si le nombre de poste pour Nice > 0 --> refaire la même opération

6 bis: Si le nombre de poste pour Nice = 0 alors passer à une autre vile

8 : une fois toutes les villes effectuées, certains n'aurant pas leur premier choix

9: recommencer alors les mêmes opérations mais cette fois ci dans la colonne voeux 2

Mais sans changer le décompte des postes!

Si Nice = 0 plus aucun postes attribués

10: puis dans la colonne voeux 3

11: pour finir recopier ceux qui n'ont aucune attribution, avec la mention "aucune attribution"

Évidemment ce sera plus clair avec la feuille d'exemple!

Un grand merci à toute la communauté excel

D'avance, et rétrospectivement pour l'aide qu'elle m'a déjà fournie

Salut Lilounice,

je n'ai pas le temps tout de suite de multiplier les tests mais ça devrait fonctionner!

J'approfondis d'ici 2-3 heures!

A+

121affectations.xlsm (25.68 Ko)

Je connais aucune de ces fonctions!

ç à l'air de marcher!

Je vais lire apprendre et faire des essais et te dire ce qu'il en est

En tous cas merci pour ta réactivité

J'ai beau me creuser la tête j'ai du mal à l'adapter puisque je comprend pas toutes les fonctions...

J'ai vachement simplifié le tableau parce que il y a plein d'autres données et les colonnes ne sont pas à côté

Du coup j'ai essayé de faire une nouvelle page avec une organisation identique à l'exemple que je t'ai donné, puis de reporter les données du tableau en faisant des =Tableau5[@[Nom et prénom]]....

Mais je pense que la formule lit le contenu de la cellule et pas la valeur reporté non ?

parce que rien ne marche! (j'ai pris soins de changer les noms des pages)

En tous cas merci

Lilounice,

tu éviterais beaucoup d'ennuis si tu nous livrais un fichier réaliste et conforme à la réalité!

Change les noms (tutu, lili, lala nous suffit), les données confidentielles (bonbon et chocolat sont très bien aussi!) et envoie!

A+

En effet !

Je ne sais pas pourquoi, ça a fonctionné un moment puis boum: incompatibilité de type erreur 13....

Donc même si j'aime bien comprendre les codes que j'utilise là j'abandonne !

Je t'ai donc fait un exemple plus réaliste

Peut être que je comprendrais mieux

En tous cas merci à toi!

Bonjour,

Heu il est ou fichier ?

En prime, je te donne une autre solution que tu ne comprendras sans doute pas plus...

A+

91affectation-vg.xlsm (23.75 Ko)

En effet j'ai oublié le fichier ^^

LAID quand même un peu pourri ton réaliste...

Présence d'espace indésirable dans un onglet.

Doublons dans les Noms prénoms...

Tableaux avec des lignes vides... et des calculs en dessous !

Et en plus colonnes cachées

A+

J'avoue mais remplacer 130 noms c'est super long si je dois les imaginer tous

J'ai juste pris mon vrai document et j'ai supprimé les données confidentielles

J'aurais mieux fait d'en faire un nouveaux mais plus court

Je vais essayer voir

Merci

Bonsoir,

Onglet "Classement" : Enlever l'espace à la fin de "Classement__"

A+

Rechercher des sujets similaires à "attribuer postes fonction classement"