Pb de version d'excel

Résolu
Messages postés
27
Date d'inscription
mardi 25 mai 2004
Statut
Membre
Dernière intervention
20 novembre 2006
-
Messages postés
27
Date d'inscription
mardi 25 mai 2004
Statut
Membre
Dernière intervention
20 novembre 2006
-
salut les monde des pogrammeurs



je suis en train de dévelloper une appli (winXP et Excel 2003) pour mon
boulot. lorsque je lance mon appli sur ma bécane tout se déroule pour
le mieux mais dés que je la lance sur une autre bédane, ça marche
jusqu'à l'instensiation d'Excel... je me suis rendu compte que l'excel
utilisé sur l'autre machine est excel 200 SP3.



alors comment faire pour prendre en compte la version d'excel dans mon appli...??????????



merci d'avance



ps: bravo aux admin pour le site

3 réponses

Messages postés
1788
Date d'inscription
mardi 7 novembre 2000
Statut
Membre
Dernière intervention
11 mars 2006
27
J'ai déjà eus pas mal de problèmes avec la version 2003 que ne supporte pas les versions antérieures.Comme malheuresement ,je n'ai pas pus résoudre ce problème, j'ai envoyé WinXp et Office 2003 à la poubelle et je suis retourné à Win98 et Office 97.
Au moins les appli que je fais tourne avec toutes les versions
Mais peut-être un membre du forum a-t-il la solution ?

jpleroisse
Messages postés
3757
Date d'inscription
mardi 23 septembre 2003
Statut
Membre
Dernière intervention
13 mars 2006
18
Salut, on peut détecter la version d'excel installée sur le poste en interrogeant la registry (HKEY_CLASSES_ROOT\Excel.Application\CurVer) grâce aux APIs.

C'est un peu compliqué mais voilà toujours le code :

DANS UN MODULE :
Private Const HKEY_CLASSES_ROOT = &H80000000
Private Const REG_SZ As Long = 1
Private Const ERROR_SUCCESS = 0&


Private Declare Function RegOpenKey _
Lib "advapi32" Alias "RegOpenKeyA" _
( _
ByVal hKey As Long, _
ByVal lpSubKey As String, _
phkResult As Long _
) As Long


Private Declare Function RegQueryValueEx _
Lib "advapi32" Alias "RegQueryValueExA" _
( _
ByVal hKey As Long, _
ByVal lpValueName As String, _
ByVal lpReserved As Long, _
lpType As Long, _
lpData As Any, _
lpcbData As Long _
) As Long


Private Function GetString(hKey As Long, strPath As String, strValue As String) As String
Dim Keyhand As Long, lValueType As Long
Dim strBuf As String, lDataBufSize As Long


Call RegOpenKey(hKey, strPath, Keyhand)
Call RegQueryValueEx(Keyhand, strValue, 0&, lValueType, ByVal 0&, lDataBufSize)

If lValueType = REG_SZ Then
strBuf = String(lDataBufSize, " ") 'init du buffer
If RegQueryValueEx(Keyhand, strValue, 0&, 0&, ByVal strBuf, lDataBufSize) = ERROR_SUCCESS Then
GetString = Split(strBuf, Chr$(0))(0)
End If
End If

End Function


Public Function Version() As String
Version = GetString(HKEY_CLASSES_ROOT, "Excel.Application" & "\CurVer", "")
End Function

et tu t'en sers comme ça par exemple :

msgbox version

Dans le cas de Excel 97, ça doit te retourner "Excel.Application.8"

Maintenant, une fois que tu sais ça, il faut orienter ton traitement et c'est là que le bât blesse.
Je ne sais pas comment tu te sers d'Excel, en cochant dans Projets/Références "Microsoft Excel x.x Object Library" ?
Dans ce cas il faudrait que ton appli connaisse toutes les références (basées sur des fichiers genre Excelx.olb) et je ne crois pas que ça fonctionne mais je n'ai pas essayé.

Le mieux encore est une solution un peu comme dit jpleroisse mais sans jeter quoique ce soit à la poubelle :
Construit ou traduit tes classeurs Excel en version Excel 97. Ca, c'est possible à partir d'Excel 2003.
Dans ton appli, dans Projets/Références coches "Microsoft Excel 8.0 Object Library", s'il n'est pas présent, récupère le fichier excel8.olb sur le net ou chez un copain et, toujours dans Projets/Références, va le chercher avec "Parcourir".
S'il le faut, il faudra peut-être que tu fournisses le fichier excel8.olb dans le dossier de ton appli et ça devrait le faire.

Loup Gris
Messages postés
27
Date d'inscription
mardi 25 mai 2004
Statut
Membre
Dernière intervention
20 novembre 2006

merci bien pour votre aide...



je crois que finalement je vais directement embarquer l'exe d'excel dans mon appli...



damdam04