comparer et trouver la meilleure personne adaptée à un poste à partir d'un fichier excel

Grizz

XLDnaute Nouveau
Bonjour à tous, j'aurais besoin d'aide pour mon projet(je suis débutant en macro excel), en effet j'ai un fichier excel avec les noms/prénoms de plusieurs personnes ainsi que leurs compétences(avec une note de 0 à 4). et je souhaite à partir de ce fichier de trouver la meilleur personne adaptée à un poste (une cible avec des compétences).
ce que je dois respecter :
- si la compétence cible pour le poste est égale à 0, celle-ci ne sera pas comparer au autre personne, sinon il faut la comparer au différentes personne de la table (faire une soustraction ligne par ligne + somme)
- à la fin je veux que ça m'affiche la personne la plus adapter a ce poste (la somme la plus petite des différentes soustraction )
j'espère que je suis assez claire pour vous.
je met un fichier test avec juste 3 personnes pour avoir une idée à quoi ça doit ressembler sachant que sur mon vrai fichier j'ai 200 personne à comparer pour choisir la meilleur personne pour un poste donné.
 

Pièces jointes

  • matricetest.xlsx
    19.8 KB · Affichages: 7

Grizz

XLDnaute Nouveau
Bonjour Sylvanu,
Merci pour ta réponse.
le résultat est correct ( mais totalement incompétent pour savoir comment tu as fait ^^')
mais je souhaite en effet faire ça avec des macros excel.
est ce que tu as une idée de comment faire ?
à part des manip basic je suis nul en macro et vba.
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
En PJ un essai.
Comme je ne comprenais pas, et surtout vous, ne comprenions pas comment ça marchait, j'ai changé de méthode. Plus simple à comprendre, mais plus long à écrire, mais au moins on comprends ce qu'on fait.

Pour chaque élève, pour chaque compétence, je fais la différence de la compétence et de la cible, puis je somme le tout.
Dans l'idéal la note est 0, le candidat est pile sur la cible.
Donc ensuite je cherche les trois premiers et les donne via une box.

NB : Si le nom des matrices est bien respecté ( et si la macro donne des résultats corrects ) il n'y a pas à retoucher à la macro.
 

Pièces jointes

  • matricetest.xlsm
    35.3 KB · Affichages: 8

Grizz

XLDnaute Nouveau
Merci sylvanu pour ton aide, c'est exactement ça ce que je voulais.
juste qd je repasse sur mon fichier de base il m'affiche un message d'erreur : "incompatibilité de type" et qd je fais un debogage c'est cette ligne là qui est affiché en jaune :
- " Matrice(NoLigne) = Matrice(NoLigne) + Abs(Target(1, NoColonne) - Competence(NoLigne, NoColonne)) "
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Avait vous correctement appelé les trois Matrices ? Je pense que oui, sinon il ne serait pas arrivé là.
Cependant il faut absolument que la largeur de Compétences soit la même que celle de Target.

Remplacez la ligne en erreur par ces trois là.
VB:
            Tg = Target(1, NoColonne)
            Comp = Competence(NoLigne, NoColonne)
            Matrice(NoLigne) = Matrice(NoLigne) + Abs(Tg - Comp)
C'est exactement la même chose sauf qu'on décompose.
On verra sur quelle matrice il trouve une erreur.
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
J'ai exactement la même erreur .... quand je crée une erreur sur une donnée des compétences .
Ici j'ai remplacé un chiffre par une lettre (i). Évidemment incompatibilité de type puisque je tente une addition.
Relancer la macro, quand la fenêtre erreur s'ouvre, fermez là par débogage.
Mettez votre curseur sans cliquer sur Tg et Comp. Vous verrez leur valeurs dans la petite fenêtre.
Vous devez avoir une valeur erronée. ( même un espace provoque une erreur )
Si c'est le cas, faites pareil sur NoLigne et NoColonne pour savoir où il a trouvé une erreur.
... et tenez moi au courant.

12.jpg
 

Pièces jointes

  • 12.jpg
    12.jpg
    43 KB · Affichages: 10

Grizz

XLDnaute Nouveau
en effet ça me donne ça
1579796485319.png

mais le soucis c'est que j'ai revérifier mon tableau avec CRTL+F mais y a pas de * j'ai plûtot ça
1579796565683.png


et les formules "=Si(;0;)" je ne comprends pas d'ou ils sorts ^^.
sachant que j'attribue mes notes avec un filtre dans le quelle y a une étoile que je mettais provisoirement le temps de recevoir les notes des personnes concernées :
1579796680685.png
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
:p:p:p:p C'était pas dans les specs ça !!!

En PJ une nouvelle version avec comme modifs :
1- Une sécurité si erreur ... comme une valeur non numérique ;) .
Je précise sur quelle ligne et quelle colonne l'erreur se trouve, et dans quelle matrice.
2- Avec 200 personnes, il y aura surement 2 Nathalie ou 2 Jean-Marc, j'ai donc rajouté les Noms.
Donc il faut appeler la matrice Nom : Noms , comme expliqué dans la feuille.
( pour la macro, il suffit de faire un copier et coller à la place de l'ancienne )


Au fait doit on gérer l' "*", c'est possible mais dans ce cas on ne sait pas si les résultats sont valables ou pas, ou on prévient à la fin que les résultats peuvent être erronés.
 

Pièces jointes

  • matricetest.xlsm
    37 KB · Affichages: 2

Grizz

XLDnaute Nouveau
Bonjour sylvanu, je vous remercie énormément, ça marche nickel pour moi, effectivement ça m'as permis de repérer les erreurs sur mon fichier source.
j'ai un autre petit soucis ^^' (que je n'ai pas préciser dans les specs au début...), j'ai des filtres sur ma liste de personne ( en fonctions de leurs services par exemple) et qd j'applique mon filtre et que je lance la macro , elle prends en compte toutes les personnes même celles qui ne sont pas afficher (pas concernée avec le filtre). j'ai essayé de modifié mes données d'entrée dans le programme mais je n'ai pas réussi...
est ce que vous aurez une idée de ce qu'il faut faire s'il vous plait
Merci encore pour votre aide ;)
 

Grizz

XLDnaute Nouveau
En effet ça arrive du coup que sur ma feuille certaines lignes sont masquées, et je souhaite en fait écrire un code qui dit : "Pour chaque ligne visible" ; c'est à dire que par exemple si la ligne 2 est masquée, je passe directement de la 1 à la 3 comme si elles se suivaient (j'ignore la ligne 2). J'ai essayer des choses mais pour l'instant rien ne marche...
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Grizz,

