CerberusPau
Messages postés377Date d'inscriptionlundi 3 avril 2006StatutMembreDernière intervention22 août 2018
-
14 août 2013 à 14:12
cs_JMO
Messages postés1854Date d'inscriptionjeudi 23 mai 2002StatutMembreDernière intervention24 juin 2018
-
8 avril 2015 à 11:55
Bonjour à tous,
J'espère poster au bon endroit...
Un programme "appelle" Excel pour une partie de ses calculs. Aucun problème, lorsque Excel 2007 ou 2010 est installé. Mais j'ai une flotte de PC sous XP avec MS Ofiice Excel 2003 (SP3) et cela nécessite Microsoft.Office.Interop.Exel. Version=14.0.0.0.
J'ai pas mal lu et essayé divers "download", mais je ne suis pas arrivé à régler le problème pour "charger" Microsoft.Office.Interop.Exel. Version=14.0.0.0 dans les "références" afin de pouvoir faire tourner Excel 2003, sans installer 2007 ou 2010.
Mais peut-être est-ce tout simplement impossible...
Merci de votre aide.
Cordialement.
A voir également:
Office 14.0
Microsoft excel 14.0 - Meilleures réponses
Microsoft excel 14.0 object library download - Meilleures réponses
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 14 août 2013 à 14:40
Salut
"J'espère poster au bon endroit..."
Tout dépend ce que tu programmes !
Si tu es dans le VBA de Excel, alors oui.
Si tu es dans Visual Studio 2005, 2008, 2010 ou 2012 : alors non, c'est du VB.Net
As-tu essayé l'inverse : Mettre l'Interop de la version la plus vieille et programmer avec ?
Je pense que Office 2007 ou 2010 pourra faire fonctionner une version antérieure.
Je ne sais pas si c'est possible en .Net, mais regarde voir du côté de CreateObject ou GetObject : Peut-être y a-til moyen de ne pas préciser la version en faisant du 'late binding' en ne déclarant ton objet Excel "As Object" sans déclarer son type.
(je n'en ai pas l'expérience en .Net)
Vala
Jack [MVP VB]
NB : Je ne répondrai pas aux messages privés
CerberusPau
Messages postés377Date d'inscriptionlundi 3 avril 2006StatutMembreDernière intervention22 août 20181 14 août 2013 à 16:29
Bonjour Jack,
Re bonjour à tous,
Oui, oui, c'est bien du VBA de Excel 2003 (Office pro 2003-SP3).
Que veux-tu dire exactement par " Mettre l'Interop de la version la plus vieille et programmer avec ?" ?
Le pack o2003pia.msi est bien sûr installé.
Sans conviction, j'ai aussi lancé l'installation de o2010pia.msi, alors que Office /Excel 2010 n'est PAS installé...
Evidemment, lorsque le programme appelle Excel pour y charger des données, l'erreur est toujours là...
J'espérais pouvoir charger une "référence" dans les outils VB, mais, si je comprends, il n'y aurait pas d'autre solution que d'installer (acheter sur 500 PC équipés en 2003 !) Office/Excel 2010 ?
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 14 août 2013 à 22:21
Non
Si tu fais du VBA sous Excel 2003, tu peux les exécuter/lire sous Excel 2007/2010 sans trop de problème - juste quelques aménagements éventuels.
Le principal étant de programmer avec la référence à la version d'Excel la plus vieille.
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 14 août 2013 à 22:23
Si tu es sous Excel 2003, pourquoi aurais-tu besoin d'ajouter des références ?
Non; fais un fichier XLS classique et ouvre-le sous 2007/2010 : il le reconnaitra.
CerberusPau
Messages postés377Date d'inscriptionlundi 3 avril 2006StatutMembreDernière intervention22 août 20181 15 août 2013 à 09:19
Bonjour,
Le programme qui "appelle" Excel a été écrit pour Excel 2010 et "cherche" donc "Microsoft.Office.Interop.Exel. Version=14.0.0.0. etc.".
Bien entendu, si Excel 2010 est installé sur le PC, pas de problème. Mais que néni avec Excel 2003...
En plus, je ne sais pas comment Excel est "appelé" et "chargé" par ce programme...
J'aimerais au moins comprendre ce que fait exactement l'installation de o2010pia.msi : Quels sont et où sont les fichiers créés (dll...?). Ce que j'ai lu chez MS est peu clair pour moi.
Je crains n'avoir que 2 solutions extrêmes :
- Faire ré-écrire le programme pour qu'il prenne AUSSI en compte Excel 2003...
- Installer Excel 2010 sur tout le parc PC...
Je ne dois pas être le seul confronté à ce problème, mais je n'ai toujours pas trouvé de réponse à ces questions, et encore moins de solution.
Cordialement
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 15 août 2013 à 10:06
Je ne connais pas o2010pia.msi
Les "Interop" sont fait, à mon point de vue, pour permettre à un langage d'interagir avec des objets.
Alors oui, pourquoi pas les utiliser pour travailler avec des objets Excel 2010 depuis Excel 2003, mais ça s'arrête là; à la manipulation d'objets - tu ne pourras pas afficher des feuilles Excel 2010 sous 2003, par contre, tu dois pouvoir ouvrir un classeur 2010, lire le contenu des feuilles, mais je ne pense pas que tu puisses lancer les macros de ce classeur 2010.
Mais qu'est ce qui t'empêche de sauvegarder ton classeur avec macro dans un fichier XLS = version 2003 ?
Il te suffit de parcourir les macros du classeur qui appelle pour repérer l'appel et changer l'orthographe du nom du classeur appelé (XLSM en XLS)
A chaque réponse que tu donnes, on découvre de nouvelles facettes à ton problème : Maintenant, il y a deux classeurs.
Si tu n'expliques pas tout clairement, on va jamais y arriver.
La solution de facilité consiste à programmer avec des classeurs version 2003.
Pourquoi ne le fais-tu pas ?
CerberusPau
Messages postés377Date d'inscriptionlundi 3 avril 2006StatutMembreDernière intervention22 août 20181 15 août 2013 à 10:48
Je m'explique peut être mal.
Je reformule :
1° Il n'y a qu'un seul classeur concerné, créé sous Excel 2003, donc en .xls. (Toto.xls)
2° Un programme Tutu.exe écrit sous StateWORKS doit charger des données dans une feuille de Toto.xls.
3° Tutu.exe a été conçu pour des classeurs Excel 2007/2010, et donc a besoin de "Microsoft.Office.Interop.Exel. Version=14.0.0.0..."
4° Si Excel 2007/2010 est bien installé sur le PC, aucun problème, Toto.xls est correctement chargé.
5° Si c'est uniquement Excel 2003 qui est installé sur le PC, évidemment, l'erreur se produit, puisque "Microsoft.Office.Interop.Exel. Version=14.0.0.0..." n'est pas trouvé.
Je cherche à savoir s'il serait possible, et comment faire pour que Tutu.exe charge les données dans Toto.xls quand seulement Excel 2003 est installé sur le PC.
Est-ce plus clair ainsi ?
Ta remarque "La solution de facilité consiste à programmer avec des classeurs version 2003" est certes très judicieuse, mais avant de solliciter le développeur de Tutu.exe, je voudrais essayer de trouver d'autres solutions.
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 15 août 2013 à 11:43
Ah, c'est plus clair, en effet.
Normalement, si le programme Tutu.exe est correctement conçu et installé, du moment où il a besoin d'accéder à des infos issues de Office, c'est lui qui devrait amener les références nécessaires.
Es-tu sûr de la méthode d'installation du logiciel sur les différentes machines ?
En général, ce genre de référence est mise en place lors de l'installation.
Peut-être pourrais-tu demander conseil aux développeurs de Tutu.exe; si c'est un logiciel diffusé à grande échelle, ils ont forcément déjà eu le cas de figure.
CerberusPau
Messages postés377Date d'inscriptionlundi 3 avril 2006StatutMembreDernière intervention22 août 20181 7 avril 2015 à 20:46
Bonjour,
Je sais, ça fait un bail!
Je confirme que traiter directement dans Excel par le biais de bibliothèque n'est pas une mince affaire, surtout quand on veut pouvoir utiliser toutes les versions depuis 2003!
La seule solution que j'ai trouvée est de passer par un fichier d'échange des données sous format .txt, qui est lui appelé sans problème par Excel à son ouverture.
cs_JMO
Messages postés1854Date d'inscriptionjeudi 23 mai 2002StatutMembreDernière intervention24 juin 201827 8 avril 2015 à 11:55
bonjour CerberusPau,
Dans une appli hta, j'avais contourné le problème de version par
Function CheckExcelVersion(argFile) ' Contrôle version Excel If CreateObject("Excel.Application").Version = "11.0" Then argFile = Replace(argFile,".xlsx",".xls") End If CheckExcelVersion = argFile End Function