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

  • Initiateur de la discussion Initiateur de la discussion KIM
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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
 

Pièces jointes

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
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Retour