Somme des arrondis différente du montant initial à répartir

KIM

XLDnaute Accro
Bonjour les ami(e)s et le forum,

J'ai un montant à répartir selon des clés de répartition. La somme des arrondis est différente du montant initial. J'ai trouvé la formule suivante dans le forum =SI(MOD(C7;1)>=0,5;ENT(C7)+1;ENT(C7)) qui n'a pas résolu cette différence.

Y-a-t-il une formule ou en vba pour régler ce problème.

Merci de votre aide
KIM
 

Fichiers joints

phlaurent55

XLDnaute Barbatruc
Re : Somme des arrondis différente du montant initial à répartir

Bonjour Kim,

peut-être avec ceci:

=(ARRONDI.SUP(SOMME(D8:D14);0)+ARRONDI.INF(SOMME(D8:D14);0))/2

à+
Philippe
 

KIM

XLDnaute Accro
Re : Somme des arrondis différente du montant initial à répartir

Bonjour Philippe & le forum,
En effet avec ta formule s'applique sur les montants répartis avec les décimales. Je dois afficher des montants arrondis, sans les décimales, voir col E et F, avec la somme de ces montants arrondis égale au montant initial.
Merci d'avance de ton aide
KIM
 

mutzik

XLDnaute Barbatruc
Re : Somme des arrondis différente du montant initial à répartir

bonjour

voir dans le fichier, mais je pense que tu ne peux pas avoir de montant entier dont les sommes te feront retomber sur ta valeur initiale
petite 'bidouille' dans la colonne G
 

Fichiers joints

KIM

XLDnaute Accro
Re : Somme des arrondis différente du montant initial à répartir

Bonjour Mutzik, Bonjour Philippe et le forum,
Merci pour votre aide. Pour compléter ma demande initiale, j'ai dans un tableau le montant initial et les clés de répartition.
Quelle formule ou vba utilisé pour répartir ce montant selon les clés de répartition à des montants arrondis par clé de répartion et dont le total de ces montants arrondis soit égal au montant initial ?
Est-ce possible ?

Merci encore
KIM
 

Dranreb

XLDnaute Barbatruc
Re : Somme des arrondis différente du montant initial à répartir

Bonjour.

Il y a ça, en E9 :
Code:
=ARRONDI(($B$5-SOMME(E$8:DECALER(E9;-1;0)))*$C9/SOMME($C9:$C$14);0)
propagé vers le bas.
Mais ça pourrait aboutir à deux chiffres différents pour un même taux puisque ça revient à recalculer le taux de répartition du reste non encore réparti, de sorte que le dernier a toujours un taux de 100% du restant.
 

mutzik

XLDnaute Barbatruc
Re : Somme des arrondis différente du montant initial à répartir

re, salut les gens,

c'est à peu près ce que j'ai fait, mais en mettant la répartition (pour atteindre 100%) sur le plus grand montant, ce qui aura donc une incidence moins forte que sur un petit montant
 

KIM

XLDnaute Accro
Re : Somme des arrondis différente du montant initial à répartir

Re_Bjr le fil, le forum,
J'apprécie votre aide, merci à vous,
j'ai intégré la formule de Dranreb en attendant peut être une solution vba.
Bonne journée
KIM
 

Dranreb

XLDnaute Barbatruc
Re : Somme des arrondis différente du montant initial à répartir

Qu'attendriez vous de plus, au juste, d'une solution VBA ?
 

KIM

XLDnaute Accro
Re : Somme des arrondis différente du montant initial à répartir

Re-Bjr le fil,
Ta formule m'a dépanné et débloquée la situation. Merci bien.
Le fichier est partagé, pour éviter de saisir des formules, Une macro s'intègre plus facilement dans un ensemble de macros existants pour la sortie d'un tableau de bord.

Bonne journée
KIM
 

Dranreb

XLDnaute Barbatruc
Re : Somme des arrondis différente du montant initial à répartir

VB:
Sub Répartition()
Dim Te(), Ts(), L&, Tot As Double
Te = Feuil1.[D8:D14].Value
ReDim Ts(1 To UBound(Te, 1), 1 To 1)
For L = UBound(Te) To 1 Step -1: Tot = Tot + Te(L, 1): Ts(L, 1) = Tot: Next L
Tot = Int(Tot + 0.5)
For L = 1 To UBound(Te): Ts(L, 1) = Int(Tot * Te(L, 1) / Ts(L, 1) + 0.5)
   Tot = Tot - Ts(L, 1): Next L
Feuil1.[E8].Resize(UBound(Ts)).Value = Ts
End Sub
 
Dernière édition:

KIM

