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

VBA Access Discussion :

[VBA] Query ou SQL


Sujet :

VBA Access

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    235
    Détails du profil
    Informations personnelles :
    Localisation : Luxembourg

    Informations forums :
    Inscription : Juillet 2006
    Messages : 235
    Par défaut [VBA] Query ou SQL
    Bonjour,

    Je dispose d'une requete sous la forme suivante :

    Avec Notice qui prends toutes les valeurs possibles, type Long
    et Redemption qui contient les valeurs suivantes : D,W,BM,M,SA,A,>A

    Nom Notice Redemption
    Test1 30 D
    Test2 30 M
    Test3 45 SA


    et ainsi de suite

    Je dois ensuite créer des requetes pour trouver le nb de fonds qui contiennent les caractéristiques suivantes :

    Redemption = D et notice<30
    Redemption = D et notice<45
    Redemption = D et notice<90
    Redemption = D et notice>180

    Redemption = W et notice<30
    Redemption = W et notice<45
    ....

    J'ai crée les requetes en Query, ensuite je fais un Dlookup en SQL pour obtenir les résultats cepedant c'est très long.

    Ne serais-ce pas plus rapide de tout coder en SQL?

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Par défaut
    crée une table annexe categ


    groupe...redemption..mini....maxi
    groupe1..D...................0......31
    ....
    groupeN.W...................0......46

    et inclue cette table dans ta requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ELECT categ.groupe, categ.redemption, matable.notice, Count(matable.notice) AS nombre
    FROM matable INNER JOIN categ ON matable.redemption = categ.redemption
    WHERE (((matable.notice)>[mini] And (matable.notice)<[maxi]))
    GROUP BY categ.groupe, categ.redemption, matable.notice;
    nb mini ne sert pas mais pourra te permettre de piloter plus finement tes groupes

    par redemption tu entends survie ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    235
    Détails du profil
    Informations personnelles :
    Localisation : Luxembourg

    Informations forums :
    Inscription : Juillet 2006
    Messages : 235
    Par défaut
    Merci pour ta réponse mais à quoi correspond mini et maxi?

    Je travailles sur des hedge funds :
    la notice c'est le nombre de jours d'attente après avoir passé l'ordre de vente, ensuite on rajoute la redemption.

    Par exemple ordre d'achat passé le 07/01/07
    HedgeFund 30,D signifie que l'on vend le fonds après 30jours, donc le 07/01/07+30 jours (06/02/2007)
    HedgeFund 30,M signifie que l'on vends le fonds après 30jours puis fin de mois c'est à dire 07/01/07+30jours (06/02/2007) puis fin de mois donc 28/02/2007

  4. #4
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Par défaut
    maxi correspond à notice mini est inutile compte tenu de ton problème

    ps vous avez du avoir chaud en juillet aout dans votre activité

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    235
    Détails du profil
    Informations personnelles :
    Localisation : Luxembourg

    Informations forums :
    Inscription : Juillet 2006
    Messages : 235
    Par défaut
    Pour l'instant nos hedge funds tiennent bien.

    En juillet positif ou flat en aout legere baisse de 1% ennviron.

    Sinon j'ai commencé par coder tout en VBA et ca donne ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
        'fonction pour le tableau Redemption et Notice (nombre fond)
    Public Function RedemptionNoticeNB(Notice As Long, redemption As String)
     
    If (Notice = 180) Then
        sql1 = "SELECT count(*) AS [NB] FROM [Notice and Redemption] WHERE Redemption_notice>" & Notice & " and Redemption_frequency='" & redemption & "';"
        NbFond = res1(0)
    Else
        sql1 = "SELECT count(*) AS [NB] FROM [Notice and Redemption] WHERE Redemption_notice<=" & Notice & " and Redemption_frequency='" & redemption & "';"
        Set res1 = CurrentDb.OpenRecordset(sql1)
        NbFond = res1(0)
    End If
    End Function
    Pour suivre ton idée, ne serait-il pas plus simple de faire une requete de regroupement puis recupérer les résultats avec un recorset en VBA?

  6. #6
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Par défaut
    "mon idée" est de séparer le paramétrage des traitements

    la création d'une table de paramétrage souple et évolutive garantit la pérennité des traitements

    ceux ci sont organisés à partir d'une simple requête, que celle ci soit traitée en sql ou à travers vba est sans conséquence

    flat en juillet avec un objectif annuel de croissance de 12% correspond à une baisse de 1%

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    235
    Détails du profil
    Informations personnelles :
    Localisation : Luxembourg

    Informations forums :
    Inscription : Juillet 2006
    Messages : 235
    Par défaut
    Cependant, si je cree une table à partir d'un requete pour regrouper mes donnees et que des notices et redemeptions ne sont pas representées, elles ne vont pas apparaitre dans ma table?.

    Au final, les donnees sont reprises dans un tableau excel

    PS:
    flat en juillet avec un objectif annuel de croissance de 12% correspond à une baisse de 1%

    ->faux ca depend de l'objectif et des performances des mois précédents.
    notre objectif est de 8% et on est à 9%YTD.
    Donc c'est bon.

  8. #8
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Par défaut
    je crains que tu n'aies pas saisi mon idée

    il n'est pas question de recopier toutes les données dans une table mais seulement les critéres permettant de les regrouper

    (c'est pas trés dynamique comme fonds mais cela semble robuste)

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    235
    Détails du profil
    Informations personnelles :
    Localisation : Luxembourg

    Informations forums :
    Inscription : Juillet 2006
    Messages : 235
    Par défaut
    Effectivement je n'avais pas saisi ton idée.

    Donc si je comprends bien dans un premier temps, je crée une table annexe avec tous les critéres possibles.

    Et ensuite j'utilise la requete que tu m'as fourni.

  10. #10
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Par défaut
    vi

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    235
    Détails du profil
    Informations personnelles :
    Localisation : Luxembourg

    Informations forums :
    Inscription : Juillet 2006
    Messages : 235
    Par défaut
    Oki je teste ca demain et te dis koi.

    Merci

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    235
    Détails du profil
    Informations personnelles :
    Localisation : Luxembourg

    Informations forums :
    Inscription : Juillet 2006
    Messages : 235
    Par défaut
    C'est bon ca fonctionne.

    Merci.

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

Discussions similaires

  1. query + requette sql
    Par helmis dans le forum Bases de données
    Réponses: 3
    Dernier message: 25/05/2006, 14h03
  2. [VBA-E] Requete SQL sous Excel
    Par climz dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 22/05/2006, 14h05
  3. [VBA-E] Requete SQL incluant des donnees provenant de cells
    Par Tartenpion dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 08/03/2006, 18h16
  4. [VBA-A] Requête SQL
    Par Berny03 dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 24/11/2005, 21h16
  5. Probléme VBA Word et SQL server
    Par andrau dans le forum VBA Word
    Réponses: 2
    Dernier message: 12/10/2005, 11h52

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