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 :

Loop - Report de données


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2017
    Messages : 4
    Par défaut Loop - Report de données
    Bonjour à tous,

    J'aurais s'il vous plaît besoin d'un petit coup de main concernant un retraitement de ma base de données que je souhaite réaliser avec VBA.

    J'ai une liste de données de 3 types : Bid (Offre de vente), Ask (Offre d'achat) et Trade (Transaction) avec, à chaque fois, la date et l'heure, le prix et le volume.

    Pour chaque trade que j'ai isolé dans un nouvel onglet, je souhaiterais reporter à côté le plus petit bid publié avant ce trade et le plus grand ask publié avant ce trade (Mais après le trade précédent).
    Dans le cas où il n y a pas eu de nouveau bid et/ou de ask postés entre ce trade et le précédent, je souhaite reprendre le plus petit bid et/ou le plus grand ask du trade précédent.

    Je ne sais pas comment réaliser un loop entre chaque trade qui peut aller rechercher des données dans le précédent si il n y a pas eu de nouveaux bid/ask postés.

    Pour plus de clarté, j'ai réalisé un document "exemple" en notant à la main ce que je souhaiterais automatiser sur un million de lignes environ. Je suis débutante en VBA...

    Je vous remercie par avance pour vos idées/votre aide.
    Fichiers attachés Fichiers attachés

  2. #2
    Membre extrêmement actif Avatar de mjpmjp
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2012
    Messages
    1 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2012
    Messages : 1 133
    Par défaut
    bonjour,
    tu focalise sur les "trad" alors que tu devrais t’intéresser au "bid" et "ask"

    dans ton onglet "OutPut", quand tu écris ton "trad" tu te pose bien la question du "bid" et "ask" ?

    pour chaque "nouveau" "bid", la question est : est il plus petit que le dernier connu ?
    même raisonnement pour "ask"...

    @+JP
    Caractéristiques (WEB) phpMyAdmin 4-74 , PHP 5-631 , Apache 2-427 , MySQL 5-719
    Présentation NAS DS-3615xs + 20Go , DSM 6.1.6-15266 Up1 , 12 * WD 4To WD4000F9YZ (10 raid 6+ )+(2 raid 1+) , LinkSys comutateur-switch lgs528p-eu , Onduleur UPS 720W Power Boxx Lcd (4*UPS + 4*MOD)
    Mes contributions (EXCEL) Form GRAPHIQUE: Gestion des boutons , Liste Onglet dynamique...GESTION de FILM

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2017
    Messages : 4
    Par défaut
    Bonjour et merci d'avoir pris le temps de répondre
    Tu veux donc bien dire que même le report des trade dans l'onglet OutPut doit se faire via les bid et ask ?
    Quelle fonction puis-je utiliser pour remplacer par le dernier plus petit bid ?
    Merci

  4. #4
    Membre extrêmement actif Avatar de mjpmjp
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2012
    Messages
    1 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2012
    Messages : 1 133
    Par défaut
    bonjour,
    Tu veux donc bien dire que même le report des trade dans l'onglet OutPut doit se faire via les bid et ask ?
    non,
    je voulais juste dire qu'il fallait se focaliser sur "bid" et "ask"...le "trad" étant la limite...

    en clair et avec décodeur,

    pour le "bid" par exemple,
    dans ta boucle
    bid 1) tu débute avec la première valeur
    bid 2) si cette valeur est inférieure tu garde cette valeur --> dans une variable : BidActuel... --> dans une case...

    quand arrive le "trad" (la limite)
    tu connais ton "BidActuel"

    quand arrive un autre "trad"
    tu connais ton "BidActuel" (qui a été ou non modifié)

    @+JP
    Caractéristiques (WEB) phpMyAdmin 4-74 , PHP 5-631 , Apache 2-427 , MySQL 5-719
    Présentation NAS DS-3615xs + 20Go , DSM 6.1.6-15266 Up1 , 12 * WD 4To WD4000F9YZ (10 raid 6+ )+(2 raid 1+) , LinkSys comutateur-switch lgs528p-eu , Onduleur UPS 720W Power Boxx Lcd (4*UPS + 4*MOD)
    Mes contributions (EXCEL) Form GRAPHIQUE: Gestion des boutons , Liste Onglet dynamique...GESTION de FILM

  5. #5
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2017
    Messages : 4
    Par défaut
    D'accord, maintenant j'ai déjà la logique bien en tête, ça m'aide déjà beaucoup merci !

    Je peux réaliser ça avec If Then Else ..?

    Merci

  6. #6
    Membre extrêmement actif Avatar de mjpmjp
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2012
    Messages
    1 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2012
    Messages : 1 133
    Par défaut
    bonjour,

    voila pour un début,
    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
     
    Private Sub CommandButton1_Click()
        BidActuel = 0
        BidMini = 0
        AskActuel = 0
        AskMaxi = 0
        'Dernière ligne
        LigneFin = Sheets("Base Exemple").Range("B" & Rows.Count).End(xlUp).Row
        'boucle
        For n = 2 To LigneFin
            Select Case UCase(Sheets("Base Exemple").Range("B" & n).Value)
                Case "BID"
                    BidActuel = Sheets("Base Exemple").Range("C" & n).Value
                    If BidMini = 0 Then
                        BidMini = BidActuel
                    Else
                        If BidActuel < BidMini Then
                            BidMini = BidActuel
                            'ICI possible écrire dans cellule la valeur de BidMini
                        End If
                    End If
                Case "ASK"
                    AskActuel = Sheets("Base Exemple").Range("C" & n).Value
                    If AskActuel = 0 Then
                        AskMaxi = AskActuel
                    Else
                        If AskActuel > AskMaxi Then
                            AskMaxi = AskActuel
                            'ICI possible écrire dans cellule la valeur de AskMaxi
                        End If
                    End If
                Case "TRADE"
                'ICI le code pour ecrire les valeurs de la ligne n et BidMini et AskMaxi
                'attention ne pas oublier le changement d'onglet
                'Sheets("Output").Range("A" & Ligne).Value = Sheets("Base Exemple").Range("A" & n).Value
            End Select
        Next n
    End Sub
    @+JP
    Caractéristiques (WEB) phpMyAdmin 4-74 , PHP 5-631 , Apache 2-427 , MySQL 5-719
    Présentation NAS DS-3615xs + 20Go , DSM 6.1.6-15266 Up1 , 12 * WD 4To WD4000F9YZ (10 raid 6+ )+(2 raid 1+) , LinkSys comutateur-switch lgs528p-eu , Onduleur UPS 720W Power Boxx Lcd (4*UPS + 4*MOD)
    Mes contributions (EXCEL) Form GRAPHIQUE: Gestion des boutons , Liste Onglet dynamique...GESTION de FILM

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

Discussions similaires

  1. reporté une donnée dans un plus grand intervalle
    Par pesspess dans le forum MATLAB
    Réponses: 1
    Dernier message: 12/06/2008, 17h03
  2. [Crystal Report] Double données DATASET.
    Par GarsDuCalvados dans le forum VB.NET
    Réponses: 2
    Dernier message: 10/06/2008, 08h19
  3. Report de données dans un nouvel enregistrement
    Par Loumi_69 dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 10/05/2008, 19h01
  4. Reporter une donnée sur un nouvel enregistrement
    Par aouregan dans le forum Access
    Réponses: 3
    Dernier message: 18/01/2007, 17h09
  5. [Crystal Report] sub et main report (récupération données)
    Par ptitsoleil87 dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 06/07/2006, 12h04

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