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 :

Macro pour agréger des requetes et enlever les avertissements


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Inscrit en
    Février 2010
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 70
    Par défaut Macro pour agréger des requetes et enlever les avertissements
    Bonjour les amis,
    Je suis débutante en macro mais j'essaie la chose suivante.

    J'ai créee 4 requêtes sur access qui fonctionnent bien.
    J'ai ensuite créee une macro pour agréger ces requêtes

    Je voudrais tout basculer sur du VBA afin de réduire le processus (créer une requête puis affecter à une macro) et éviter de surcharger ma base access.

    J'ai donc ouvert le code généré et je trouve ceci:

    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
    Option Compare Database
     
    '------------------------------------------------------------
    ' M_Delete_Weeks_Delete_Weeks
    '
    '------------------------------------------------------------
    Function M_Delete_Weeks_Delete_Weeks()
    On Error GoTo M_Delete_Weeks_Delete_Weeks_Err
     
        DoCmd.OpenQuery "Query1", acViewNormal, acEdit
        DoCmd.OpenQuery "Query2", acViewNormal, acEdit
        DoCmd.OpenQuery "Query3", acViewNormal, acEdit
        DoCmd.OpenQuery "Query4", acViewNormal, acEdit
     
     
    M_Delete_Weeks_Delete_Weeks_Exit:
        Exit Function
     
    M_Delete_Weeks_Delete_Weeks_Err:
        MsgBox Error$
        Resume M_Delete_Weeks_Delete_Weeks_Exit
     
    End Function
    J'aimerai faire la chose suivante:

    1- Ajouter une ligne de code pour désactiver toutes les "avertissements" qu'Access fait apparaître lors de l'éxuction d'une requête.
    (Je n'ai pas trouvé l'action "Avertissement" dans l'éditeur de macro assisté)

    2-Enchaîner les requêtes mais au lieu de demander d'activer la requête, je voudrai si possible renseigner le code SQL associé (afin de ne plus être obligée de garder ces requêtes sur access)
    Est-ce possible?

    3- Les 4 requêtes reposent sur un même critère (une date) que je demande de renseigner à leur ouverture.
    Plutôt que de le renseigner 4 fois j'aimerai bien le rentrer au début et qu'il soit utilisé pour toutes les requêtes.

    Pour info je vous mets à quoi ressemble le code SQL d'une des requêtes, sachant que les autres requêtes sont exactement identique si ce n'est qu'elles le font sur des tables différentes.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    DELETE [Table1].*, [Table1].WEEK
    FROM [Table1]
    WHERE ((([Table1].WEEK) Between [1st week of the quarter: aaaa/ww] And "max"));
    Si une bonne âme a une solution

    Merci, Julie

    PS: précision, je suis sur une version d'access en anglais

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 684
    Par défaut
    salut,

    la repond a toutes ces questions
    http://access.developpez.com/faq/?page=SQL#Warning
    repond aux questions 1 et 2


    http://access.developpez.com/faq/?pa...DefTypParamReq
    et
    http://access.developpez.com/faq/?page=SQL#ReqParamVar
    pour la 3

    la piste pour effectuer une approche plus globale serait les tables de parametres
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel (3e édition)
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  3. #3
    Membre actif
    Inscrit en
    Février 2010
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 70
    Par défaut
    Merci jpcheck pour ta réponse.
    Je vais investiguer tout ceci.

    Ju

  4. #4
    Membre confirmé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mars 2004
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mars 2004
    Messages : 37
    Par défaut
    Bonjour,
    quelques éléments de réponse :

    - Pour désactiver les messages d'avertissement, utilises la syntaxe suivante pour désactiver :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.SetWarnings False
    et la suivante pour réactiver les messages d'alerte Access.
    A utiliser avec parcimonie car tous les messages Access sont désactivés.

    - Si tu souhaites exécuter du SQL en VB, utilises la syntaxe suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.RunSQL "<ton code SQL>"
    - Pour obtenir une boite de dialogue, utilises la fonction InputBox comme ci-dessous :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    date_demandee = InputBox("Renseigner la date (jj/mm/aaaa"", "titre de la boite de dialogue")
    Utilises ensuite cette variable dans ton code SQL :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    DoCmd.RunSQL "DELETE [Table1].*, [Table1].WEEK
    FROM [Table1]
    WHERE ((([Table1].WEEK) Between " & date_demandee & " And "max"));"
    Bonne chance

  5. #5
    Membre actif
    Inscrit en
    Février 2010
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 70
    Par défaut
    Oh Merci Sylvain ça m'aide beaucoup j'étais pas partie comme ça du tout.

    Juste une toute petite question, est-il possible de créer une liste déroulante dans l'Input box?
    Je ne sais pas trop comment ça s'appelle mais comme je dois sélectionner entre une 10aine de date, je me dis qu'il serait plus opportun de faire apparaître une liste déroulante.

    En cherchant j'ai cru comprendre qu'il fallait utiliser la ComboBox
    Est-ce que les valeurs (parmi lesquelles choisir) doivent être sur une table access ou je peux les indiquer directement dans ma macro?

  6. #6
    Membre actif
    Inscrit en
    Février 2010
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 70
    Par défaut
    Re moi,
    J'ai commencé à "coder" en attendant de voir pour la liste déroulante (si on peut appeller ça du code lol)

    Voici ce que j'ai, mais par contre ça ne marche pas trop, comme je le disais je suis novice, il doit avoir des erreurs de syntaxes en chaîne

    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
    Private Sub DeleteParameter()
    DoCmd.SetWarnings False
     
    date_demandee = InputBox("StartingWeek (jj/mm/aaaa)", "Starting Week")
     
    End Sub
     
    Sub Deletion()
     
    DoCmd.RunSQL "DELETE [Table1].*, [Table1].WEEK"
    From [Table1] WHERE ((([Table1].WEEK) Between " & date_demandee & " And "max"));"
     
    "DELETE [Table2].*, [Table2].WEEK
    From [Table2]
    WHERE ((([Table2].WEEK) Between " & date_demandee & " And "max"));"
     
    "DELETE [Table3].*, [Table3].CORP_Week
    From [Table3]
    WHERE ((([Table3].CORP_Week) Between " & date_demandee & " And "max"));"
     
    "DELETE [Table4].*, [Table4].CORP_Week
    From [Table4]
    WHERE ((([Table4].CORP_Week) Between " & date_demandee & " And "max"));"
     
    DoCmd.SetWarnings True
    End Sub
    Je crois que je n'ai pas trop réussi à enchaîner les commandes SQL non plus

Discussions similaires

  1. Réponses: 0
    Dernier message: 22/03/2013, 14h21
  2. [XL-2010] Macro pour inserer des ligne avec les formules de la ligne au dessus
    Par Argonan dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 07/02/2012, 13h58
  3. Réponses: 0
    Dernier message: 11/11/2010, 09h30
  4. [VBA-E] Probleme Macro pour gérer des cases à cocher
    Par bibiche2184 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 09/06/2006, 19h03
  5. macro pour créer des graphiques
    Par Sebastien_INR59 dans le forum Access
    Réponses: 1
    Dernier message: 07/06/2006, 10h44

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