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 :

Comment calculer une moyenne via VBA et Access


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Consultant fonctionnel
    Inscrit en
    Mai 2018
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Consultant fonctionnel

    Informations forums :
    Inscription : Mai 2018
    Messages : 37
    Par défaut Comment calculer une moyenne via VBA et Access
    Bonjour,

    J'essaye de calculer une moyenne selon le nombre d'entrées pour des données exporter d'Excel et présentes sur une base de données Access. Malheureusement , je ne suis pas parvenue à trouver une réponse adéquate parmi les réponses sur ce site.

    Chaque semaines neufs taux de fuel sont extrés d’une feuille Excel présente sur internet et ordonnés dans une base de données Access suivant leur codes pays dans une table nommée Country_Data ( 1 = Belgique, 5 = France, 9 = UK) .

    Ses taux sont ordonnés par date d’extraction et ensuite via le code VBA ci-dessous (page 2 , Calculate) , ils sont référencés sur une feuille Excel par Mois ( de Janvier à Décembre). Je n’arrive pas à obtenir la moyenne pondérée par rapport au nombre d’entrées sur un mois. Par exemple Janvier 5 semaines , Février 4 semaines , Mars 4 semaines, et Avril 3 semaines.

    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
     
     
    Private Sub CALCULATE_BTN_Click()
        Dim DBS As Database
        Dim RST As Recordset
        Dim SQL_TXT As String
        Range("C9:N10").Select
        Selection.Clear
     
        If OPEN_DBS(DBS, FUEL_DB) Then
            SQL_TXT = "SELECT * FROM FUEL_DATA"
            If OPEN_RST(DBS, RST, SQL_TXT) Then
                While Not RST.EOF
                    For i = 1 To 12
                        If Month(RST![FUELDATA_DATE]) = Month(Cells(8, 2 + i).Value) And Year(RST![FUELDATA_DATE]) = Year(Cells(8, 2 + i).Value) Then
                            Cells(9, 2 + i).Value = Cells(9, 2 + i).Value + RST![FUELDATA_AUTOMOTIVE] / 9 / 1000
                        End If
                    Next i
                    RST.MoveNext
                Wend
                RST.Close
            End If
            DBS.Close
        End If
    End Sub
    J'ai divisé le résultat par 9 pour le nombre de pays puis par 1000 mais je n'arrive pas à calculer la moyenne suivant le nombre d'entrées sur un mois. Est ce que quelqu'un à une idée? merci d'avance
    Fichiers attachés Fichiers attachés

  2. #2
    Membre éprouvé

    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    1 031
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 1 031
    Billets dans le blog
    45
    Par défaut
    Merci de fournir un jeu de données et de donner un exemple par rapport au jeu de données

  3. #3
    Rédacteur/Modérateur
    Avatar de Jeannot45
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2004
    Messages
    3 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 871
    Par défaut


    Je ne comprends pas, les données sont-elles dans Access ou dans Excel.
    Pour l'instant, par rapport au fichier que tu as joint, ta question concernerait plutôt le forum Macros et VBA Excel.
    Il aurait peut-être plus judicieux de joindre une copie de ton fichier Access avec des données comme le demande Informer.
    Jeannot

    Liens Office indispensables à visiter: Cours (Tutos), F.A.Q., Sources VBA

    Ne posez pas de questions par MP, je n'ai pas le temps d'y répondre

  4. #4
    Membre averti
    Femme Profil pro
    Consultant fonctionnel
    Inscrit en
    Mai 2018
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Consultant fonctionnel

    Informations forums :
    Inscription : Mai 2018
    Messages : 37
    Par défaut
    Bonjour Jeannot45,

    Tout d'abord , merci pour l'intérêt que vous portez à ma question.

    Les informations sont contenues dans une base de données Access (fichier joint) sous la table Fuel_Data et j'essaye de les extraire via un fichier excel. Si je me suis trompé de forum, veuillez m'en excuser.

    Les données sont extraites chaque Lundi et j'aimerais pouvoir calculer leur moyenne par mois (comme indiqué sur le fichier excel). Mon probléme est que je n'arrive pas à adapter mon code pour obtenir une moyenne par rapport aux nombres d'entrées.
    Par exemple ; pour le mois de Janvier 5 semaines sont enregistrées, et pour le mois de Mars 4 semaines sont enregistrées et il se peux que dans certains cas seulement 3 semaines soient enregistrées.

    Jan = moyenne des entrées (5 dans ce cas)
    Février = moyenne des entrées (4 dans ce cas)
    Mars = moyenne des entrées (4 dans ce cas)
    Mai = moyenne des entrées (4 dans ce cas)

    Mon probléme est que je n'arrive pas à adapter ma formule par rapport à un AVG (SQL) ou Average (VBA), cela me donne toujours un message d'erreur.

    j'espère que mon explication est assez claire. Bien à vous,
    Fichiers attachés Fichiers attachés

  5. #5
    Expert éminent
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 959
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 959
    Par défaut
    Bonjour AimeDija,

    Essaie de répondre à cette première question avant de répondre aux autres:
    - souhaites-tu faire les calculs dans Access ou dans Excel ?
    Car, si c'est sur Excel, il faudra certainement poster dans le sous-forum VBA d'Excel.

    Les informations sont contenues dans une base de données Access (fichier joint) sous la table Fuel_Data et j'essaye de les extraire via un fichier excel.
    - Aurais-tu rencontré un problème pour extraire les données ?

    J'ai divisé le résultat par 9 pour le nombre de pays puis par 1000 mais je n'arrive pas à calculer la moyenne suivant le nombre d'entrées sur un mois.
    - En principe, le calcul d'une moyenne pondérée tient compte d'un coefficient de pondération, quel est ce coefficient : le nombre de pays, le nombre de semaines du mois ou les deux ?
    - Pourrais-tu donner la formule exacte du calcul ? (désolé de poser la question mais je n'ai jamais été brillant en cours de maths).

    Mon probléme est que je n'arrive pas à adapter ma formule par rapport à un AVG (SQL) ou Average (VBA), cela me donne toujours un message d'erreur.
    - Quel est l'intitulé de ce message d'erreur ?

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bonsoir,
    Je pense que tu peux faire ça par requêtes..

    https://mon-partage.fr/f/LoCWKVjq/

  7. #7
    Rédacteur/Modérateur
    Avatar de Jeannot45
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2004
    Messages
    3 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 871
    Par défaut


    Voici une requete qui te permet de calculer par mois et par pays la moyenne de tes carburants.

    Il s'agit d'une requete croisée. Elle s’exécute dans Access.

    Nom : requete.jpg
Affichages : 1289
Taille : 40,2 Ko

    resultat :

    Nom : Moyenne.jpg
Affichages : 1039
Taille : 50,9 Ko

    Bonne continuation
    Jeannot

    Liens Office indispensables à visiter: Cours (Tutos), F.A.Q., Sources VBA

    Ne posez pas de questions par MP, je n'ai pas le temps d'y répondre

  8. #8
    Membre averti
    Femme Profil pro
    Consultant fonctionnel
    Inscrit en
    Mai 2018
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Consultant fonctionnel

    Informations forums :
    Inscription : Mai 2018
    Messages : 37
    Par défaut
    Bonjour Tee - Grandbois,

    En effet, j'aimerais exécuter cette requête sous VBA Excel et pour le moment je n'ai pas de probléme d'extraction de données.

    Je souhaite récupérer une moyenne pondérée par rapport aux nombre de semaines dans le mois sous une formule comme : Janvier = Somme (semaines). Valeur / Count (semaines).

    Bonjour Dysorthographie,

    Merci pour ton conseil.

    Bonjour Jeannot45,

    Merci pour cette requête, elle répond partiellement à mon besoin. Sauriez-vous comment je peux extraire ces données sur Excel et rendre cette opération automatique?

    Merci à tous,

  9. #9
    Rédacteur/Modérateur
    Avatar de Jeannot45
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2004
    Messages
    3 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 871
    Par défaut


    Pour automatiser l'export vers excel, tu pourrais avoir un formulaire avec un bouton de commande.

    Sur l'évènement Sur_Clic du bouton, tu pourrais avoir la procédure ci-dessous :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub btnExcel_Click()
        DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel8, "NomDeTaRequeteAnalyseCroisee", "CheminComplet\EXTRACT_FUEL.XLS", True
    End Sub
    Le résultat de ta requête sera intégré dans une nouvelle feuille du classeur.
    Jeannot

    Liens Office indispensables à visiter: Cours (Tutos), F.A.Q., Sources VBA

    Ne posez pas de questions par MP, je n'ai pas le temps d'y répondre

  10. #10
    Membre averti
    Femme Profil pro
    Consultant fonctionnel
    Inscrit en
    Mai 2018
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France, Aube (Champagne Ardenne)

    Informations professionnelles :
    Activité : Consultant fonctionnel

    Informations forums :
    Inscription : Mai 2018
    Messages : 37
    Par défaut
    Bonjour Jannot45,

    Merci pour ton retour, pour ma part j'ai transféré les données sur excel via l'outil Microsoft query et j'actualise la table de données après importation via l'onglet données > actualiser tout.

    Merci.

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

Discussions similaires

  1. Comment calculer une moyenne d'heure ?
    Par matt240490 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 27/07/2013, 09h23
  2. [XL-2007] Comment faire une recherche via VBA
    Par medino55 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 26/03/2012, 12h13
  3. comment charger une listbox via une requete access
    Par sanfour_walhan dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 27/12/2006, 07h44
  4. execute une macro via vba sous access
    Par nes dans le forum Access
    Réponses: 4
    Dernier message: 28/03/2006, 23h15
  5. comment modifier le nom d'une colonne via VBA?
    Par Invité dans le forum Access
    Réponses: 6
    Dernier message: 24/11/2005, 15h36

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