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 :

enregistrement automatique nom de colonne


Sujet :

VBA Access

  1. #1
    Nouveau membre du Club
    Inscrit en
    Septembre 2008
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 68
    Points : 38
    Points
    38
    Par défaut enregistrement automatique nom de colonne
    Bonjour à tous,

    Je suis complètement novice en VBA.

    Je commence tout juste à m'intéresser à l'automatisation des taches dans access.

    J'ai regardé un peu sur les forums, mais je n'arrive pas à trouver ce que je veux.

    Je vous explique mon problème :

    je réalise une requête dans access que j'enregistre en tant que requête avec un nom.
    ensuite, j'ai trouvé un petit script qui exporte ma requête dans un répertoire en dbf :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub exp_req_dbf()
    Dim access As access.Application
    Set access = CurrentProject.Application
    access.DoCmd.OpenQuery "MTO_2009_03"
    access.DoCmd.TransferDatabase acExport, "dBASE IV", 
    "C:\Documents and Settings\Bureau\", acQuery, "ma_query", "ma_query.DBF"
    DoCmd.Close acQuery, "ma_query"
    End Sub
    Je me dit que ça doit être possible de ne pas enregistrer la sélection en tant que requête.
    Mais plutôt, depuis la fenêtre de sélection, de me faire un bouton (ou un script dans un premier temps) qui exporte dans un répertoire (toujours le même) et qui donne automatiquement le nom de deux colonnes de ma sélection à mon fichier DBF.

    quelqu'un sait-il comment est-ce possible de faire ?

    je vous remercie,

    à bientôt,

  2. #2
    Membre chevronné
    Inscrit en
    Août 2006
    Messages
    1 588
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 1 588
    Points : 2 178
    Points
    2 178
    Par défaut
    Bonjour,
    pour récupérer le nom d'une colonne, tu peux faire ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    NomColonne = CurrentDb.querydefs("Requête1").Fields(0).Name
    Ceci te retourne la colonne 1

    pour le reste, ce n'est pas clair. Que veux-tu faire ?

  3. #3
    Nouveau membre du Club
    Inscrit en
    Septembre 2008
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 68
    Points : 38
    Points
    38
    Par défaut
    Bonjour helas et merci pour la réponse.

    Je vais tenter de mieux exprimer mon besoins :

    Je veux exporter une requête de sélection depuis access vers du dbf (dans un dossier de mon ordi).

    Il faudrait que la requête (réalisée à partir d'un formulaire) ne soit pas enregistrée dans ma base en tant que requête mais exportée en dbf avec pour nom "blabla_colonne1_colonne2.dbf".

    Je veux donc faire ma sélection de plusieurs champs avec le formulaire et cliquer sur un bouton pour en exporter le résultat dans un fichier dbf qui portera le nom de deux colonne.

    Interfacer avec un bouton, c'est secondaire.
    Pour l'instant, je voudrait comprendre comment je peux faire en VBA tout ce que j'arrive à faire à la mano.

    Voilà, j'espère que j'ai été plus clair.

  4. #4
    Nouveau membre du Club
    Inscrit en
    Septembre 2008
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 68
    Points : 38
    Points
    38
    Par défaut
    Re bonjour,

    avec le code suivant, j'arrive à récupérer une requête pré-enregistrée dans ma base et à lui donné le nom du champs.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub exp_req_dbf()
    Dim access As access.Application
    Set access = CurrentProject.Application
    access.DoCmd.OpenQuery "Pluvio_mois_voulu"
    NomColonne = CurrentDb.QueryDefs("pluvio_mois_voulu").Fields(4).Name
    access.DoCmd.TransferDatabase acExport, "dBASE IV", "C:\Documents and Settings\Bureau\", acQuery, "Pluvio_mois_voulu", NomColonne
    DoCmd.Close acQuery, "ma_query"
    End Sub

    Merci helas.

    Je me suis rendu compte que je voulais nommer mon dbf avec la concaténation des valeur de deux champs. Il s'agit des champs "année" et "mois" qui ne sont pas identique dans la requête enregistrée mais qui le seront dans le résultat de sélection en passant par le formulaire.

    Je crois que j'embrouille tout là.

    reprennons.

    j'ai des données météo. mon prédécesseur à créé un formulaire pour sélectionner les données météo de l'année et du mois voulu.
    avec des listes déroulantes, on choisis les critères (2009 et 09 par exemple)
    Cela me renvoi un résultat tabulaire non enregistré (si je ne me trompe pas) avec mes données météos du mois et de l'année.

    Je voudrais faire un scripte VBA pour récupérer le résultat de cette requête (qui n'est pas enregistrée, c'est simplement le résultat d'une sélection d'un formulaire) et l'enregistrer en DBF avec comme nom "2009_09".

    J'espère que c'est plus clair et pas trop compliqué.

    Merci d'avance et à bientôt.

  5. #5
    Membre chevronné
    Inscrit en
    Août 2006
    Messages
    1 588
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 1 588
    Points : 2 178
    Points
    2 178
    Par défaut
    Il serait plus simple de récupérer les cirtères par les champs du formulaire soit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    fichier = Me!annee & Me!Mois & ".dbf"
    si la liste de choix des années s'appelle annee et celle des mois mois
    sinon connaitre la position de la colonne annee et de la colonne mois dans la requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    fichier = CurrentDb.querydefs("Requête1").Fields(2).Name & CurrentDb.querydefs("Requête1").Fields(3).Name & ".dbf"
    en considerant la 3eme colonne pour l'année et la 4ème pour le mois dans l'exemple

  6. #6
    Nouveau membre du Club
    Inscrit en
    Septembre 2008
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 68
    Points : 38
    Points
    38
    Par défaut
    Bonjour helas,

    Merci pour les réponses, ces bouts de codes m'aident beaucoup;

    Mais cela ne règle pas totalement mon problème : les scripts renvoient les nom des champs et pas les valeurs d'enregistrement.

    j'ai testé le script suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fichier = Me!annee & Me!Mois & ".dbf"
    mais il semble que le mot clé "Me" soit mal utilisé.
    voici ce que j'ai écris
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub exp_req_dbf()
    Dim access As access.Application
    Set access = CurrentProject.Application
    access.DoCmd.OpenQuery "Pluvio_mois_voulu"
    fichier = Me!M_Annee & Me!Mto_mois & ".dbf"
    access.DoCmd.TransferDatabase acExport, "dBASE IV", "C:\", acQuery, "Pluvio_mois_voulu", fichier
    DoCmd.Close acQuery, "ma_query"
    End Sub

    Ce que je voudrais c'est récupérer la première ligne mois et année (par exemple "10_2009" et non pas "moisannée" dans mon titre sinon toutes les requêtes auront le même nom.

    est-ce que vous avez une solution ?

    merci beaucoup.

    à bientôt

  7. #7
    Nouveau membre du Club
    Inscrit en
    Septembre 2008
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 68
    Points : 38
    Points
    38
    Par défaut
    Bonsoir,

    J'ai un peu évolué mais pas beaucoup dans mon cheminement.

    Maintenant, j'arrive à exporter en DBF une requête réalisée à partir d'un formulaire sans l'enregistrer.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub exp_rq_dbf()
    Dim access As access.Application
    Set access = CurrentProject.Application
    Set qd = CurrentDb.CreateQueryDef("req_tempo", "SELECT * FROM C_pluvio_mois_voulu_")
    access.DoCmd.TransferDatabase acExport, "dBASE IV", "C:\", acQuery, "req_tempo", "req_tempo.DBF"
    DoCmd.Close acQuery, "req_tempo"
    DoCmd.DeleteObject acQuery, "req_tempo"
    End Sub
    ce qu'il faut maintenant c'est donner un nom en fonction des données qu'il y a dans ma requête.

    quelqu'un sait il comment donner un nom variable ou alors le résultat d'une requête comme nom du fichier à exporter ?

    Merci d'avance,

    cordialement,

Discussions similaires

  1. [Toutes versions] Message d'erreur après enregistrement automatique sous un autre nom en VBA
    Par robinicol dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 04/01/2011, 09h38
  2. Réponses: 1
    Dernier message: 28/05/2008, 20h13
  3. Réponses: 4
    Dernier message: 26/03/2008, 09h43
  4. Réponses: 2
    Dernier message: 06/04/2007, 18h54
  5. Réponses: 11
    Dernier message: 30/10/2006, 13h51

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