IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Réconciliation - calcul sous totaux et moyenne pondérée [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2012
    Messages : 30
    Par défaut Réconciliation - calcul sous totaux et moyenne pondérée
    Bonjour,

    je m'adresse à vous car je suis complètement perdu pour créer une macro me permettant de retraiter un fichier.

    Je suis novice en macro excel et pour faire ce dont on m'a demandé, j'ai besoin vraiment de votre aide.

    Dans le fichier ci joint, on a des lignes d'options et de futurs.
    il faudrait effectuer un retraitement du fichier car il comporte beaucoup trop de ligne.

    Les indicateurs qui doivent être pris en compte pour faire du tri dans ce fichier sont les colones :
    V : BBG
    B : A/C ref
    E : B/S
    M : C/P

    L'idée est donc de créer une seule et unique ligne qui prend en compte les critère ci dessus.

    Si on a plusieurs lignes qui comportent les mêmes caractéristiques que ci dessus, alors il faudra regrouper ça en une seule ligne mais avec des totaux sur la colonne F : Lots en faisant une somme, et il faudrait aussi faire une moyenne pondérée de la colonne N : Trade price en fonction des quantité de la colonne F : Lots

    je vous remercie d'avance et si je ne suis pas très clair dans mes explications, merci de me le préciser.

    Bonne journée.
    Fichiers attachés Fichiers attachés

  2. #2
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Juin 2013
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2013
    Messages : 101
    Par défaut
    Bonjour,

    Tu peux essayer comme cela:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    Option Explicit
     
    Sub portpfolio()
        Dim myPF As String
        Dim myDico As Object
        Dim mysheet As Worksheet
        Dim myrange As Range
        Dim mydata() As String
     
        Set mysheet = ThisWorkbook.Worksheets(1)
     
        Set myDico = CreateObject("Scripting.dictionary")
        Set myrange = mysheet.Range("A2")
        Do Until myrange = ""
            myPF = myrange.Offset(, 1) & "_" & myrange.Offset(, 4) & "_" & myrange.Offset(, 12) & "_" & myrange.Offset(, 21)
            If Not myDico.exists(myPF) Then
                myDico.Add myPF, myrange.Offset(, 5) & ";" & myrange.Offset(, 5) * myrange.Offset(, 13)
            Else
                mydata = Split(myDico.Item(myPF), ";")
                myDico.Item(myPF) = CDbl(mydata(0)) + myrange.Offset(, 5) & ";" & CDbl(mydata(1)) + myrange.Offset(, 5) * myrange.Offset(, 13)
            End If
            Set myrange = myrange.Offset(1)
        Loop
        If myDico.Count > 0 Then
            Application.DisplayAlerts = False
            With ThisWorkbook.Worksheets(2)
            .Activate
                .Cells.ClearContents
                .Range("A1").Resize(myDico.Count).Value = Application.Transpose(myDico.Keys)
                .Range("B1").Resize(myDico.Count).Value = Application.Transpose(myDico.Items)
                .Range("B1").Resize(myDico.Count).TextToColumns semicolon:=True, comma:=False
            End With
            Application.DisplayAlerts = True
        End If
     
        ReDim mydata(0)
        Set myrange = Nothing
        Set mysheet = Nothing
        Set myDico = Nothing
    End Sub
    Cdt,
    S.

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2012
    Messages : 30
    Par défaut
    Merci beaucoup.

    C'est vraiment puissant ce code.

    J'essaye de le décrypter depuis toute à l'heure, en essayant de comprendre.

    Juste est-ce que ce serait possible d'avoir la même chose mais en conservant toute les données de la feuille 1 mais avec la somme pour les lots et le prix moyen pondéré à la place du trade price ?

    Ce serait vraiment génial si je pouvais avoir ça.

    Cordialement,

    Julien

  4. #4
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Juin 2013
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2013
    Messages : 101
    Par défaut
    Dans la feuille 2, tu as la sommes des quantités en colonne B et la somme des prix * quantité en ligne, donc si tu divises C par B, tu auras ta moyenne pondérée.

    Pour récupérer les informations, il suffit de créer une clé unique par ligne dans la feuille 1 puis d'ajouter des RechecheV pour les informations que tu souhaites dans la feuille 2 à partir de la clé en colonne A.

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2012
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2012
    Messages : 30
    Par défaut
    Merci.

    je vais faire comme ça.

    Cordialement.

    Julien.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2007] Calculer sous-totaux comme sous Excel
    Par Runsh63 dans le forum Access
    Réponses: 1
    Dernier message: 28/10/2011, 15h07
  2. calcul moyenne pondérée sous access 2003
    Par Nomade2009 dans le forum Access
    Réponses: 2
    Dernier message: 26/03/2009, 10h17
  3. Calcul d'une moyenne pondérée
    Par solorac dans le forum Excel
    Réponses: 1
    Dernier message: 21/05/2007, 16h54
  4. Réponses: 4
    Dernier message: 28/07/2006, 08h31
  5. [forms 6i] calculs de sous-totaux
    Par Magnus dans le forum Forms
    Réponses: 4
    Dernier message: 31/03/2006, 10h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo