XL 2016 importer fichier mdb : probleme passage de excel 2010 à 2016

jojo2006

XLDnaute Occasionnel
Bonjour à tous,

je me permet de solliciter votre aide sur une macro d'importation de fichier qui fonctionnait très bien sous excel 2010 windows 7.
Je suis passé sous windows 10 en excel 2016 et la macro d'importation ne fonctionne plus.

La macro permet d'importer des fichiers de point qui ont une extension propriétaire ( fichier .004 dans mon exemple).

En théorie la macro convertie ( en faisant une copie du fichier.004 d'origine) en fichier.mdb et ensuite on importe les données à partir du .mdb dans la feuille Excel import
Ceci se fait pour chaque fichier sélectionné au départ.

Sous excel 2016 j'obtiens le message suivant (propriétés des liaisons de données) qui me bloque dans l'importation. :mad:

En pièce attachée j'ai joins le fichier excel contenant la macro d'importation avec un dossier contenant des exemples de fichiers à importer.


Avez vous une idée du problème et comment le résoudre dans le code VBA ?

Merci à tous pour votre aide précieuse ;)

1658219944642.png
 

Pièces jointes

  • macro.zip
    333.4 KB · Affichages: 8

Hasco

XLDnaute Barbatruc
Repose en paix
Bonsoir,

Dans le fichier joint, une requête power query qui ne fait que lister les fichiers du répertoire contenu dans cellule nommée 'Dossier_Fichiers_Courbes'.

Il doivent être dans un sous-répertoire 'fichier courbes brutes' du répertoire du fichier Import 004.xlsm

Ce n'est pas utile de renommer l'extension de vos fichiers pour les ouvrir.

Si vous cliquez sur un nom de fichier dans cette liste, il est immédiatement importé. Non pas par Power Query qui n'aime pas les vieux fichiers mais par Jet OleDb 4 qui les ouvre sans problème.

Power query étant une technologie récente, il est exigeant sur les autorisations. Je n'ai pas réussit à lui faire admettre d'ouvrir les fichiers sans demander l'autorisation. J'ai tenté par OleDb, OdbC ainsi que par la fonction Access.DataBase.
Il rejette les chaines de connexion qui contiennent "User Id=xxxx" !

Peut-être que @chris connaît un moyen de contourner le problème

voir le code de la feuille IMPORT.

Vous trouverez la macro d'import dans votre module8 (j'ai utilisé une chaine de connexion qui marche)

Note : se serait bien de nettoyer vos fichiers excel avant de nous les communiquer, même expurgé le fichier dépasse les capacités xld. Ca sent le futur plantage...

Cordialement
 

Pièces jointes

  • Import 004.zip
    242.1 KB · Affichages: 5

jojo2006

XLDnaute Occasionnel
Bonjour,

Merci pour vos premières réponses.

Le passage de excel 2010 à 2016 n'est pas mon choix , c'est celui de mon entreprise malheureusement.

@Hasco, merci pour ta proposition et oui tu as raison j'ai nettoyé mon fichier autant que possible.

voir en pièce attachée
Merci pour ta remarque. ;)

L'objectif est d'importer les fichiers sélectionnés après ouverture de la fenêtre de sélection dans le répertoire où sont stockés les fichiers de points.


Le résultats attendu est d'obtenir les fichiers de points par colonne avec le nom du fichier.
j'allais dire "comme avant" sous excel 2010 et sans avoir de message de blocage.

Merci à vous pour m'aider à trouver la solution simple. :)
 

Pièces jointes

  • macro2.zip
    223 KB · Affichages: 3

Hasco

XLDnaute Barbatruc
Repose en paix
Re,


D'après les macros que vous nous avez données, vous avez les moyens d'adapter la méthode que je vous ai monté hier.
Je suis passé sous windows 10 en excel 2016 et la macro d'importation ne fonctionne plus.
Puis :
Avez vous une idée du problème et comment le résoudre dans le code VBA ?
Toutes les questions d'autorisation et de sécurité ont été renforcées sur windows 10 et beaucoup de macro d'accès aux données qui fonctionnait avant ne fonctionne plus. On ne peut squizzer ces étapes d'authentification qu'en utilisant d'anciennes technologies.

Hier le seul moyen que j'ai trouvé est d'utiliser une ancienne technologie de connexion (Adodb) avec Microsoft.Jet.OLEDB.4.0 comme fournisseur de données pour ouvrir vos données sans que le système demande des compléments d'information pour les autorisations d'accès aux fichier.
Même avec cette technologie, si vous mettez les éléments de connexion (chaîne de connexion) comme source de donnée d'un tableau excel, querytable ou autre, vous aurez à donner les informations d'autorisations.
C'est pour ces raisons qu'hier je vous ai proposé cette macro que vous ne vous êtes même pas donné la peine d'essayer d'adapter à votre besoin.

Aussi je passe la main à qui voudra, car j'estime avoir largement répondu à la demande initiale.

Vous n'avez même pas répondu à @chris qui vous interpellait sur un aspect de votre demande.
 
Dernière édition:

Hasco

XLDnaute Barbatruc
Repose en paix
Re,

@chris, je n'utilise aucune référence pour ADODB, CreateObject utilise la bibliothèque présente sur la machine .

Pour la connexion aux fichiers .004 j'ai d'abord ouvert avec axbase (un petit logiciel open source pour les fichiers .mdb)


C'est axbase qui a créé la chaîne de connexion, je l'ai copiée telle qu'elle dans l'historique des connexions que j'ai trouvé dans le répertoire d'installation d'axbase.

Cordialement
 
Dernière édition:

Hasco

XLDnaute Barbatruc
Repose en paix
Re,

Le deuxième message est celui-que j'obtenais également quoique je fasse, et c'est ce qui m'a dirigé vers le provider plus ancien. Il me semble qu'il était livré avec les versions idoines d'access.
L'explication est certainement sur cette page (quasi imbuvable :) comme souvent chez MS ), mais voir en bas le chapitre Résolutions il y a des liens vers différents run time suivant ta configuration .
Si tu le souhaite
A+
 

Discussions similaires

Statistiques des forums

Discussions
312 207
Messages
2 086 248
Membres
103 164
dernier inscrit
axelheili2