Traintement d'investissements

Bonjour à tous,

Je travaille actuellement sur un tableau d’investissements structuré ‹ TbMontantInvesti › et j’ai besoin d’aide pour remplir les trois dernières colonnes de ce tableau. Le résultat attendu pour les colonnes 10, 11 et 12 est illustré dans le fichier exemple joint.

Pourriez-vous m’aider à traiter les données et effectuer les calculs nécessaires pour obtenir les résultats attendus ?

Merci d’avance pour votre assistance !

TraitementInvestissement.xlsm (13,2 Ko)

Bonsoir,
<Je ne vais pas répondre ce soir, peut-être demain>
ID Catégorie serait un identifiant? (sinon, il risque d’y avoir des milliers de ID_InvestisseursDate, ainsi que les 2 autres colonnes…)
Et c’est bien date par date?
@ te relire demain (peut-être, selon les JO)

Bonsoir Cousinhub,

ID Catégorie serait un identifiant?

C’est un identifiant qui représente la catégorie d’investissement (dans ce cas la cryptomonnaies est la seule catégorie existante)

ID_InvestisseursDate

Identifiants des Investisseurs jusqu’à la nouvelle date d’investissement, n’a pas de relation avec ID_categorie, mais avec la colonne ID_Investisseur.

Et c’est bien date par date?

Le calcul souhaité des trois dernières colonnes de TbMontantInvesti, se fera de date en date.

:slightly_smiling_face:

bonjour Atlas, Cousinhub,

Sub Atlas()
     Dim LO, aA, aOut, Dict
     Set Dict = CreateObject("scripting.dictionary")
     Dict.comparemode = vbTextCompare

     Set LO = Range("TbMontantInvesti").ListObject
     aA = LO.DataBodyRange.Value2

     ReDim aOut(1 To UBound(aA), 1 To 3)     'matrice resultat
     For i = 1 To UBound(aA)                 'boucler les lignes 1
          Dict.RemoveAll                     'vider le dictionaire
          For j = 1 To UBound(aA)            'boucler les lignes 2
               If aA(j, 4) <= aA(i, 4) Then Dict(aA(j, 2)) = Dict(aA(j, 2)) + aA(j, 5)     'cumul par investisseur
          Next
          aOut(i, 1) = Join(Dict.keys, ";")  'string avec les IDs des investisseurs
          x = Dict.items                     'matrice avec les montants
          aOut(i, 2) = Join(x, ";")          'string avec les cumuls des investisseurs
          som = WorksheetFunction.Sum(x)     'la somme
          s = ""
          For j = 0 To UBound(x)
               s = s & ";" & Format(x(j) / som, "0.00")     'proportion de chaqu'un
          Next
          aOut(i, 3) = Mid(s, 2)             'string avec la proportion de chaqu'un
     Next

     Range("TbMontantInvesti[ID_InvestisseursDate]").Resize(, 3).Value = aOut

End Sub

1 « J'aime »

Bonsoir Cow18, et merci infiniment de la solution proposée. :pray:

Ce sujet a été automatiquement fermé après 30 jours. Aucune réponse n’est permise dorénavant.