XLDnaute Accro
Re : Somme des arrondis différente du montant initial à répartir

Re le fil,
@Dranreb,
Merci pour ta macro. Je viens de la tester. La somme des montants répartis est différente du montant initial.
Ci-joint le fichier avec la macro.
Y-t-il une solution ?
Merci encore. KIM
 

Fichiers joints

Dranreb

XLDnaute Barbatruc
Re : Somme des arrondis différente du montant initial à répartir

C'est parce qu'elle s'appuyait exclusivement sur les montants non arrondis. Donc K dans votre nouvel exemple.
En mettant Te = Feuil1.[K8:K14].Value ça marche.

Edit: mais on pourrait sûrement l'écrire de manière à ce qu'elle s’appuie sur le total à répartir et les taux ou les montant non arrondis ou des nombres de parts.
 
Dernière édition:

KIM

XLDnaute Accro
Re : Somme des arrondis différente du montant initial à répartir

Ok, merci Dranreb.
Encore une question, voir post#5, Est-il possible de s'affranchir d'une colonne intermédiaire ?
EN effet j'ai une colonne à remplir, un montant initial et les clés de répartition. Est-il possible d'intégrer le calcul du montant réparti dans la macro ?

KIM
 

Dranreb

XLDnaute Barbatruc
Re : Somme des arrondis différente du montant initial à répartir

Alors voila une version utilisant une fonction qui n'a besoin que du total à répartir et de poids de parts relatives (peu importe leur somme, pas obligatoirement = 1)
VB:
Option Explicit

Sub Répartition()
Feuil1.[E8].Resize(7).Value = RépArr(Feuil1.[B5].Value, Feuil1.[C8:C14])
End Sub
 
Function RépArr(ByVal MonTot As Double, Parts) As Variant()
Dim Te(), Ts(), L&, TotParts As Double
If TypeName(Parts) = "Range" Then Te = Parts.Value Else Te = Parts
ReDim Ts(1 To UBound(Te, 1), 1 To 1)
For L = UBound(Te) To 1 Step -1: TotParts = TotParts + Te(L, 1): Ts(L, 1) = TotParts: Next L
For L = 1 To UBound(Te): Ts(L, 1) = Int(MonTot * Te(L, 1) / Ts(L, 1) + 0.5)
   MonTot = MonTot - Ts(L, 1): Next L
RépArr = Ts
End Function
 

KIM

XLDnaute Accro
Re : Somme des arrondis différente du montant initial à répartir

Merci bien Dranreb, la fonction me donne les résultats attendus.
Une dernière question, Resize (7), redimensionne le nombre de cellules à partir de la E8. Le nombre de lignes n'est pas connu d'avance, Comment la rendre dynamique ?

Bonne fin de journée
KIM
 

Dranreb

XLDnaute Barbatruc
Re : Somme des arrondis différente du montant initial à répartir

Arrangez vous pour récupérer la taille en lignes de la plage que vous spécifiez en second paramètre de la fonction: c'est la même.
 

KIM

XLDnaute Accro
Re : Somme des arrondis différente du montant initial à répartir

Exact, je n'y ai pas pensé. Merci, cette fonction m'est très utile.

Bon we et Merci le forum
KIM
 

cheyenne63

XLDnaute Occasionnel
Bonjour
excusez moi de m'incruster dans ce fil mais, je ne parviens pas à :
- Adapter la macro avec 2 chiffres après la virgule (colonne D)
- L'adapter selon nombre de valeur en colonne C (nombre variable)
Merci d'avance
 

Fichiers joints

Dranreb

XLDnaute Barbatruc
Bonjour.

Comme ça :
VB:
Option Explicit

Sub Répartition()
Dim ColSrc As Range
Set ColSrc = Feuil1.[C8].Resize(Feuil1.[C1000000].End(xlUp).Row - 7)
ColSrc.Offset(, 1).Value = RépArr(Feuil1.[B5].Value, ColSrc)
End Sub

Function RépArr(ByVal MonTot As Double, Parts) As Variant()
Dim Te(), Ts(), L&, TotParts As Double
If TypeName(Parts) = "Range" Then Te = Parts.Value Else Te = Parts
ReDim Ts(1 To UBound(Te, 1), 1 To 1)
For L = UBound(Te) To 1 Step -1: TotParts = TotParts + Te(L, 1): Ts(L, 1) = TotParts: Next L
For L = 1 To UBound(Te): Ts(L, 1) = Int(MonTot * 100 * Te(L, 1) / Ts(L, 1) + 0.5) / 100
  MonTot = MonTot - Ts(L, 1): Next L
RépArr = Ts
End Function
 

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas