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 :

Ouverture fichier Excel impossible en VBA : Erreur pilote et fichier introuvable


Sujet :

Access

  1. #1
    Membre habitué
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 154
    Points : 148
    Points
    148
    Par défaut Ouverture fichier Excel impossible en VBA : Erreur pilote et fichier introuvable
    Bonjour,

    J'ai développé une petite base de données pour traiter des fichiers Excel avec onglets que l'on me fournit (issus d'un ERP)
    Tout fonctionnait bien jusqu'à maintenant.
    Je choisis le fichier dans une boite de dialogue, et une fonction récupère les noms de feuilles dans une variable et ensuite les importe dans une table.
    Or depuis, j'ai le message suivant :
    Nom : Capture.JPG
Affichages : 597
Taille : 16,4 Ko

    De plus, lorsque j'exécute "à la main" la fonction, le fichier Excel est introuvable !, n'existe pas etc... Voir capture
    Je peux pourtant l'ouvrir normalement avec Excel

    Nom : Capture2.JPG
Affichages : 662
Taille : 25,1 Ko

    D'où peut venir le problème ? du fichier Excel ? ou ma BD ? (que je n'ai pas du tout modifié ?

    Pour contourner le problème, je fais du copier/coller des onglets dans la table Access : pas très pratique.....

    Merci pour vos pistes

    Cordialement
    Didier

  2. #2
    Membre éprouvé
    Inscrit en
    Août 2008
    Messages
    740
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 740
    Points : 1 045
    Points
    1 045
    Par défaut
    Bonjour,

    difficile de voir d'où vient le problème,
    - si l'ERP envoie du xls, il faut peut être passer à xlsx
    - s'il s'agit d'une erreur interne access tu peux essayer de réinitialiser ta base: tu crées une base vide, dans VBA tu ajoutes les références nécessaires (excel, office...), puis tu importe tous les objets de ta base actuelle; (conseil sans garantie!)

  3. #3
    Membre habitué
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 154
    Points : 148
    Points
    148
    Par défaut
    Bonsoir,

    Merci pour les informations.
    En fait l'ERP envoye du XLSX, mais je le sauvegarde sous XLS... J'ai tout de même essayé avec du XLSX, c'est pareil.
    Pour la deuxième solution, idem...

    Je vais me retourner vers le "fournisseur" du fichier Excel, je suis presque sur que quelque chose a changé et que le fichier n'est plus fait comme auparavant.

    Cordialement.

    Didier71

  4. #4
    Membre éprouvé
    Inscrit en
    Août 2008
    Messages
    740
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 740
    Points : 1 045
    Points
    1 045
    Par défaut
    Bonjour;

    si ce n'est pas confidentiel, poste ta base et un fichier excel à lire

  5. #5
    Membre confirmé
    Inscrit en
    Février 2011
    Messages
    466
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 466
    Points : 550
    Points
    550
    Par défaut
    Bonjour,

    Un problème fréquent est la disparition soudaine des références à MS Office. Quand on passe d'un PC à un autre, quand on fait un upgrade, les références changent et Access s'y perd.
    Dans MS Access VBA, vérifier le menu Outils / Références. Dans la liste des 6-7 références cochées, tu verras peux-etre quelque chose qui commence par "MISSING".
    D'une installation à l'autre (d'un PC à un autre), tu peux devoir utiliser Office11 ou Office 12 ou Office 15, ....

    C'est pas difficile à corriger mais on n'y pense pas toujours.

    Pour éviter ce problème à l'avenir, renseigne-toi sur la différence entre late Binding / early binding.


    Par ailleurs, si ton ERP te donne un xlsx, pourquoi ne pas travailler avec xlsx ? C'est une version plus moderne que xls. Si tu fais un docmd.transferspreadsheet, verifie la version de Excel que tu importes. Pour importer un xlsx, utilise acSpreadsheetTypeExcel12Xml .
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12Xml, "tblCustomer", "C:\Temp\Book1.xlsx", True
    Bonne chance

  6. #6
    Membre habitué
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 154
    Points : 148
    Points
    148
    Par défaut
    Bonjour,

    Tout d'abord merci à vous deux pour l'intérêt manifesté ...

    Pour répondre à accessisgood,
    ma base est assez volumineuse, et en effet, l'Excel contient des données commerciales confidentielles...
    A la rigueur, je pourrais expurger la base du superflu, et remplir un Excel avec des données "bidon", faut voir

    Pour répondre à PipoWil :
    Il ne manque pas de références, je viens de vérifier....
    Le problème est que je suis en Access 2003, et il ne connaît pas la constante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    acSpreadsheetTypeExcel12Xml
    Je dois apporter quelques précisions : A la maison, comme au bureau, je suis en Access 2003, et j'ai le même phénomène !
    La seule différence réside dans la version Excel : je suis en 2007 à la maison et 2003 au bureau

    C'est ce qui me faisait dire que le souci venait du fichier Excel....
    Mais je vais quand même préparer une base allégée, un Excel aussi. J'aimerai bien comprendre d'où vient le problème !
    Je poste ça dès que possible...

    Merci..A plus tard

  7. #7
    Membre confirmé
    Inscrit en
    Février 2011
    Messages
    466
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 466
    Points : 550
    Points
    550
    Par défaut
    En effet, si tu travailles avec Office 2003, les fichiers xlsx ne sont pas reconnus et acSpreadsheetTypeExcel12Xml non plus.
    Comme tu l'avais évoqué, peut-être pourrais-tu demander à tes amis de l'ERP de faire un export en xls plutôt que xlsx ou, pourquoi pas en csv.
    L'autre solution serait de migrer vers une version de Office plus récente (Office 2016). 2003 : ça date un peu.... Evidement, une license Office cela coûte cher alors que un fichier csv ne coûte rien.

  8. #8
    Membre habitué
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 154
    Points : 148
    Points
    148
    Par défaut
    Rebonjour,


    Voici une base allégée, et un Excel de test (sauvegardé de XLSX au format XLS 97-2003)
    Je n'ai laissé que quelques onglets significatifs (pas tous au même format ! merci le gars de l'ERP)
    Dans la base un seul formulaire pour importer le fichier Excel, et le problème survient...

    Si une âme charitable peut me dire d'où vient le problème ? Le fichier Excel ? la base Access ?
    Ca m'aiderait beaucoup....

    Merci d'avance.

    Didier71

    PS : "mes amis" de l'ERP m'avait envoyé un Excel au format 2003, mais le problème était le même !!!!
    Fichiers attachés Fichiers attachés

  9. #9
    Membre confirmé
    Inscrit en
    Février 2011
    Messages
    466
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 466
    Points : 550
    Points
    550
    Par défaut
    Salut,
    J'utilise Access 64 bits et je ne peux pas exécuter ton code.
    J'ai essayé d'importer ton fichier excel manuellement et cela fonctionne parfaitement. Le fichier Excel semble au bon format.

    En lisant ton code, j'ai été intrigué par la manière dont tu fais tes requètes. Dans ton formulaire, tu prépares le statement SQL puis tu appelles une fonction qui en appelle une autre qui utilise une queryDefinition pour créer et exécuter la query puis tu détruis la query (ça, c'est bien!).

    As-tu déjà essayé ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    LeSQL = "INSERT INTO AGAX ( Comp...
        CurrentDb.Execute LeSQL
    Cela me semble plus simple que ta méthode mais peut-etre as-tu une bonne raison d'utiliser ta méthode. Laquelle ?


    Par ailleurs, tu as la Sub TableErreur() qui te supprime la table que MS Access te donne avec les erreurs d'importation. Je comprends que tu t'en débarasses en mode production mais si tu as un problème pour le moment, peut-être que temporairement tu pourrais l'éviter et regarder ces messages d'erreur d'importation.

  10. #10
    Membre confirmé
    Inscrit en
    Février 2011
    Messages
    466
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 466
    Points : 550
    Points
    550
    Par défaut
    Bon, j'ai refait un essai.
    J'ai supprimé le module qui permet de sélectionner le fichier à importer et j'ai codé en dur sur le bouton cmdImportAX_Click()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strClasseur = "C:\Temp\Test\ExcelTest.xls"
    J'ai dû rajouter une colonne Company à la table AGAX
    Le fichier importe les 2 premières feuilles de Excel puis me donne le message d'erreur suivant : "Erreur d'importation : Field 'F44' doesn't exist in table 'EU11'.
    Ton fichier Excel n'a que 43 colonnes, la 44ième est vide mais MS Access, lui, y voit qqch. C'est fréquent avec Excel, il suffit que le fichier soit manipulé et que l'utilisateur ait écrit qqch puis effacé, il reste une trace que Access voit mais que nous humains ne voyons pas.

    Puis-je te proposer une autre manière de travailler ?
    Si tu importes la feuille dans une table pré-existante, tu risques toujours d'avoir des problèmes de format, surtout avec MS Excel qui est souvent retravaillé par des humains.
    Au lieu d'ajouter la feuille importée à une table existante, importe ta feuille dans une nouvelle table. MS Access créera l table qu'il lui faut.
    Ensuite, tu peux verifier le format de cette table temporaire, compter le nombre de colonnes, vérifier le format des données,...
    Si la table importée réussit tes tests alors tu exécute une requète qui va ajouter les données de la table temporaire à tes donnés AGAX.
    Enfin, tu détruis la table temporaire.

    Dans le cas présent, Access te créera une table EU11 avec 44 colonnes (ou plus) et tu verras que la colonne F44 est vide. Si les 43 autres colonnes te satisfont, importe-les.

  11. #11
    Membre habitué
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 154
    Points : 148
    Points
    148
    Par défaut
    Bonsoir,

    D'abord, merci pour ces bons conseils, mais j'enrage car j'ai essayé de faire comme tu dis, mais j'ai toujours le même message !
    Je n'arrive même pas à l'erreur Field44...Pas plus que manuellement ! il me dit toujours que le fichier n'est pas au bon format ou inexistant.

    Du reste quand ça fonctionnait, j'avais déjà eu cette erreur.. IL me suffisait de supprimer les dernières colonnes du fichier et je pouvais importer sans problème.

    Tu as raison, pour les SQL, c'est plus rapide comme ça.. Mais parfois j'ai besoin de créer simplement la requête, car ensuite, j'ai un fonction qui "exporte" le contenu de la requête en Excel !
    (la ça marche bien heureusement)
    C'est pour ça que j'avais créée un sub "Exécuter requete" et une autre "créer requête" bien rangées dans un module "gestion requêtes"

    Ta suggestion est très intéressante, j'éviterais alors les problèmes de format des feuilles Excel, qui comme tu l'as remarqué sont différents (EU11, IT11, FR11)
    Mais "mes amis de l'ERP" m'ont promis de revoir le format, unique pour tous les onglets avec moins de champs.. Je vais donc attendre un fichier test.

    Pour en revenir à mon problème, la je sèche carrément !
    Je me demande si ça ne viendrait pas du fait que j'ai forcé la MAJ Windows 10 (Fall Creator update) encore que j'ai le même problème au bureau alors que je suis en Win 7.

    Ce week-end je vais essayer plusieurs chose :
    - Supprimer Access 2003 et remettre Access 2007.
    - et en dernier ressort rétrograder la MAJ Win10.

    Je ne vois rien d'autre à faire pour le moment...

    Bon week end et merci encore pour ton aide

    Didier71

  12. #12
    Membre habitué
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 154
    Points : 148
    Points
    148
    Par défaut
    Bonsoir,

    Et bien voila, j'ai résolu mon problème....J'ai fait ce que j'avais annoncé :
    J'ai supprimé cette mise à jour Win10 Fall Creator + J'ai viré Access 2003 et remis Access 2007

    Ma base fonctionne très bien sans avoir rien modifié !

    Du coup, comme j'ai fait les deux en même temps, je ne sais pas d'où venait le problèmes !
    Mais l'essentiel étant que ma base fonctionne

    PipoWil, merci pour tes conseils que je vais mettre en application..

    Didier71

Discussions similaires

  1. Réponses: 4
    Dernier message: 06/03/2014, 11h27
  2. [XL-2010] Utiliser une macro d'un fichier excell pour mettre en page une autre fichier excell
    Par ab1to dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 29/11/2013, 16h40
  3. Ouverture d'Excel impossible : erreur : 80070005
    Par micher dans le forum ASP.NET
    Réponses: 8
    Dernier message: 30/11/2010, 17h24
  4. Réponses: 3
    Dernier message: 31/08/2010, 18h12
  5. Réponses: 1
    Dernier message: 08/10/2008, 15h30

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