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 :

[AC-2010] Synthèse de table via VBA


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 24
    Par défaut [AC-2010] Synthèse de table via VBA
    Bonjour,
    Je recherche une méthode afin de synthétiser une table existante dans Access : J'ai une table contenant un champ projet, à un projet correspond plusieurs montant. J'aimerais dans une nouvelle table avoir un enregistrement par projet avec comme montant la somme totale correspondant à chaque projet (Cf illustration ci dessous). Tout ça via un script VBA.
    J'arrive très bien à récupérer la somme total d'un projet par le biais d'une requête sql mais je ne sais pas faire correspondre chaque somme à un projet dans une nouvelle table
    Nom : table.JPG
Affichages : 140
Taille : 69,5 Ko

    Je vous remercie pour votre aide

  2. #2
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 849
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 849
    Par défaut
    Bonjour,

    Comme ça ? :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim strsql As String
    strsql = "SELECT t_projet.projet, t_projet.client, Sum(t_projet.montant) AS SommeDemontant INTO t_synthese_projet" _
     & " FROM t_projet" _
     & " GROUP BY t_projet.projet, t_projet.client;"
    DoCmd.RunSQL = strsql
    Cordialement,

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 24
    Par défaut
    Merci beaucoup, ça marche impeccablement ! (Petite correction pour la dernière ligne, DoCmd.RunSQL(strsql) au lieu de DoCmd.RunSQL = strsql))

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 24
    Par défaut
    J'ai un autre petit problème : j'ai en fait une colonne supplémentaire "date" et je désire maintenant mettre deux colonnes de somme,

    -l'une étant le montant total par projet jusqu'à aujourd'hui
    -la seconde étant le montant total d'aujourd'hui à la fin du mois suivant

    Je n'ai pas de problème pour obtenir la première colonne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim strsql As String
    strsql = "SELECT t_projet.projet, t_projet.client, Sum(t_projet.montant) AS SommeDemontant INTO t_synthese_projet" _
     & " FROM t_projet" _
     & " WHERE t_projet.date<Now()"_
     & " GROUP BY t_projet.projet, t_projet.client;"
    DoCmd.RunSQL(strsql)
    Mais comment faire pour ajouter le second champ désiré dans cette même table ?

    Merci encore pour votre aide

  5. #5
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 849
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 849
    Par défaut
    Bonjour,
    Dans la lancée de la première requête, il faut utiliser les fonctions de domaines pour trouver les données correspondant à chaque projet et client selon les critères que vous vous êtes fixés. Je vous conseille de faire un tour sur le tuto de référence ici pour comprendre comment ça fonctionne et aussi regarder les fonctions pour paramétrer les critères dates dans le tuto ici parce que le deuxième critère n'est pas évident à écrire sans comprendre le besoin.
    Ce qui nous donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    strsql = "SELECT T_projet.projet AS nomprojet, T_projet.client AS nomclient, Sum(T_projet.montant) AS totmontant," _
            & "Nz(DSum('[montant]','[t_projet]','[dateobjet]<Date() AND [projet]=' & [nomprojet] & ' AND [client]=' & [nomclient]),0) AS MontantAnt," _
            & "Nz(DSum('[montant]','[t_projet]','([dateobjet] BETWEEN date () and DateSerial(Year(Date()), Month(Date())+1,1) -1) AND [projet]=' & [nomprojet] & ' AND [client]=' & [nomclient]),0) AS MontantPost" _
            & " INTO t_synthese_projet" _
            & " FROM T_projet" _
            & " GROUP BY T_projet.projet, T_projet.client;"
    Un module typiquement en vba avec Recordset et des findfirst et findnext devraient fonctionner, mais je voulais continuer sur l'expression SQL.

    Bonne continuation

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 24
    Par défaut
    Merci beaucoup j'étudie ça avec attention

Discussions similaires

  1. [AC-2007] Mise à jour d'une table via VBA
    Par Korleone dans le forum VBA Access
    Réponses: 3
    Dernier message: 22/03/2014, 10h39
  2. [AC-2007] Utiliser une variable comme alias lors de la création de table via Vba
    Par Tipstitou dans le forum VBA Access
    Réponses: 2
    Dernier message: 20/09/2010, 10h29
  3. Création d'un champ dans une table via VBA
    Par Oliv'83 dans le forum VBA Access
    Réponses: 5
    Dernier message: 16/08/2010, 09h58
  4. propriétés d'une table via VBA
    Par Invité dans le forum VBA Access
    Réponses: 1
    Dernier message: 23/02/2009, 14h53
  5. [A97] : Intégration de data dans une table via VBA
    Par JeremieT dans le forum VBA Access
    Réponses: 11
    Dernier message: 22/01/2008, 14h11

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