Microsoft.Office.Interop.Exel. Version=14.0.0.0 [Résolu]

CerberusPau 376 Messages postés lundi 3 avril 2006Date d'inscription 7 avril 2015 Dernière intervention - 14 août 2013 à 14:12 - Dernière réponse : cs_JMO 1855 Messages postés jeudi 23 mai 2002Date d'inscription 24 juin 2018 Dernière intervention
- 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.
Afficher la suite 

Votre réponse

10 réponses

cs_Jack 14010 Messages postés samedi 29 décembre 2001Date d'inscriptionModérateurStatut 28 août 2015 Dernière intervention - 14 août 2013 à 14:40
0
Merci
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
Commenter la réponse de cs_Jack
CerberusPau 376 Messages postés lundi 3 avril 2006Date d'inscription 7 avril 2015 Dernière intervention - 14 août 2013 à 16:29
0
Merci
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 ?

Je donne ma langue au chat...

Cordialement
Commenter la réponse de CerberusPau
cs_Jack 14010 Messages postés samedi 29 décembre 2001Date d'inscriptionModérateurStatut 28 août 2015 Dernière intervention - 14 août 2013 à 22:21
0
Merci
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 14010 Messages postés samedi 29 décembre 2001Date d'inscriptionModérateurStatut 28 août 2015 Dernière intervention - 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.
Commenter la réponse de cs_Jack
CerberusPau 376 Messages postés lundi 3 avril 2006Date d'inscription 7 avril 2015 Dernière intervention - 15 août 2013 à 09:19
0
Merci
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
Commenter la réponse de CerberusPau
cs_Jack 14010 Messages postés samedi 29 décembre 2001Date d'inscriptionModérateurStatut 28 août 2015 Dernière intervention - 15 août 2013 à 10:06
0
Merci
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 376 Messages postés lundi 3 avril 2006Date d'inscription 7 avril 2015 Dernière intervention - 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.

Cordialement
Commenter la réponse de cs_Jack
cs_Jack 14010 Messages postés samedi 29 décembre 2001Date d'inscriptionModérateurStatut 28 août 2015 Dernière intervention - 15 août 2013 à 11:43
0
Merci
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.
Commenter la réponse de cs_Jack
CerberusPau 376 Messages postés lundi 3 avril 2006Date d'inscription 7 avril 2015 Dernière intervention - 7 avril 2015 à 20:46
0
Merci
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 1855 Messages postés jeudi 23 mai 2002Date d'inscription 24 juin 2018 Dernière intervention - 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
Commenter la réponse de CerberusPau

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.