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 :

Modification de code VBA pour insertion de données dans un fichier


Sujet :

VBA Access

  1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Octobre 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2017
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Modification de code VBA pour insertion de données dans un fichier
    Bonjour,

    J'aurais besoin d'aide pour un code VBA à modifier (je précise qu'en fait je ne connais pas VBA... !)

    J'ai 2 fichiers Access, l'un est un formulaire de commande qui envoie des données dans l'autre.
    C'est à dire:
    Lorsqu'une commande est passée dans le fichier A, une nouvelle table est créée dans le Fichier B, avec les informations de cette commande. Le fichier B est donc construit de telle manière que chaque jour est incrémenté d'une nouvelle table par commande.

    Mon problème est que je dois centraliser ces données pour faire des stats. Je voudrais donc créer une table "Synthèse" dans le fichier B, et changer le code VBA du fichier A qui envoie les infos pour que les infos qui m'interessent soient directement envoyées dans la table synthèse du fichier B.

    Quelqu'un aurait il les compétences et la motivation pourme filer un coup de main là dessus??

    voici le code (j'ai enlevé le nom du fichier car info confidentielle):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Function ExportStats()
     
    Dim FichierBDstats As String
    Dim nomTable As String
    Dim VotreUA As String
     
    FichierBDstats = XXXXX
    VotreUA = Forms![Sélection programme opératoire].Modifiable0
    nomTable = VotreUA & "_" & Format(Date, "dd-mm-yyyy") & "_" & Format(Time, "hh-nn-ss")
    DoCmd.TransferDatabase acExport, "Microsoft Access", FichierBDstats, acTable, "Statut Besoins Boites J+1", nomTable
     
    End Function

    Merci pour vos réponses!!

  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
    Bonjour.

    Je te suggère de supprimer les tables journalières et de ne garder que la table de synthèse.
    Pour avoir les commandes d'une journée en particulier il suffit de faire une requête de sélection avec un critère sur la journée.

    Elle ressemblerai à :

    tblCommande:
    ClefCommande (Numéro automatique attribué par le système)
    NoCommande (Le numéro de ta commande actuellement)
    DateCommande (La date du jour de la création de la commande, évite d'avoir une table par jour)
    Les autres informations de ta table actuelle des commande

    Pour l'alimenter le plus simple est de faire une table liée dans ta BD A et d'utiliser une requête d'ajout à la place du transfert.

    Au niveau du code cela donnerai quelque chose du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    dim db as dao.database: set db=currentdb
    call db.execute("NomTaRequeteAjout", dbfailOnError)
    db.close: set db=nothing
    En fait je ne saisi pas pourquoi vous avez procédé ainsi.
    À priori, un simple formulaire sur la table des commandes liée dans la table A ferait le travail directement et sans une seule ligne de code.

    A+
    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 Candidat au Club
    Femme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Octobre 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2017
    Messages : 3
    Points : 1
    Points
    1
    Par défaut merci pour la réponse!
    Merci pour la réponse....

    Malheureusement je ne comprends pas tout

    Ce n'est pas moi qui ai construit le fichier et je reprends donc "le bébé" en cours de route... et effectivement ces tables qui s'incrémentent chaque jour m'embêtent bien.

    Je ne vois pas où mettre la requête "ajout". Car en fait je ne veux pas filtrer sur une journée en particulier, mais plutôt construire une BDD avec certaines infos.

    Cela dit, je peux aussi envisager de repartir de 0, et créer un nouveaux code pour alimenter ma table synthèse avec les infos voulues.

    Auriez vous un code pour alimenter cette table "synthèse", avec en colonne, les infos suivantes:
    - Date (jour de commande, validé par l'envoi du formulaire)
    - "UA" (numéro de l'utilisateur qui passe la commande, numérique)
    - Boites (texte, nom de la ligne de commande)
    - Selectionne (numérique, la boite est commandée si valeur = "-1")

    Merci beaucoup!

  4. #4
    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
    Bonjour.

    Ce n'est pas moi qui ai construit le fichier et je reprends donc "le bébé" en cours de route... et effectivement ces tables qui s'incrémentent chaque jour m'embêtent bien.
    Tu es victime d'un conception "à la Excel" de ta BD. La table de synthèse est une opportunité pour revenir à une conception mieux adaptée à Access.

    À priori, ta table de synthèse devrait contenir les même champs (colonnes) que ta table quotidienne.
    Pourrais-tu poster la structure de ta table quotidienne, cela aidera à faire des suggestions plus claires.

    Pour info, la requête ajout est une requête à créer dans ta base A, puis a appeler dans le code.

    A+
    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.

  5. #5
    Nouveau Candidat au Club
    Femme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Octobre 2017
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2017
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Structure table
    Bonjour,

    Merci pour la réponse.

    Oui, bien sur, la structure de la table est la suivante:

    le fichier contient 13 colonnes: Rang / UA / Boites / Libellés boites
    / Code panier / Selectionne / Statut / Spécialite / N° / Armoire Sale
    / NoCycleLaveur / Dernière modification / Statut priorité / Tri

    Je pense que ces colonnes reprennent les différentes infos envoyées
    par le formulaire. Mais ma table de "Synthèse" ne doit récupérer que
    les informations suivantes:

    Date (sachant que je n'ai pas de colonne date du jour dans ma table actuelle)
    UA (numérique, code de l'utilisateur qui passe la commande)
    Boites (texte)
    Selectionne (si valeur = -1 la boite est commandée)

    Si vous avez une solution ça m'aiderait beaucoup!!

    Merci

    Bonne journée

  6. #6
    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
    Bonjour.

    Pour une table de synthèse, je remettrai tous les champs. Il est à peu près sur que tu vas en avoir besoin dans un avenir plus ou moins proche.
    Tu n'est pas obligée, la solution est la même avec juste moins de champs.

    Donc tu crée dans ta base qui contient les tables quotidiennes une table tblSynthese
    DateCommande
    Rang
    UA
    Boites
    Libellés boites
    Code panier
    Selectionne
    Statut
    Spécialite

    Armoire Sale
    NoCycleLaveur
    Dernière modification
    Statut priorité
    Tri

    Ensuite dans ta BD A, tu lies la table tblSynthese de BD B. Comme tu n'as pas précisé la version d'Access difficile de t'expliquer cette étape en détail mais cela se trouve facilement sur le net.

    Après tu crées dans BD A une requête d'ajout des données de [Statut Besoins Boites J+1] dans tblSynthese. (Je suppose que tu vas la nommer reqAjoutSynthese).
    Si tu utilises tous les champs, tu choisis * et Access va copier toutes les données dans la table quelque soit le nombre de champs (colonnes).
    C'est là que tu vas compléter le champ DateCommande avec =Date() qui va te donner la date du jour. Il faut que tu ajoutes ce champ aux champs ajoutés.

    En suite tu vas dans ton code VBA et tu mets :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    dim db as dao.database: set db=currentdb
    call db.execute("reqAjoutSynthese", dbfailOnError)
    db.close: set db=nothing
    après le code de transfert.

    A+
    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.

Discussions similaires

  1. Ligne de Code VBA pour actualiser des données sous PPT
    Par harald78 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/10/2016, 09h27
  2. [XL-2013] Erreur code vba pour "programme extraction données web"
    Par tatamarc dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 13/08/2013, 12h07
  3. Réponses: 1
    Dernier message: 09/01/2012, 14h49
  4. Code VBA pour importer des données vers Excel
    Par thanmirt dans le forum SDK
    Réponses: 1
    Dernier message: 09/04/2011, 17h53
  5. Code VBA pour Copier une cellule dans un filtre?
    Par Redisdead dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 12/02/2009, 05h48

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