Différentes version d'excel

Résolu
pjouy Messages postés 110 Date d'inscription mardi 8 juillet 2003 Statut Membre Dernière intervention 18 mai 2009 - 28 juin 2006 à 21:08
pjouy Messages postés 110 Date d'inscription mardi 8 juillet 2003 Statut Membre Dernière intervention 18 mai 2009 - 30 juin 2006 à 21:16
Bonjour,

J'ai un gros problème avec les différentes versions d'Excel. Je m'explique : je programme le tout chez moi, l'exécute et il n'y a aucun problème (Excel est lancé, les données y sont insérées et le fichier enregistré) ; j'ai d'ailleurs pris plusieurs exemples sur ce site pour m'aider.
Le problème, c'est que si j'exécute mon programme sur d'autres ordinateurs qui ont des versions plus anciennes d'Excel, mon programme plante systématiquement sur la commande de sauvegarde (app.SaveAs) et Excel reste en exécution. Pourquoi ?
J'ai, chez moi, la version 2007 Beta 2 d'Office. Sur Excel 2003, ça plante. Je suis ensuite allé sur mon autre Windows XP, équipé d'Office 2003 et ai remis les références pour Office 2003 (Office Excel 11 Object Library). Là, mon exécutable recompilé marche à la fois sur Excel 2003 et 2007. Le problème, c'est que les machines sur lesquelles je veux utiliser mon programme utilisent Excel 2000 !
Je n'ai pas cette version, et surtout je pense qu'il doit bien y avoir une solution à mon problème (je ne suis certainement pas le premier à être dans ce cas).
Donc, je fais appel à votre expérience pour voir si vous pouvez me sortir de ce gros problème.

Merci beaucoup d'avance pour votre aide
Pascal

7 réponses

gplog Messages postés 82 Date d'inscription mardi 4 février 2003 Statut Membre Dernière intervention 7 juillet 2009 1
29 juin 2006 à 14:28
Salut,

J'ai aussi eu ce genre problème avec les différentes version d'Excel. j'ai contourné le problème en supprimant les référence Excel du projet.
 Explication : pour utiliser 'Excel.Application', tu  ajoute comme référence à ton projet la version d'Excel qui est installé sur ton poste : 'Microsoft Excel 9.0' pour le Excel 2000,  10.0 pour Excel 2003 ... Et c'est là que ça peut coincer. Une solution consiste à ne pas utiliser directement ces référence grace à la fonction 'CreateObject' .

'Déclaration des variables
    Dim appExcel As Object
    Dim wbExcel As Object
    Dim wsExcel As Object
'Ouverture de l'application
    ' Ici tu transforme ton objet en Application Excel suivant le poste et la version
    Set appExcel = CreateObject("Excel.Application")
   ' Ensuite le code est le même
    appExcel.Workbooks.Add
    Set wbExcel = appExcel.ActiveWorkbook
'Récupération de la feuille
    Set wsExcel = wbExcel.Sheets.Item(1)    wsExcel.Cells(1, 1) "Libellé": wsExcel.Cells(1, 2) "Autre":
    wbExcel.SaveAs CommonDialogExportService.FileName
    wbExcel.Close 'Fermeture du classeur Excel
    appExcel.Quit 'Fermeture de l'application Excel
    Set wsExcel = Nothing
    Set wbExcel = Nothing
    Set appExcel = Nothing

Le problème dans ce cas c'est que cela t'oblige à connaitre les fonctions d'excel mais cela résoud les problèmes de compatibilité de version.
3
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
29 juin 2006 à 07:05
Salut,

Il y a des arguments rajoutés d'une version à l'autre pour les fonctions.
Par exemple, le méthode 'Find', possède un argument (le dernier ou avant dernier) qui existe en sur Excel 2003 mais qui n'est pas pris en compte avec la version 2000.

@++

--Mortalino--
Le Mystérieux Chevalier "Provençal, le Gaulois"
N'oubliez pas de lire le règlement !
0
pjouy Messages postés 110 Date d'inscription mardi 8 juillet 2003 Statut Membre Dernière intervention 18 mai 2009
29 juin 2006 à 09:00
Salut,

Le problème, c'est que j'utilise des fonctions très basiques : création du fichier, et du classeur ; insertion de données (ex : ws.Cells (1,2) = "bla bla"), puis un .SaveAs nomdufichier.xls, et enfin le close. D'après ce que j'ai pu voir, c'est au SaveAs qu'il plante, je ne sais vraiment pas pourquoi. Saurais-tu comment remédier à ce problème ?

Merci
Pascal
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
29 juin 2006 à 09:18
c'est pas normal !

par contre c'est pas ws.SaveAs mais objClasseur.SaveAs
vérifie peut-être à ce niveau là

@++

--Mortalino--
Le Mystérieux Chevalier "Provençal, le Gaulois"
N'oubliez pas de lire le règlement !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
pjouy Messages postés 110 Date d'inscription mardi 8 juillet 2003 Statut Membre Dernière intervention 18 mai 2009
29 juin 2006 à 12:13
Je vais carrément mettre tout mon code, ça sera plus clair ;)

'Déclaration des variables
    Dim appExcel As Excel.Application 'Application Excel
    Dim wbExcel As Excel.Workbook 'Classeur Excel
    Dim wsExcel As Excel.Worksheet 'Feuille Excel
'Ouverture de l'application
    Set appExcel = CreateObject("Excel.Application")
    appExcel.Workbooks.Add
    Set wbExcel = appExcel.ActiveWorkbook
'Récupération de la feuille
    Set wsExcel = wbExcel.Sheets.Item(1)    wsExcel.Cells(1, 1) "Libellé": wsExcel.Cells(1, 2) "Autre":
    
    wbExcel.SaveAs CommonDialogExportService.FileName
    wbExcel.Close 'Fermeture du classeur Excel
    appExcel.Quit 'Fermeture de l'application Excel
    Set wsExcel = Nothing
    Set wbExcel = Nothing
    Set appExcel = Nothing

Voili voilà, s'il y a un problème dans le code, je suis preneur !

Pascal
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
29 juin 2006 à 12:55
Salut,

wbExcel.SaveAs CommonDialogExportService.FileName

Je pense que c'est là, il faut mettre une variable de type String (ou le nom directement)

Déjà essaie ça :
wbExcel.SaveAs App.Path & "\Mon Fichier.xls"

Si ça ça marche c'est que t'avais un problème ici.

@++

--Mortalino--
Le Mystérieux Chevalier "Provençal, le Gaulois"
N'oubliez pas de lire le règlement !
0
pjouy Messages postés 110 Date d'inscription mardi 8 juillet 2003 Statut Membre Dernière intervention 18 mai 2009
30 juin 2006 à 21:16
Bien joué, c'était en effet ça : ça marche avec toutes les versions que j'ai essayé !

Merci beaucoup !
0
Rejoignez-nous