Application compatible avec différentes versions d'Excel ?
CrazyCow007
Messages postés52Date d'inscriptionmardi 10 juin 2003StatutMembreDernière intervention18 septembre 2012
-
10 mars 2008 à 23:18
cs_eldim
Messages postés956Date d'inscriptionlundi 30 mai 2005StatutMembreDernière intervention21 août 2014
-
11 mars 2008 à 17:12
Bonjour,
Je reste coincé sur un problème depuis plusieurs jours, et même après moulte recherches sur le site et Google je ne trouve pas de solution à mon problème. Donc peut-être que je n'y prends pas comme il faut
J'ai une application qui permet de générer des statistiques et des graphiques sous Excel à partir de données récupérées depuis une base de données Access.
Je développe cette appli sous Vista avec Office 2007, tout fonctionne. Mais lorsque je publie le projet et que je l'installe sur mon autre machine (Windows XP + Office 2003), il m'est impossible de faire fonctionner la partie Génération de graphiques... J'obtiens l'erreur suivante :
Ancien format ou bibliothèque de types non valide. (Exception de HRESULT : 0x80028018 (TYPE_E_INVDATAREAD)).
Détails : Consultez la fin de ce message pour plus de détails sur l'appel du débogage
juste-à-temps (JIT) à la place de cette boîte de dialogue.
************** Texte de l'exception **************
System.Runtime.InteropServices.COMException (0x80028018): Ancien format ou bibliothèque de types non valide. (Exception de HRESULT : 0x80028018 (TYPE_E_INVDATAREAD))
à Microsoft.Office.Interop.Excel.ApplicationClass.set_WindowState(XlWindowState RHS)
à UNAFAM.FrmStatistiques.CmdGenerer_Click(Object sender, EventArgs e)
à System.Windows.Forms.Control.OnClick(EventArgs e)
à System.Windows.Forms.Button.OnClick(EventArgs e)
à System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
à System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
à System.Windows.Forms.Control.WndProc(Message& m)
à System.Windows.Forms.ButtonBase.WndProc(Message& m)
à System.Windows.Forms.Button.WndProc(Message& m)
à System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
à System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
à System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
************** Assemblys chargés **************
mscorlib
Version de l'assembly : 2.0.0.0
Version Win32 : 2.0.50727.42 (RTM.050727-4200)
CodeBase : file:///E:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll
----------------------------------------
UNAFAM
Version de l'assembly : 1.0.0.0
Version Win32 : 1.0.0.0
CodeBase : file:///E:/Documents%20and%20Settings/Administrateur/Local%20Settings/Apps/2.0/PKNKZZJL.4VN/9DOZ9PXA.VRR/unaf..tion_4ecc211584a9a196_0001.0000_d34c5a43be32f4b3/UNAFAM.exe
----------------------------------------
Microsoft.VisualBasic
Version de l'assembly : 8.0.0.0
Version Win32 : 8.0.50727.42 (RTM.050727-4200)
CodeBase : file:///E:/WINDOWS/assembly/GAC_MSIL/Microsoft.VisualBasic/8.0.0.0__b03f5f7f11d50a3a/Microsoft.VisualBasic.dll
----------------------------------------
System
Version de l'assembly : 2.0.0.0
Version Win32 : 2.0.50727.42 (RTM.050727-4200)
CodeBase : file:///E:/WINDOWS/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
System.Windows.Forms
Version de l'assembly : 2.0.0.0
Version Win32 : 2.0.50727.42 (RTM.050727-4200)
CodeBase : file:///E:/WINDOWS/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System.Drawing
Version de l'assembly : 2.0.0.0
Version Win32 : 2.0.50727.42 (RTM.050727-4200)
CodeBase : file:///E:/WINDOWS/assembly/GAC_MSIL/System.Drawing/2.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
System.Runtime.Remoting
Version de l'assembly : 2.0.0.0
Version Win32 : 2.0.50727.42 (RTM.050727-4200)
CodeBase : file:///E:/WINDOWS/assembly/GAC_MSIL/System.Runtime.Remoting/2.0.0.0__b77a5c561934e089/System.Runtime.Remoting.dll
----------------------------------------
System.Windows.Forms.resources
Version de l'assembly : 2.0.0.0
Version Win32 : 2.0.50727.42 (RTM.050727-4200)
CodeBase : file:///E:/WINDOWS/assembly/GAC_MSIL/System.Windows.Forms.resources/2.0.0.0_fr_b77a5c561934e089/System.Windows.Forms.resources.dll
----------------------------------------
Interop.ADODB
Version de l'assembly : 6.0.0.0
Version Win32 : 6.0.0.0
CodeBase : file:///E:/Documents%20and%20Settings/Administrateur/Local%20Settings/Apps/2.0/PKNKZZJL.4VN/9DOZ9PXA.VRR/unaf..tion_4ecc211584a9a196_0001.0000_d34c5a43be32f4b3/Interop.ADODB.DLL
----------------------------------------
Microsoft.Office.Interop.Excel
Version de l'assembly : 12.0.0.0
Version Win32 : 12.0.4518.1014
CodeBase : file:///E:/Documents%20and%20Settings/Administrateur/Local%20Settings/Apps/2.0/PKNKZZJL.4VN/9DOZ9PXA.VRR/unaf..tion_4ecc211584a9a196_0001.0000_d34c5a43be32f4b3/Microsoft.Office.Interop.Excel.DLL
----------------------------------------
mscorlib.resources
Version de l'assembly : 2.0.0.0
Version Win32 : 2.0.50727.42 (RTM.050727-4200)
CodeBase : file:///E:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll
----------------------------------------
************** Débogage JIT **************
[...]
<hr size ="2" width="100%" />
Utilisant Excel 2007, j'ai donc une référence Microsoft Excel 12.0 Object Library. Etant donné que je ne la possède pas sous mon autre ordinateur (version 11.0 car Excel 2003), je pensais qu'en choisissant "Copie locale", cela résoudrait mon problème. Mais apparement non, ou alors le problème vient d'autre part je ne sais pas...
Tout du moins si vous avez une solution pour pour rendre mon application compatible avec Excel 2007, 2003 et 2000 à la fois cela me rendrait un très grand service
Merci par avance !
A voir également:
Application compatible avec différentes versions d'Excel ?
bigfish_le vrai
Messages postés1835Date d'inscriptionvendredi 13 mai 2005StatutMembreDernière intervention20 novembre 201315 11 mars 2008 à 00:22
Salut,
meme probleme qu'avant quand est sortie excel 2000 il y avait des incompatibiliées entre lui et Excel97.
Je ne connais qu'une solution coder pour les 2 versions et utiliser ce qui suit pour detecter la version utilisé et lancer le code correspondant.
Public Xlversion as long
Sub TestVersion() 'test la version d'excel
Xlversion = CInt(Application.Version)
MsgBox "Version Microsoft Excel :" & " " & Xlversion
End Sub
Mais peut etre que la version 2007 permet de faire mieux... a voir ?
CrazyCow007
Messages postés52Date d'inscriptionmardi 10 juin 2003StatutMembreDernière intervention18 septembre 2012 11 mars 2008 à 09:23
OK, mais comment je gère les différentes versions d'Excel dans le reste de mon code (si je stocke la version dans une variable globale par exemple) ? Est-ce qu'il faudra un code pour chaque version ? :-/
pile_poil
Messages postés682Date d'inscriptionvendredi 6 avril 2007StatutMembreDernière intervention 4 août 20126 11 mars 2008 à 09:35
pour palier ce probleme j'ai utilisé une astuce de sauvage !
j'ai complié mon code avec une référence à un excel 2000. Bien sûr j'ai écrit mon truc avec cette version sur ma machine
ensuite dans l'installeur j'ai fait une copie du fichier correspondant à cette référence ( en fait le fichier .exe d'exel2000)
comme ça quand j'install mon truc sur une machine je n'ai pas à me soucier de la version !
cs_eldim
Messages postés956Date d'inscriptionlundi 30 mai 2005StatutMembreDernière intervention21 août 20141 11 mars 2008 à 17:12
Bonjour,
pour palier à ça tu peux éviter de faire référence à excel dans ton code et faire un createobject d'excel et utiliser les fonctions en liaison tardive mais sur ta class ou ton module il faut mettre l'option strict off
-- Pourquoi faire simple quand on peut faire compliquer --