+ Répondre à la discussion
Affichage des résultats 1 à 16 sur 16
  1. #1
    Invité régulier
    Homme Profil pro
    Inscrit en
    octobre 2012
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : octobre 2012
    Messages : 30
    Points : 6
    Points
    6

    Par défaut Remplacer 5 requêtes par une macro

    Bonjour à tous,

    Je ne suis pas expert Access et je fais appel à vos lumières ^^

    Je vous explique, je dois réaliser plusieurs opérations sur une table contenant des données :
    1 - je dois mettre la table DEVERSEMENT à blanc
    2 - j'exécute une requête ajout nommée AJOUT1 qui déverse des données provenant de la table DONNEES dans la table DEVERSEMENT
    3 - j'exécute une requête ajout nommée AJOUT2 qui déverse des données provenant de la table DONNEES dans la table DEVERSEMENT
    4 - j'exécute une requête mise à jour nommée MàJ1 qui met à jour certains champs vierges de la table DONNEES
    5 - j'exécute une requête mise à jour nommée MàJ2 qui met à jour certains champs vierges dans une autre colonne de la table DONNEES
    6 - j'exporte la table DEVERSEMENT au format .csv

    J'ai commencé à créer une macro qui exécute toutes ces requêtes une après l'autre mais je cale sur l'export au format .csv, et en plus ça me fait 5 requêtes pour pas grand chose !!!

    Donc ma question, comment faire, dans le module des créations des macros, pour "simplifier" tout ça ??

    J'ai édité mes requêtes au format SQL en espérant les intégrer dans une commande quelconque, mais le module des macros dans ACCESS ne me facilite pas la vie !!!

    Merci d'avance pour votre aide.

  2. #2
    Expert Confirmé Sénior
    Avatar de jimbolion
    Homme Profil pro Jean-Marie BAGNIS
    Moulticien
    Inscrit en
    janvier 2013
    Messages
    2 228
    Détails du profil
    Informations personnelles :
    Nom : Homme Jean-Marie BAGNIS
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Moulticien
    Secteur : Santé

    Informations forums :
    Inscription : janvier 2013
    Messages : 2 228
    Points : 4 683
    Points
    4 683

    Par défaut requete

    nicolas54 bonsoir,

    plutôt qu'une requete utilise une fonction !

    Dans un module crée ta fonction un peu comme ci dessous

    Code :
    1
    2
    3
    4
    5
    6
    7
    Function lancerequete()
    DoCmd.SetWarnings False
    DoCmd.OpenQuery "query1"
    DoCmd.OpenQuery "query2"
    ....
    DoCmd.SetWarnings False
    End Function
    Tes requetes se lanceront à la suite des autres !
    le setwarnings sert à désactiver le message de confirmation de mise à jour...


    Je te laisse regarder çà ! Tiens moi informé si tu as un problème

    JimboLion

  3. #3
    Expert Confirmé Sénior
    Avatar de jimbolion
    Homme Profil pro Jean-Marie BAGNIS
    Moulticien
    Inscrit en
    janvier 2013
    Messages
    2 228
    Détails du profil
    Informations personnelles :
    Nom : Homme Jean-Marie BAGNIS
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Moulticien
    Secteur : Santé

    Informations forums :
    Inscription : janvier 2013
    Messages : 2 228
    Points : 4 683
    Points
    4 683

    Par défaut suite

    le dernier setwarnings est à remettre à true ! (mais tu avais corrigé je pense)

    bon courage

  4. #4
    Membre éprouvé
    Homme Profil pro Thierry Pallier
    Regisseur
    Inscrit en
    octobre 2006
    Messages
    225
    Détails du profil
    Informations personnelles :
    Nom : Homme Thierry Pallier
    Âge : 54
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Regisseur
    Secteur : Arts - Culture

    Informations forums :
    Inscription : octobre 2006
    Messages : 225
    Points : 408
    Points
    408

    Par défaut

    Bonsoir tous les 2.
    Dans un premier temps, tu peux faire les ajouts dans une seule requete,puisque c'est dans la meme table.
    Dans un deuxième temps ,tu peux faire aussi les mises à jour dans une seule requete ,puisque ce ne sont pas les memes colonnes.Ont peux meme faire une maj de plusieurs tables dans une meme requete .
    Pour le csv, je ne sais pas.
    A+

  5. #5
    Expert Confirmé Sénior
    Avatar de jimbolion
    Homme Profil pro Jean-Marie BAGNIS
    Moulticien
    Inscrit en
    janvier 2013
    Messages
    2 228
    Détails du profil
    Informations personnelles :
    Nom : Homme Jean-Marie BAGNIS
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Moulticien
    Secteur : Santé

    Informations forums :
    Inscription : janvier 2013
    Messages : 2 228
    Points : 4 683
    Points
    4 683

    Par défaut export CSV

    il y a une fonction transfertext de mémoire sous access pour l'exportation te permettant de spécifier le format ! Tu peux même personnaliser l'export (séparateur,....) en passant le filtre dans la commande docmd.transferttext !

    cherche de ce côté là ! et reviens vers nous si nécessaire

    pour le reste il est vrai que tu pourrais profiter d'une seule requête pour tout mettre à jour !

    JimboLion

  6. #6
    Expert Confirmé Sénior

    Homme Profil pro
    Technicien maintenance
    Inscrit en
    août 2011
    Messages
    2 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : août 2011
    Messages : 2 496
    Points : 4 022
    Points
    4 022

    Par défaut une seule requete

    Si cela ne ralenti pas le traitement, le fait de faire plusieurs requetes permet un débogage plus simple en cas de probs.

  7. #7
    Invité régulier
    Homme Profil pro
    Inscrit en
    octobre 2012
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : octobre 2012
    Messages : 30
    Points : 6
    Points
    6

    Par défaut

    Ok, merci pour vos réponses, je vais tenter comme ça.

    Mais il n'a y pas possibilité de copier le SQL d'une requête et de le coller (si ça marche ?? ) dans une macro ou quelquechose de ce style afin d'éviter d'avoir, sous ACCESS, "50" requêtes qui apparaissent ??

    Voilà ce que ça donne pour le moment :

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    Private Sub Commande582_Click()
    On Error GoTo Err_Commande582_Click
     
        DoCmd.SetWarnings False
        DoCmd.OpenQuery "Déversement RODP"
        DoCmd.OpenQuery "Déversement R1"
        DoCmd.OpenQuery "Déversement RODP - Date"
        DoCmd.OpenQuery "Déversement R1 - Date"
        DoCmd.SetWarnings True
     
    Exit_Commande582_Click:
        Exit Sub
     
    Err_Commande582_Click:
        MsgBox Err.Description
        Resume Exit_Commande582_Click
    End Sub
    Il ne me reste plus qu'à trouver la commande pour mettre la table à blanc + la commande pour exporter au format .csv...

  8. #8
    Membre éprouvé
    Homme Profil pro Thierry Pallier
    Regisseur
    Inscrit en
    octobre 2006
    Messages
    225
    Détails du profil
    Informations personnelles :
    Nom : Homme Thierry Pallier
    Âge : 54
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Regisseur
    Secteur : Arts - Culture

    Informations forums :
    Inscription : octobre 2006
    Messages : 225
    Points : 408
    Points
    408

    Par défaut

    Bonjour le forum.
    Comme dit chrtophe ,celà ne facilitera pas le débogage .
    Pour les requetes actions (update ,delete ou "insertion") ,c'est simple:
    Code :
    1
    2
    3
    4
    5
    DoCmd.SetWarnings False
     
     DoCmd.RunSQL "UPDATE materiel LEFT JOIN planning ON materiel.code = planning.code SET planning.reste = [planning]![reste]-" & Me.quant & _
     " WHERE (((planning.code)=" & Chr(34) & Me.code & Chr(34) & ") AND ((planning.madate)>=[Formulaires]![visuel2]![depart] And (planning.madate)<[Formulaires]![visuel2]![retour]));"
                    DoCmd.SetWarnings True
    Au fait, ce que tu apelle macro ,c'est une procédure (sub) ?!
    A+

  9. #9
    Invité régulier
    Homme Profil pro
    Inscrit en
    octobre 2012
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : octobre 2012
    Messages : 30
    Points : 6
    Points
    6

    Par défaut

    Bonjour,

    Ce que j'appelle macro (étant simple utilisateur ACCESS ^^), c'est ce que l'on voit sur Access sur la gauche : TABLE / REQUETE / FORMULAIRE / ETAT / MACRO

    Sinon, j'ai réussi à bâtir ma requête VBA (c'est bien du VBA non ?) :

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    Private Sub Commande582_Click()
    On Error GoTo Err_Commande582_Click
     
        CurrentDb.Execute "DELETE * FROM [Export GUEPARD];"
     
        DoCmd.SetWarnings False
        DoCmd.OpenQuery "Déversement RODP"
        DoCmd.OpenQuery "Déversement R1"
        DoCmd.OpenQuery "Déversement RODP - Date"
        DoCmd.OpenQuery "Déversement R1 - Date"
        DoCmd.TransferText acExportDelim, "Export GUEPARD", "Export GUEPARD", "K:\GRD\COLLOC\ECONOMIE CONCESSIONNAIRE\Redevances\Export GUEPARD.csv", False
     
        DoCmd.SetWarnings True
     
    Exit_Commande582_Click:
        Exit Sub
     
    Err_Commande582_Click:
        MsgBox Err.Description
        Resume Exit_Commande582_Click
    End Sub

  10. #10
    Invité régulier
    Homme Profil pro
    Inscrit en
    octobre 2012
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : octobre 2012
    Messages : 30
    Points : 6
    Points
    6

    Par défaut

    Tiens, tant que j'y suis, j'exporte donc automatiquement d'Access vers un format .csv différentes données dont des codes postaux.
    Hélas, ces codes postaux peuvent commencer par "0" et ce "0" est purement et simplement supprimer lorsque j'ouvre mon fichier .csv !!!

    Avez-vous une idées pour éviter cette anomalie ??

  11. #11
    Membre éprouvé
    Homme Profil pro Thierry Pallier
    Regisseur
    Inscrit en
    octobre 2006
    Messages
    225
    Détails du profil
    Informations personnelles :
    Nom : Homme Thierry Pallier
    Âge : 54
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Regisseur
    Secteur : Arts - Culture

    Informations forums :
    Inscription : octobre 2006
    Messages : 225
    Points : 408
    Points
    408

    Par défaut

    Bonjour Nicolas_54.
    Essaye de passer ton champ code postal au format texte .Il y a un assistant pour faire un masque de saisie international ou français.
    A+

  12. #12
    Invité régulier
    Homme Profil pro
    Inscrit en
    octobre 2012
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : octobre 2012
    Messages : 30
    Points : 6
    Points
    6

    Par défaut

    Citation Envoyé par Thierry_PALLIER Voir le message
    Bonjour Nicolas_54.
    Essaye de passer ton champ code postal au format texte .Il y a un assistant pour faire un masque de saisie international ou français.
    A+
    Un assistant ? Dans Access ?? Où ça ?
    Mon problème ne vient pas d'Access car dans ma table, le champs est bien au format texte, mais comme il contient des valeurs numériques, lorsque je l'exporte (via une requête VBA) au format .csv, je retrouve ce champs au format numérique et le "0" est supprimé automatiquement !!
    Et dans l'assistant d'export sous Access, je ne parviens pas à lui indiquer que le champs code postal doit être au format texte et non numérique (Cf. ci-dessous)...



    Si quelqu'un connaît une astuce ou un caractère pouvant remplacer le "0" et étant reconnu par les application comme un caractère numérique ???

  13. #13
    Invité régulier
    Homme Profil pro
    Inscrit en
    octobre 2012
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : octobre 2012
    Messages : 30
    Points : 6
    Points
    6

    Par défaut

    J'ai trouvé la solution

    Mais je suis confronté à un nouveau problème

    Il faut que le contenu de ma celulle contienne ="08300" pour que dans mon fichier .csv je ne retrouve que 08300.

    Donc ça c'est cool ! Mais le soucis vient de ma requête dans Access car ma formule correspondrait à ça : Code postal (CPD): "="" & [3 TRESORERIES]![CP] & """

    Mais ça me fait trop de " dans la formule et il ne me la prend pas

    Une (nouvelle) idée ^^

    Merci pour votre patience !

  14. #14
    Invité régulier
    Homme Profil pro
    Inscrit en
    octobre 2012
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : octobre 2012
    Messages : 30
    Points : 6
    Points
    6

    Par défaut

    merci google (comme quoi je ferai mieux de mieux chercher avant de vous solliciter !!).

    Je donne la réponse si ça peut servir à quelqu'un !!

    Il faut rajouter un "

    Code postal (CPD): "=""" & [3 TRESORERIES]![CP] & """"

  15. #15
    Expert Confirmé Sénior
    Avatar de jimbolion
    Homme Profil pro Jean-Marie BAGNIS
    Moulticien
    Inscrit en
    janvier 2013
    Messages
    2 228
    Détails du profil
    Informations personnelles :
    Nom : Homme Jean-Marie BAGNIS
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Moulticien
    Secteur : Santé

    Informations forums :
    Inscription : janvier 2013
    Messages : 2 228
    Points : 4 683
    Points
    4 683

    Par défaut csv

    De mémoire il me semble que le format t'affiche uniquement la première colonne et que des colonnes sont cachées à droite permettant de spécifier le type pour chaque champ !

    Essaye d'écarter les colonnes en cliquant juste à l'extrémité droite de la colonne contenant le nom du champ !

    @++

  16. #16
    Invité régulier
    Homme Profil pro
    Inscrit en
    octobre 2012
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : octobre 2012
    Messages : 30
    Points : 6
    Points
    6

    Par défaut

    On ne peut rien rajouter de plus... La seule possibilité que l'on a c'est de modifier le texte présent dans la première colonne !!

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •