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/SQL Calculs avec les tables


Sujet :

VBA Access

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 5
    Points : 5
    Points
    5
    Par défaut VBA/SQL Calculs avec les tables
    Bonjour à tous,

    Tout d'abord, je tiens à préciser que je débute sous Access et que mes questions peuvent donc sembler plus ou moins évidentes! mais ce n'est pas le cas pour moi

    1ère question: est-ce qu'il est possible de faire des calculs avec des données issues de différentes tables et de les extraire dans une autre table par exemple?

    Je sais que l'on peut utiliser des requêtes mais je voudrais faire des calculs un peu plus élaborés (avec des exponentielles par exemple).


    2ème question: La partie module d'Access sert-elle à programmer en SQL ou en VBA?
    Je peux faire des calculs en programmant dans le module?


    Merci pour votre aide!

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Citation Envoyé par jboul Voir le message
    1ère question: est-ce qu'il est possible de faire des calculs avec des données issues de différentes tables et de les extraire dans une autre table par exemple?

    Je sais que l'on peut utiliser des requêtes mais je voudrait faire des calculs un peu plus élaborer (avec des exponentielles par exemple).

    Access n'est pas Excell, quand tu change la valeur d'un champ, Access ne sait pas que tu l'a modifié et que tous les calculs qui en dépendent doivent être mias à jour donc et en règle générale, on ne stocke pas le résultat de calcul dans une table.

    On utilise des requètes pour faire les calculs et les afficher comme cela on est certain que quelques soient les valeurs dans les champs impliqués les calculs résultats seront cohérents.

    Pour répondre néanmoins à ton besoin, en utilisant soit une requète de Mise à jour (update) ou du code VBA tu peu écrire le résultat d'un calcul dans une table. Je l'ai fait par exemple pour faire des tableaux de statistiques.

    Dans les requètes tu peux utiliser toutes le fonction interne de Access (ex : Sin, Cos) et faire des calculs assez complexe.

    2ème question: La partie module d'Access sert-elle à programmer en SQL ou en VBA?
    Je peux faire des calculs en programmant dans le module?

    Le VBA sert un peu à tout, mais généralement pas au SQL stricto sensu. Tu peux par exemple créer une requète en VBA mais l'exécution du SQL est fait par une autre partie de Access.

    Par contre tu peux enrichir le SQL de fonctions publiques que tu as programmées en VBA. C'est très pratique mais peu s'avérer coûteux en temps d'exécution. De plus certaines BDs comme Oracle, ou ceryain environements comme ASP.NET, ne supportent pas toujours les fantaisies créatives qu'Access permets.

    Mais je fais cela régulièrement quand j'ai des conditions complexes qui impliquent de nombreux tests. Le faire avec des iif() peut s'avérer toute une histoire et le SQL n'a pas de débuggeur pas à pas.

    ici un exemple de ce type de fonction, à mettre dans un module.

    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
     
    public function PresenterVoeux(prmNom as string, prmDate as date) as string
       dim result as string
     
       if month(prmDate)=12 and day(prmDate)=24 then
          result="Joyeux Noel " & prmNom
       elseif month(prmDate)=1 and day(prmDate)=1 then
          result="Bonne année " & prmNom
       elseif month(prmDate)=6 and day(prmDate)=24 then
         result="Bonne St-Jean " & prmNom
       else
          result="Desolé " & prmNom & " mais je ne présente mes voeux qu'à Noel, au nouvel an et à la St-Jean."
       end if
     
       PresenterVoeux=result
    end function
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Décembre 2007
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 22
    Points : 30
    Points
    30
    Par défaut
    Tu peux parfaitement récuperer les données des tables dans du code VBA et effectuer des calculs directement... sans utiliser de requetes ou d'outils propres à Access. Il est aussi possible de recuperer le resultat de ton calcul et le mettre dans une table (voir DAO, ce site est une mine, enjoy :p ).

    Ca le fait bien sur des calculs un peu pénibles à mettre en requete. Par contre, si tu as affaire à des calculs lourds et qui demandent une précision conséquente (p.ex. inversion de matrice de grande taille avec des parties creuses), oublie VB et interesse toi aux (nombreux) outils de calculs scientifique. Ils possèdent à peu près tous un module d'importation de données aux formats standards des principaux sgbd.

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    Merci pour vos réponses! Je vais essayer de m'en sortir avec les informations que vous m'avez fournies!

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 17/01/2009, 16h48
  2. Réponses: 4
    Dernier message: 18/09/2007, 12h32
  3. MS SQL SERVER et les tables temporaires
    Par beb_has_return dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 11/02/2005, 14h36
  4. Problème de taille avec les tables
    Par Angelico dans le forum Paradox
    Réponses: 2
    Dernier message: 27/12/2004, 18h38
  5. [SQL] problème avec les date et les group By
    Par Stef784ever dans le forum Langage SQL
    Réponses: 3
    Dernier message: 23/11/2004, 09h18

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