Calculer une répartition à partir de 3 conditions

EDIT: j'ai réussis a faire tourner le programme avec une somme à 200.000€ cela m'as prit 3minutes 45 secondes.

Par contre une fois la macro lancé faut vraiment toucher a rien du tout faut laisser tourner le PC sans rien toucher changer de fenêtres etc.

Les pourcentages sont un peu biaisés, les premiers % sont tres long et vers la fin ca s'accelere mais pas grave c'est juste une indication qui confirme que le prog avance !

j'attend ton retour

A+

J'ai regarder ton exemple précédent (et un peu le code VBA pour comprendre la diff).

Est-il possible de faire uniquement le calcul pour une colonne ? (je n'ai pas besoin de faire du multi-calcul)

J'ai été plus vite que la musique ! je me suis dit que si t'avais plusieurs calcules a faire autant les faites en une fois pour gagner du temps.

Du coup voici une V5 avec quelques corrections de bug, certaines combinaisons n'étaient pas prisent en compte.

Niveau temps d'éxécution t'es comment sur ton PC ?

J'ai modifié ton code pour ne plus mettre les cases de la feuille à jour mais faire les calculs en interne via des variables. Ainsi que 2-3 paramètres en externe et un arrêt dès le premier résultat satisfaisant.

Ceci me permet un énorme gain de temps d’exécution. Je suis actuellement <1sec pour une valeur de 160k€.

Il me reste un problème sur les petites sommes car il n'arrive pas toujours à trouver si par exemple je n'autorise quasiment pas de jours sur la condition 3. Et je n'ai pas de message d'erreur dans ce cas, la macro ce termine juste sans rien MAJ (logique vu qu'elle ne passe pas dans le IF).

6suiviredoushi.xlsm (33.63 Ko)

Wooooow c'est le feu t'as macro... je vais aller me coucher je crois

Bien joué,

J'ai fait deux modifs:

MaxC1 = Range("B13").Value - 1
MaxC2 = Range("B14").Value - 1
MaxC3 = Range("B15").Value - 1

-1 car sinon dans tas boucle il allait tjrs a une valeur de plus que la case (je sais pas trop pk en réalité..) mais si tu bridé la condition 1 à 3 jours il pouvait en résultat trouver 4 jours.

Ensuite:

If Abs(TargetTTC - Target) < Ecart Then
C1bis = c1
C2bis = c2
C3bis = c3
End If

L'idée c'est à chaque boucle de garder en mémoire la meilleure combinaison trouvée, comme ca si à la fin aucunes combinaisons n'as d'écart inférieur à 21 et bien on rappelle nos c1bis, c2bis, c3bis pour avoir à défaut la combinaison la plus proche

Quest-ce-t'en pense?

EDIT: met la variable ecart en long ! sinon ca va poser problème lorsque tu auras des grandes sommes ! elle est en integer dans ce que j'ai envoyé

et au lieu de mettre ecart = 99999 j'aurai du mettre ecart = TargetTTC comme ca on est certain du bon fonctionement

WOW! En effet c'est le feu!

Le résultat est parfait ainsi.

On auras galéré un peu ! (surtout moi je me suis compliqué la vie comme un fou) mais on a finit par réussir ouf !

merci pour le sujet en tout cas j'ai trouvé ca super interessant de travailler sur ce programme ca me permet de m'améliorer en VBA

Bonne continuation à toi

salut

Merci pour ton temps!!!!

Bonne continuation

Rechercher des sujets similaires à "calculer repartition partir conditions"