Recalcul auto des valeurs d’une liste

Je souhaite faire un truc simple à comprendre, mais qui demande beaucoup d'explications, et un niveau de VBA que je n'ai pas...

Je gère une liste de tâches à accomplir (voir PJ).

Chacune a un degré de priorité, qui se traduit par un chiffre dans la colonne E : plus le chiffre est petit, plus c’est urgent (en fait, il s’agit de priorités pour chaque jour, c’est donc d’abord le jour où une tâche doit être faite qui est trié, puis la priorité).

Au jour le jour, il arrive que des tâches deviennent ultra-prioritaires. Dans ce cas, je diminue la valeur dans la colonne E, j’effectue un tri et hop ! la tâche « remonte » dans l’ordre des priorités de ce jour.

Mais du coup, je me retrouve fréquemment à devoir modifier manuellement chaque valeur pour éviter que le minimum dérive vers -15 ou -20…

J’aimerais donc mettre en place une macro qui recalcule automatiquement les valeurs de priorité, pour qu’elles restent toujours entre 2 bornes, par exemple : - 5 et + 5 (que j’appelle bmini et bmaxi)

Si donc je rentre -6 dans une cellule de la colonne E, toutes les valeurs seront recalculées pour que -6 devienne bmini = -5, etc…

De même, si je rentre +6 dans la colonne E, toutes les cellules seront recalculées pour que +6 devienne bmaxi = +5, en conservant un minimum à -5 (toutes les valeurs étant arrondies à la 1ère décimale).

Je vois bien les calculs qu’il faut faire mathématiquement parlant (* voir + bas), mais je ne sais pas le programmer en VBA.

Dans le fichier joint, j’ai effectué les recalculs manuellement.

J’oubliais 3 complexités supplémentaires :

1 - filtrage :

Cette liste regroupe mes priorités quotidiennes pour plusieurs affaires différentes (3 lettres colonne G).

Pour rendre bien lisibles les priorités affaire par affaire, je filtre les lignes suivant le contenu de la colonne G (il suffit de cliquer sur les boutons « POU », « LIL » ou « CL » pour basculer d’une affaire à l’autre, ou de cliquer sur « TOUT » pour tout afficher).

Je voudrais donc que le recalcul de la colonne E n’affecte que les lignes affichées, pas celles qui sont masquées par le filtrage.

2 - valeurs non modifiables :

Mes priorités sont dans la colonne E. Quand, dans cette colonne, la valeur est > 7, les tâches ne sont pas concernées par la gestion des priorités.

Il faut donc que le recalcul n’affecte pas ces cellules.

3 - valeurs extrêmes qui n'atteignent pas les bornes :

Je voudrais éviter que les valeurs de la colonne E soient recalculées si une des bornes n'est pas atteinte.

