Re : Arrondis intelligents?
Bonjour à tous,
Je mets un petit truc que j'ai fait et qui a l'air de fonctionner.
En cliquant sur "optimisation", les valeurs du tableau de base (qui est maintenant à droite avec la colonne "Objectif" en tête) sont traitées par VBA et les résultats vont s'afficher en B16:F24 avec toujours la vérif. "erreur..."
Je n'ai pas essayé mais normalement, en gardant les cellules bleues que j'ai nommées on doit pouvoir ajouter des vendeurs et des produits, en modifiant les valeurs "Nb vendeurs" et "Nb produits" en conséquence.
La feuille est nommée par son nom de code (j'ai mis JY1 - voir dans VBA à "Propriétés") ; cela te permet si nécessaire de renommer comme tu veux l'onglet de ta feuille.
J'ai travaillé avec des tableaux VBA pour que ce soit rapide. Je n'ai cependant aucune idée du temps de traitement si tu as 60000 produits et 250 vendeurs...😀
Si nécessaire, on pourrait supprimer le bouton et lancer le code en détectant une modif. mais, pour ce faire, il faudrait recenser tout ce qui peut modifier le tableau de base ; il faudrait donc désigner les zones qui, lorsqu'une de leurs cellules est modifiée, entraînent une modification dans le tableau de base l...à moins que quelqu'un ait une autre idée... (si je le lance systématiquement à chaque recalcul cela va traîner...)
Le principe :
- on copie les données valeur/vendeur et objectif dans un tableau
- on recopie dans un second tableau en ne gardant que la partie entière et l'on garde les parties décimales seules dans le premier tableau
- on cherche par ligne, le maxi de la ligne de parties décimales colonne par colonne
- tant que le total des parties entières de la ligne est inférieur à l'objectif on ajoute 1 à la valeur entière correspondant à la colonne du maxi. (on met le maxi des parties décimales à zéro afin de l'oublier au coup d'après et trouver un "nouveau" maxi)
J'ai choisi le maxi car c'est celui qui était le plus près de basculer vers l'unité supérieure qui doit être majoré.
Cordialement