Lire en VBA depuis Excel 2007 dans un fichier Excel 2003 fermé

cs_MoYoX Messages postés 2 Date d'inscription samedi 8 avril 2006 Statut Membre Dernière intervention 20 mai 2011 - 20 mai 2011 à 09:09
cs_MoYoX Messages postés 2 Date d'inscription samedi 8 avril 2006 Statut Membre Dernière intervention 20 mai 2011 - 20 mai 2011 à 12:20
Bonjour à tous !

Je me retrouve confronté à une difficulté dans le développement d'un outil pour mes collègues.
En effet, j'ai créé une fonction permettant de lire dans un fichier Excel fermé.
With Cn
.Provider = "Microsoft.Jet.OLEDB.4.0"
.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" _
& Fichier & ";Extended Properties=""Excel 12.0;HDR=NO;"""
.Open
End With


Donc, pas de problème, j'écris ma requête, l'exécute, j'arrive à lire dans un fichier .xlsx sans soucis.
Le problème c'est que mes collègues doivent écrire dans ce fameux fichier toute la journée, et mon programme le "checker" à intervalle régulier.
Pour ceux qui tournent sous 2007, pas de problème, on peut écrire dedans, le programme sait le lire ...
Comme tous n'ont pas Excel 2007 installé sur leurs machines, j'ai fait passer le fichier en .xls, pour contenter tout le monde.
Je me suis dit: "Je vais modifier mon code en conséquence", j'ai donc écrit:
With Cn
        .Provider = "Microsoft.Jet.OLEDB.4.0"
        .ConnectionString = "Data Source=" & Fichier & _
            ";Extended Properties=Excel 8.0;HDR=NO"
        .Open
    End With


Et là, pas moyen de relire dans ce fichu tableau en .xls (j'ai bien changé le chemin du fichier en conséquence).
Y'a t'il un problème pour lire dans les fichiers .xls depuis un fichier .xlsm 2007 ?

Merci pour les réponses que vous saurez m'apporter ... !

3 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
20 mai 2011 à 10:40
Salut

Dans ton exemple, dans la première syntaxe, la définition de .Provider est annulée par celle définie dans le .ConectionString qui suit immédiatement derrière (faire un choix).

Quelques indications <dans ce site> de référence en matière de ConnectionString.
D'autre part, tu peux imaginer un test de la version d'Excel pour choisir la chaine de connexion --> Application.Version
Malgré tout, je pense que :
- Un programme tournant sous 2003 aura peut-être du mal à lire des données issue d'un fichier d'une version supérieure
- Qu'il vaut mieux avoir le fichier de donnée au format de la version Excel la plus vieille du parc, les versions supérieures n'auront pas de mal à les lire.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
20 mai 2011 à 10:41
J'ai oublié <le lien du site>, pardon
0
cs_MoYoX Messages postés 2 Date d'inscription samedi 8 avril 2006 Statut Membre Dernière intervention 20 mai 2011
20 mai 2011 à 12:20
Bonjour et merci pour la réponse !

Par contre, je n'avais pas mis les deux portions de code ensemble, j'en mettais un seul sur les deux (un basculait en commentaire pour un test ...).

Je vais aller consulter ton site trouvé, merci !
0
Rejoignez-nous