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

Requêtes et SQL. Discussion :

Envoyer requete dans plusieurs fichier selon champ


Sujet :

Requêtes et SQL.

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 50
    Points : 32
    Points
    32
    Par défaut Envoyer requete dans plusieurs fichier selon champ
    Bonjour,

    Voila j'ai une requete qui comprend différents champs dont 1 ou il y a les directions de l'entreprise.

    Je souhaite Faire un export 1 fichier EXCEL par direction.

    Est -il possible de faire cela ?

    Mon seul moyen de le faire pour l'instant et de découper le fichier à la main ou alors faire une invite pour chaque direction. (un peu long).

    Merci de votre aide

  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
    Je pense qu'il suffit de faire une boucle qui pour chaque direction, sélectionne les données puis les exporte dans un fichier Excel
    Il faut donc créer 2 requetes :
    - Une qui liste les directions
    - l'autre qui sélectionne les données d'une direction de la première requete

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 50
    Points : 32
    Points
    32
    Par défaut
    Citation Envoyé par helas
    Je pense qu'il suffit de faire une boucle qui pour chaque direction, sélectionne les données puis les exporte dans un fichier Excel
    Il faut donc créer 2 requetes :
    - Une qui liste les directions
    - l'autre qui sélectionne les données d'une direction de la première requete
    A vrai dire je ne comprend pas ta solution.

    La prémiére requete OK mais la 2éme ?

    Je précise aussi que mon nombre de direction peut évoluer d'un mois sur l'autre .

  4. #4
    Membre éprouvé Avatar de jean-paul lepetit
    Inscrit en
    Février 2005
    Messages
    842
    Détails du profil
    Informations personnelles :
    Âge : 68

    Informations forums :
    Inscription : Février 2005
    Messages : 842
    Points : 919
    Points
    919
    Par défaut
    Salut,

    La solution d'Helas me paraît bonne, mais il faudra passer par du Vba pour pouvoir passer comme paramètre de ta deuxième requête le code direction.

    première requête regroupement de tes codes direction

    boucle faire tant que tu n'es pas à la fin des données de ta première requête

    deuxième requête extraction des données avec comme paramètre le champ direction de ta première requête

    export de ta requête vers excel

    passer à l'enregistrement suivant de ta première requête

    Fin de la boucle

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 50
    Points : 32
    Points
    32
    Par défaut
    Citation Envoyé par jean-paul lepetit
    Salut,

    La solution d'Helas me paraît bonne, mais il faudra passer par du Vba pour pouvoir passer comme paramètre de ta deuxième requête le code direction.

    première requête regroupement de tes codes direction

    boucle faire tant que tu n'es pas à la fin des données de ta première requête

    deuxième requête extraction des données avec comme paramètre le champ direction de ta première requête

    export de ta requête vers excel

    passer à l'enregistrement suivant de ta première requête

    Fin de la boucle
    Je comprend le principe mais je suis bien imcapable d'écrire le code qu'il faut.

    Si quelqu'un a un exemple ...

  6. #6
    Membre éprouvé Avatar de jean-paul lepetit
    Inscrit en
    Février 2005
    Messages
    842
    Détails du profil
    Informations personnelles :
    Âge : 68

    Informations forums :
    Inscription : Février 2005
    Messages : 842
    Points : 919
    Points
    919
    Par défaut
    Un petit bout de code qui devrait t'aider
    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
    Private Sub Commande4_Click()
    Dim MaBd As Database
    Dim MaRqt As Recordset
    Dim StrSql As String, StrSql1 As String
    StrSql = "SELECT [Tbl_Test].[Nom_Dir] FROM Tbl_Test GROUP BY [Tbl_Test].[Nom_Dir];"
    Set MaBd = CurrentDb
    Set MaRqt = MaBd.OpenRecordset(StrSql, dbOpenDynaset)
    MaRqt.MoveFirst
    Do
        StrSql1 = "SELECT Tbl_Test.Nom_Dir, Tbl_Test.chp1, Tbl_Test.Chp2, Tbl_Test.Chp3 "
        StrSql1 = StrSql1 & "FROM Tbl_Test "
        StrSql1 = StrSql1 & "WHERE Tbl_Test.Nom_Dir = '" & MaRqt!Nom_Dir & "';"
        MaBd.QueryDefs("RqtExport").SQL = StrSql1
        DoCmd.TransferSpreadsheet acExport, 8, "RqtExport", "c:\temp\" & MaRqt!Nom_Dir & ".xls", True, ""
        MaRqt.MoveNext
    Loop Until MaRqt.EOF
    End Sub
    penses à ajouter les références à DAO 3.6 et Office 10 dans le menu Outils Référence de VB et à créer une requête nommée RqtExport

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 50
    Points : 32
    Points
    32
    Par défaut
    Ok je tente d’adapter le code.

    Je bloque dés le début sur

    Set MaRqt = MaBd.OpenRecordset(StrSql, dbOpenDynaset)
    J’ai un message d’erreur “incompatibilité de type”

    Or mon champ [Nom_Dir] est bien un champ texte.

    Quel peut être le problème ?

  8. #8
    Membre éprouvé Avatar de jean-paul lepetit
    Inscrit en
    Février 2005
    Messages
    842
    Détails du profil
    Informations personnelles :
    Âge : 68

    Informations forums :
    Inscription : Février 2005
    Messages : 842
    Points : 919
    Points
    919
    Par défaut
    tu as bien rajouté les réferences à DAO 3.6 et à Office 10 ?

    de plus, il faut que DAO 3.6 soit en 3eme position avant les actives X

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 50
    Points : 32
    Points
    32
    Par défaut
    Effectivement l’erreur vient de la.

    J’ai adapté le code pour le reste, ca colle

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 50
    Points : 32
    Points
    32
    Par défaut
    OK ca marche mais je ne réussi pas à faire l'importation sous un fichier .CSV.
    il y a un message d'erreur mise à jour impossible.

    Si je demande à faire l'export dans un fichier EXCEL ca marche.

    Est ce impossible en .CSV ?


    Dans la FAQ j'ai trouvé ceci
    Comment exporter un fichier Excel vers CSV [haut]

    auteur : jbaudin
    Depuis Excel 2002, l'export en CSV via VBA prend par défaut une virgule. (Sauf si on le fait à la main: Fichier/Enregistrer sous/ CSV (séparateur point-virgule)) Pour forcer Excel ou Access à utiliser un point-virgule lors de l'export d'un fichier Excel vers CSV, il faut :


    Vérifier dans les Options Régionales (Panneau de configuration de Windows), onglets Nombres, si le séparateur de liste est bien un point-virgule.
    Ajouter ceci dans le code : Local:=True pour forcer Excel à utiliser le séparateur configuré sur l'ordinateur utilisé.
    Soit :
    appXl.ActiveWorkbook.SaveAs Filename:= _
    "D:\MonFichier.csv", FileFormat:=xlCSV, _
    CreateBackup:=False, Local:=True


    Et là on a bien des points-virgules comme séparateurs dans le fichier CSV.

  11. #11
    Membre éprouvé Avatar de jean-paul lepetit
    Inscrit en
    Février 2005
    Messages
    842
    Détails du profil
    Informations personnelles :
    Âge : 68

    Informations forums :
    Inscription : Février 2005
    Messages : 842
    Points : 919
    Points
    919
    Par défaut
    Salut,

    que veux tu faire, Importer ou Exporter, car jusqu'à présent tu exportais d'Access vers Excel ?

    Le format CSV est un format Texte si tu veux exporter vers du CSV, il faut utiliser

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 26/05/2015, 14h59
  2. Lire dans plusieurs fichiers texte selon le nom de fichier
    Par AJ_ing dans le forum Shell et commandes GNU
    Réponses: 11
    Dernier message: 20/06/2012, 10h43
  3. Réponses: 1
    Dernier message: 02/05/2008, 14h45
  4. requete dans un fichier Ecxel
    Par Toff !!!!! dans le forum Access
    Réponses: 1
    Dernier message: 07/12/2005, 23h23
  5. resultat d'une requete dans un fichier csv
    Par PAYASS59 dans le forum Requêtes
    Réponses: 1
    Dernier message: 21/09/2005, 22h14

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