1- Une nouvelle version. Il y avait une "petite" erreur, si la compétence était plus grande que la cible ... ça dépréciait la note ! C'est ballot et rectifié.
J'ai ajouté le nombre de postulants et le nombre de critères non nuls, ainsi que 5 postulants avec leur note sur 10.

2- Le fait de masquer une ligne est purement visuel. Cette ligne existe toujours pour le VBA.
Je vais regarder si on peut détecter une ligne masquée. mais il faut que je fouille un peu.
Peut être une V5 aujourd'hui. :)
 

Pièces jointes

  • matricetest(V4).xlsm
    40.6 KB · Affichages: 2

sylvanu

XLDnaute Barbatruc
Supporter XLD
C'était pas si compliqué ! Mais à vérifier.

Juste une question : Si pour un critère donné le postulant est nul ( note 0 ) est ce rédibitoire ou non ?
Car pour l'insatnt ce ne l'est pas dans la macro proposée.
Lorsque je traitais ce sujet avec mon équipe, je mettez deux type de critères Rédibitoire et Expérience.
Un point rédibitoire non rempli et le postulant était écarté.
 

Pièces jointes

  • matricetest(V5).xlsm
    41.5 KB · Affichages: 3

Discussions similaires

Réponses
10
Affichages
413

Statistiques des forums

Discussions
315 134
Messages
2 116 614
Membres
112 811
dernier inscrit
shade1452