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

Access Discussion :

Importation d'une requête Access sur Excel [AC-2010]


Sujet :

Access

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2013
    Messages : 72
    Points : 68
    Points
    68
    Par défaut Importation d'une requête Access sur Excel
    Bonjour à tous!

    J'essaie de faire un tableau Excel qui importe une partie de ses informations directement depuis une requête Access.

    Mes tests sur une copie de la BDD en local fonctionnent très bien mais voilà: Quand j'essaie d'installer ce système sur le réseau, rien ne fonctionne

    J'ai donc essayé de m'y prendre de plusieurs façons différentes:
    1. En important la requête via l'option "Depuis Access" d'Excel (Données/Données externes) :
      Problème : Lors de la finalisation de la procédure d'importation, le message d'erreur suivant apparait:
      Les données n'ont pas pu être récupérées de la base de données.
    2. En important la requête via l'option "Autre sources - Provenance: Microsoft Query" d'Excel (Données/Données externes) :
      Problème : Lors de la finalisation de la procédure d'importation, le message d'erreur suivant apparait:
      [Microsoft][Pilote ODBC Microsoft Access]Division par zéro
    3. En exportant la requête depuis Access vers mon fichier Excel:
      Problème : Les données sont bien affichées mais aucune connexion n'est faite et je ne peux donc pas mettre mon tableau sur Excel à jour.

    J'ai également vérifié les droits de mes deux fichiers ainsi que de tous les répertoires parents qui me ramenaient à la racine de mon lecteur réseau et j'ai le contrôle total tout du long donc je ne pense pas que le problème puisse venir d'une histoire de droits.

    Je ne sais vraiment plus quoi faire pour que ça marche.. Est-ce que quelqu'un aurait une idée d'où peut venir mon problème?

    Merci d'avance pour vos réponse!

    Jurta

  2. #2
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut
    Bonjour,

    Il semblerait qu'à partir de la version 2002 de la suite Office, la sécurité ai été renforcée.
    En voulant ouvrir une base Access sur le réseau, j'obtenais le message suivant :

    Microsoft Access ne parvient pas à ouvrir ce fichier.
    Il est situé hors de votre intranet ou sur un site non sûr. Microsoft Access n'ouvrira pas le fichier en raison de problèmes de sécurité possibles.
    Pour ouvrir le fichier, copiez-le sur votre ordinateur ou sur un emplacement accessible du réseau.

    La solution qui a résolu mon problème :

    Sous Internet Explorer :

    • Menu Outils
    • Options Internet…
    • Onglet Sécurité
    • Intranet local
    • Bouton Sites…
    • Bouton Avancé…
    • Dans "Ajouter ce site Web à la zone" saisir : \\NomDuServeur
    • Bouton Ajouter
    • OK - OK - OK

    Je n'ai pas compris le rapport, mais ça a résolu mon problème.
    Alors peut-être que ....

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2013
    Messages : 72
    Points : 68
    Points
    68
    Par défaut
    En effet je ne vois pas non plus ce qu'Internet Explorer vient faire la dedans mais si ça a marché pour toi tant mieux!

    De mon côté j'ai essayé ta solution mais ça n'a rien donné.. Mais merci quand même pour ton aide et les informations supplémentaires que tu m'as donné!

    Je continue a essayer un peu tout et n'importe quoi mais toujours les mêmes erreurs.. (C'est fou je n'ai jamais besoin de poser mes questions sur des forums excepté pour les produits office...)

    Du coup si d'autres idées, je suis preneur!

  4. #4
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut
    Re,

    Dommage !

    Par contre, tu pourrai créer ton fichier Excel directement avec un bout de code VBA.

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2013
    Messages : 72
    Points : 68
    Points
    68
    Par défaut
    Pas bête ça! Par contre je suis une bille en VBA, est-ce que tu pourrais me lancer sur le bon chemin? histoire que je ne passe pas 1 semaines sur de mauvaises pistes^^'

  6. #6
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut
    Re,

    C'est une méthode qui ne nécessite pas d'avoir Excel installé sur le poste.
    Un exemple :

    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    Set Rs = CreateObject("ADODB.RecordSet")
    connstring = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=MaBase.mdb"
     
    mysql = ""
    mysql = mysql & "SELECT Champ1, Champ2, Champ3 "
    mysql = mysql & "From MaTable "
     
    Rs.open mySQL, connstring
    if not Rs.EOF then
       chemin= "FichierExcel.XLS"
       Set fso = CreateObject("Scripting.FileSystemObject")
       Set Fic = fso.CreateTextFile(chemin, True)
       ' Titres des colonnes
       ' chr (34) remplace les guillements à la suite de l'instruction
       Fic.writeLine "ID;PWXL;N;E" ' Début du codage excel
       Fic.writeLine "C;Y1;X1;K" & CHR(34) & ("Champ1") & CHR(34)
       Fic.writeLine "C;Y1;X2;K" & CHR(34) & ("Champ2") & CHR(34)
       Fic.writeLine "C;Y1;X3;K" & CHR(34) & ("Champ3") & CHR(34)
       Rs.movefirst
       Ligne = 2
       do while not Rs.eof
          Str_Champ1 = Rs(0)
          Str_Champ2 = Rs(1)
          Str_Champ3 = Rs(2)
          Fic.writeLine "C;Y" & Ligne & ";X1;K" & (Str_Champ1)
          Fic.writeLine "C;Y" & Ligne & ";X2;K" & (Str_Champ2)
          Fic.writeLine "C;Y" & Ligne & ";X3;K" & (Str_Champ3)
          Ligne = Ligne + 1
          Rs.MoveNext
       loop
       Fic.writeLine "E" ' Fin du codage excel
       Fic.Close
       Set Fic = Nothing
       Set fso = Nothing
    end if
    Rs.Close
    Set Rs = Nothing
    MsgBox "Terminé."

  7. #7
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2013
    Messages : 72
    Points : 68
    Points
    68
    Par défaut
    Super! Merci beaucoup!

    Du coup, j'ai quand même encore deux questions :
    1. Par quelle procédure/événement est-ce que j'appel ce code?
    2. Je te vois nul part faire appel à une quelque conque requête.. Alors que c'est ce dont j'aurais besoin ainsi qu'ensuite d'insérer des colonnes additionnelles au milieu de celles tirées de ma requête.. Est-ce possible?

  8. #8
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut
    Re,

    1. Pour exécuter ce code, tu peux le sauvegarder dans un fichier avec l'extension VBS, et quand tu double-cliques dessus, il s'exécute.

    2. La requête est construite aux lignes 5, 6 et 7, puis exécutée sur la ligne 9.

  9. #9
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2013
    Messages : 72
    Points : 68
    Points
    68
    Par défaut
    Ah ba j'avais jamais pensé à cette possibilité (le fichier .vbs à côté).. Du coup je l'ai adapté à mon cas mais il plante à l'ouverture de la connections au fichier (l.7):
    Mon code:
    1
    2 Set Rs = CreateObject("ADODB.RecordSet")
    3 connstring = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=./ISSKA-4 5 Projet.accdb"
    4 mysql = ""
    5 mysql = mysql & "SELECT * "
    6 mysql = mysql & "From Periode "
    7 Rs.open mysql,connstring
    J'ai également essayé de remplacer Microsoft Access Driver (*.mdb) par (*.accdb), aucun changement

    Il m'affiche une erreur qui ne m'aide pas des masses:
    Script: chemin
    Ligne: 7
    Caract.: 1
    Erreur: Erreur non spécifiée
    Code: 80004005
    Source: (null)

  10. #10
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut
    Re,

    Ta base de données ne possède pas l'extension .MDB ?

  11. #11
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2013
    Messages : 72
    Points : 68
    Points
    68
    Par défaut
    Non je suis sur ACCESS2010 donc c'est un .accdb et je n'arrive pas à l'enregistrer avec une autre extension

  12. #12
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut
    Re,

    Il faut utiliser le driver d'Access 2010 sur cette ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    connstring = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=./ISSKA-4 5 Projet.accdb"
    C'est une version 32 ou 64 bits ?

  13. #13
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2013
    Messages : 72
    Points : 68
    Points
    68
    Par défaut
    C'est une version 64bits. Mais suite à ce que tu m'as dit je suis allé chercher le driver pour Access2010 et en fait il suffisait d'ajouter un petit truc:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    connstring = "DRIVER={Microsoft Access Driver (*.mdb, *.accdb)}; DBQ=./ISSKA-Projet.accdb"
    ..Et le fichier se créer mais à son ouverture il me fait deux messages d'erreurs:
    • Le premier me disant que le type de fichier est différent de l'extension spécifiée
    • Et le suivant qui apparait plusieurs fois pour me dire que tel ou tel enregistrement ne passe pas

    Et suivis de quoi il ne m'affiche que quelques informations (uniquement la première colone, celle des clés primaires de ma table(j'ai décidé de commencer par une requête toute simple où je me contente de lister une table)).

    J'ai donc essayer de modifier l'extension du fichier créé par "xlsx" mais là il n'affiche carrément rien en disant que Son extension ou son format est invalide et qu'il ne peut donc pas ouvrir le fichier

    Mais j'ai trouvé des trucs sur le net disant ceci:
    You need to compile your application for the x86 processor to force it to use the 32 bit driver.
    Je sais pas trop comment m'y prendre..

  14. #14
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut
    Re,

    Peux-tu me donner le type des champs (texte, date, ...) que tu veux exporter ?

  15. #15
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2013
    Messages : 72
    Points : 68
    Points
    68
    Par défaut
    Pour l'instant j'exporte toutes les données de ces champs:
    Id ->NuméroAuto
    code -> Texte
    date_fin -> Date/Heure
    date_fin -> Date/Heure
    close -> Oui/Non
    Periode_annuelle -> Oui/Non
    id_periode_annuelle -> Numérique
    budget_annuel_vote -> Oui/Non


    Mais au final c'est une requête de requêtes que je dois faire et il me semble que ça va poser des problèmes supplémentaires..

  16. #16
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut
    Re,

    Essaye de remplacer ces lignes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
          Fic.writeLine "C;Y" & Ligne & ";X1;K" & CHR(34) & (Str_Champ1) & CHR(34)
          Fic.writeLine "C;Y" & Ligne & ";X2;K" & CHR(34) & (Str_Champ2) & CHR(34)
          Fic.writeLine "C;Y" & Ligne & ";X3;K" & CHR(34) & (Str_Champ3) & CHR(34)

  17. #17
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2013
    Messages : 72
    Points : 68
    Points
    68
    Par défaut
    Yes! ça marche! merci beaucoup!

    Par contre au final il faudra que je fasse une requête de requêtes mais je ne peux pas bêtement copier le code de ma requête sur access étant donné qu'elle fait appel à d'autre requête que le fichier vbs ne connaît pas.

    Donc est-ce que tu penses qu'il est possible de reproduire ce principe en créant différent objet de type "requête" (si ça existe) afin de faire appel à certains de leurs champs par la requête principal?

    (c'était assez mind-fuck comme explication donc dis-moi si je me suis mal exprimé^^)

  18. #18
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut
    Re,

    Tu n'aurais pas un exemple concret ?

    Et qu'appelles-tu une requête de requêtes ?

  19. #19
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2013
    Messages : 72
    Points : 68
    Points
    68
    Par défaut
    Sur Access l'on a la possibilité, lors de la création d'une requête, de tirer les informations d'autres requêtes en les joignant par un champ commun (Dans la fenêtre "Afficher tables", sous l'onglet "Requêtes") lorsque l'on veut effectuer plusieurs tris différents qui ne sont pas forcément compatibles.

    En l’occurrence, je fais appel à 3 requêtes différentes, ce qui me donne ça comme code SQL pour la requête finale:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT R_Saisie_projet_budget_p1.Mnemo AS Secteur, R_Saisie_projet_budget_p1.[No projet], R_Saisie_projet_budget_p1.[Intitulé projet] AS [Projets ISSKA], 
    R_Saisie_projet_budget_p1.[Statut projet] AS Statut, R_Saisie_projet_budget_p1.[Créé par] AS Resp, R_Saisie_projet_budget_p1.H_Attrib_Projet_Annee AS [H prévues], 
    R_Saisie_projet_budget_p2.SommeDeHEURES_PAYEES AS [H faites], [SommeDeHEURES_PAYEES]/[H_Attrib_Projet_Annee] AS [% heures], R_Saisie_projet_budget_p3.SommeDeDEPENSE_EFFECTIVE AS 
    [Montant facturé (sans TVA)], R_Saisie_projet_budget_p3.SommeDeBUDGET_PREVU_ANNUEL AS [Montant budget (sans TVA)] 
    FROM R_Saisie_projet_budget_p3 INNER JOIN (R_Saisie_projet_budget_p1 INNER JOIN R_Saisie_projet_budget_p2 ON R_Saisie_projet_budget_p1.ID = R_Saisie_projet_budget_p2.ID_PROJET) ON 
    R_Saisie_projet_budget_p3.ID_PROJET = R_Saisie_projet_budget_p1.ID;
    Où R_Saisie_projet_budget_x est a chaque fois la requête dans laquelle il va tirer ses données

    Maintenant le problème auquel je fais fasse est que cette requête SQL fonctionne sur ACCESS car il connaît les autres requêtes tandis qu'effectuée par un fichier externe, il semble ne pas les reconnaîtres (les requêtes donc) et m'affiche le message d'erreur suivant:
    Script: ...
    Ligne: 5 <- (celle ou l'instruction SQL est entrée en tant que texte de la variable "mysql"...bizzare car à ce niveau il me semble que l'on ne fait qu'entrer une chaîne de caractère dans une variable)
    Caract.: 881
    Erreur: Fin d'instruction attendue
    Code: 800A0401
    Source: Erreur de compilation Microsoft VBScript

  20. #20
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2013
    Messages : 72
    Points : 68
    Points
    68
    Par défaut
    Bon alors excuse moi, c'était une erreur bête de ma part (le ; à la fin de ma ligne)..

    Mais par contre maintenant j'ai un nouveau soucis qui se passe au niveau de cette ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Rs.open mysql,connstring
    L'erreur suivante apparaît:
    Script: ...
    Ligne: 6
    Caract.: 1
    Erreur: [Microsoft][Pilote ODBC Microsoft Access] Top peu de paramètres. 2 attendu.
    Code: 80040E10
    Source: Microsoft OLE DB Provider for ODBC Drivers
    J'ai vérifié et les 2 paramètre existent bien.. Je ne me suis pas gourré dans leur nom, du coup à mon avis l'erreur ne peut venir que de la ligne de code SQL...

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 4
    Dernier message: 01/08/2018, 19h52
  2. [AC-2007] afficher une requête access sur excel automatiquement
    Par marco_t dans le forum Access
    Réponses: 1
    Dernier message: 01/10/2010, 13h57
  3. Importer une requete access sur excel
    Par jahgor dans le forum VBA Access
    Réponses: 5
    Dernier message: 27/08/2007, 11h03
  4. Automation d'une requête paramétrée sur excel
    Par kryssy dans le forum Access
    Réponses: 5
    Dernier message: 28/04/2006, 18h01

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