Autrement dit : si la tâche la moins prioritaire vaut 3 alors que la borne haute (bmaxi) est fixée à 5, la valeur correspondant à la tâche la moins prioritaire reste inchangée à 3 (au lieu d'être recalculée à 5).

Quelqu’un saurait-il m’aider à faire ça ?!!!

Merci !

(*) côté maths, ça donne ça :

– j’appelle bmini et bmaxi les 2 bornes entre lesquelles doivent évaluer mes priorités

– j’appelle vmini une valeur qui dépasse la borne basse

– j’appelle vmaxi une valeur qui dépasse la borne haute

Chaque valeur x de la colonne E doit être recalculée comme suit pour devenir f(x) :

f(x) = (vmini – vmaxi) / (bmini – bmaxi) * x + (bmini * vmaxi – vmini * bmaxi) / (bmini – bmaxi)

C’est bête comme chou ! (vieux souvenir de mon prof de maths de 6ème).

13exemple.zip (30.77 Ko)

Bonsoir,

Un essai en Pj. En revanche sur un premier test j'ai écrasé vos données...

Soit dit en passant, je ne suis pas sûr d'avoir tout compris ^^

Cdlt,

Darzou

Merci, c'est presque ça, et c'est déjà magique !!!

Je dis : presque, parce que :

  • j'aimerais que les cellules de la colonne E dont la valeur est >7 ne soient pas recalculées
  • si les valeurs de la colonne E vont de -5 à +5 et qu'on entre une valeur de -6, par exemple, la cellule qui était à +5 redescend à +4,2, au lieu de rester à +5, je ne sais pas pourquoi.

Mais encore une fois : bravo, parce que c'est vraiment très proche de ce que je voulais obtenir !

Merci !

Je ne comprends pas votre exemple.

gloub a écrit :

- j'aimerais que les cellules de la colonne E dont la valeur est >7 ne soient pas recalculées

J'ai rajouté la condition.

gloub a écrit :

- si les valeurs de la colonne E vont de -5 à +5 et qu'on entre une valeur de -6, par exemple, la cellule qui était à +5 redescend à +4,2, au lieu de rester à +5, je ne sais pas pourquoi.

Ça fonctionnait déjà.

Cdlt,

Darzou

Merci de me suivre dans ces méandres.

j'aimerais que les cellules de la colonne E dont la valeur est >7 ne soient pas recalculées

J'ai insuffisamment expliqué ce cas de figure.

Dans la colonne E, il y a soit des valeurs de priorité, que je souhaite borner entre -5 et +5, soit des valeurs qui veulent dire : on verra ça plus tard (les valeurs > 7).

C'est pourquoi je ne souhaite pas qu'elle soient recalculées (si je rentre la valeur 8, ça reste à 8) ni qu'elles soient prises en compte dans le recalcul des autres (si je rentre 8, la cellule qui valait 5 reste à 5).

J'espère avoir été plus clair.

Ça fonctionnait déjà.

Bizarre : sur mon ordi, quand je saisis une valeur qui sort de l'intervalle (-5,+5), par exemple : -6, toutes les valeurs sont recalculées, y compris le maximum, qui valait +5 et redescend à +4,2 au lieu de rester à +5.

Hum... J'avais lu en diagonale dsl...

Un autre essai...

Bref ce que je dis de faire à la machine:

Dès qu'une valeur change en colonne E, pour toutes les valeurs du même projet, on rebase les données dans un intervalle [-5;5] sauf les valeurs >7 ou =5

Corrigez moi si je suis dans l'erreur.

Cdlt,

Darzou

Merci.

On y est presque, je crois !

Dernier détail : admettons qu'il y a, par exemple, 2 cellules de la colonne E dont la valeur est 5.

Dans la version actuelle, si je remplace 5 par 6 dans une des deux cellules, l'autre restera à 5.

Ce que je souhaite, c'est que cette cellule soit recalculée et passe à 4,9, par exemple.

Comme ça, la cellule que je viens de modifier manuellement sera bien à 1 extrémité de l'intervalle (-5,+5).

J'espère avoir été clair.

Merci encore.

Ça reste faisable mais ça revient au même que dans la version précédente où le 5 devenait 4,2. 4,2 étant la plus grande valeur<5.

En fait, quand on entre -6 par exemple, toutes les valeurs de la colonne E sont recalculées. Du coup :

- cette valeur de -6 revient à -5, c'est super

- s'il y avait d'autres valeurs à -5, elles ne bougent pas. Du coup, la hiérarchie n'est pas réorganisée (la tâche pour laquelle je viens d'entrer -6 n'est pas prioritaire sur celles qui étaient notées -5)

- ce qui était à 5 redescend à 4,2, alors que je préférerais que ça reste à 5

Kamoulox...

Présentez moi un exemple comme suit:

Colonne 1: Les valeurs initiales

Colonne 2: Les valeurs à obtenir après la saisie d'une valeur (précisez biensur quelle valeur vous saisissez et où vous la saisissez).

Cdlt,

Darzou

Merci de persévérer à m'aider !

Je joins un fichier où j'ai essayé d'être aussi clair que possible.

J'ai détaillé 2 cas de figure :

Dans le premier, le nombre saisi est -6.

Le recalcul le transforme en -5.

Les autres cellules qui valaient -5 sont transformées en -4,1.

Le max de la colonne était à 5, il reste à 5.

Dans le second, le nombre saisi est 9.

Comme 9 > 7, il n'est pas transformé.

Les autres valeurs restent inchangées.

J'espère que ça clarifie le truc.

Merci encore !!!

14exemple-2.xls (18.00 Ko)

Bonjour Forum !

Je me permets de relancer ce sujet, pour lequel j'ai reçu une aide précieuse, et j'ai l'impression d'être à un cheveu de la perfection.

Pour résumer : je souhaite que, quand une nouvelle valeur est saisie dans la colonne E, les cellules de la colonne soient recalculées pour qu'elles restent comprises entre 2 bornes (+ 5 et - 5).

Contraintes supplémentaires :

1- n'agir que sur les cellules affichées (il y a un filtre)

--> ça marche

2- n'agir que sur les valeurs < 7 (laisser inchangées des valeurs telles que 8 et 9)

--> ça marche

3- ne pas prendre en compte les valeurs > 7 pour le recalcul (entre 8 ou 9 n'entraine pas de recalcul)

--> ça marche

4- ne pas recalculer les cellules si la nouvelle valeur est comprise entre les 2 bornes (si la nouvelle valeur est 3, pas de recalcul)

--> ça marche

5- si la nouvelle valeur sort des bornes, ne pas modifier la valeur égale à l'autre borne (si on entre -6, les cellules = 5 restent = 5)

--> ça marche pas !!!

Si quelqu'un peut m'aider à régler la contrainte n°5, ce serait cool !

Merci !

Rechercher des sujets similaires à "recalcul auto valeurs liste"