Excel 2003-2010 - Format Fichier 'tous terrains

Bonjour à tous.

J’espère que je vais être clair et point trop verbeux.

J’écris une procédure en VBA pour Excel qui doit « tourner indifféremment »

pour des utilisateurs encore équipés de Excel 2003 ou déjà en Excel 2010.

La procédure va très classiquement ouvrir et enregistrer des classeurs aux noms subtils, par exemple « Toto »,

affectés d’un format 2003 ou 2010 et, respectivement, de l’extension « xls » ou « xlsx ».

Dans la procédure principale, un IF ou un CASE permet quand nécessaire

de choisir les lignes de code « pour 2003 » ou « pour 2010 »

en fonction de la variable publique « VersionExcel » (as String, bien sûr).

Cette variable est calculée dans la sous-routine suivante :

Sub VersionExcelCourante()

    VersionExcel = Application.Version

    Select Case VersionExcel
        Case Is = "11.0"
            Extension = ".xls"
            FormatFichier = xlWorkbookNormal
        Case Is = "14.0"
            Extension = ".xlsx"
            FormatFichier = xlOpenXMLWorkbook
        Case Is = "15.0"
            Extension = ".xlsx"
            FormatFichier = xlOpenXMLWorkbook
        Case Else
            MsgBox "Version Excel étonnante ou très nouvelle " & Chr(10) & Chr(10) & _
                   "Voir et éventuellement modifier la routine " & Chr(10) & _
                   "                 'MiseEnPageKPI'", vbOKOnly, "MacAB"
    End Select

End Sub

La variable publique « Extension » est un String,

La variable publique « FormatFichier » est un Long - car « VarType(FormatFichier) » renvoie « 3 ».

Lors de l’exécution sous « Excel 2003 », « xlOpenXMLWorkbook » est pris pour une variable inconnue ;

lors de l’exécution sous « Excel 2010 », c’est « xlWorkbookNormal » !

J’ai testé sous « 2010 » la création des variables publiques « xlOpenXMLWorkbook » et « xlWorkbookNormal » as Long.

Mais lors de l’exécution, « FormatFichier » reste égal à « 0 » ! !

J’ai bien un palliatif... très rustique : inhiber et commenter les lignes litigieuses,

par exemple :

'' FormatFichier = xlOpenXMLWorkbook 'désinhiber si Office 2010

Mais cela ne me plaît pas car je demande à des utilisateurs « naïfs » de bidouiller le code.

Pas très sain.

Quelqu’un de plus avancé que moi a-t-il une solution ou une piste ?

Merci d’avance

André Blanquer

bonjour,

xlworkbookNormal et xlOpenxmlworkbook sont des constantes qui ne semblent pas être connues de toutes les versions excel.

tu peux contourner le problème en remplacant ce nom de constante par la valeur qu'elle représente (tu trouveras ces valeurs ici

http://msdn.microsoft.com/fr-fr/library/office/ff198017.aspx

xlworkbookNormal = -4143

xlopenxmlworkbook = 51

et donc ton code devient

Sub VersionExcelCourante()

VersionExcel = Application.Version

Select Case VersionExcel
Case Is = "11.0"
Extension = ".xls"
FormatFichier = -4143
Case Is = "14.0"
Extension = ".xlsx"
FormatFichier = 51
Case Is = "15.0"
Extension = ".xlsx"
FormatFichier = 51
Case Else
MsgBox "Version Excel étonnante ou très nouvelle " & Chr(10) & Chr(10) & _
"Voir et éventuellement modifier la routine " & Chr(10) & _
" 'MiseEnPageKPI'", vbOKOnly, "MacAB"
End Select

End Sub

Bonjour.

Je suis toujours étonné de la rapidité avec laquelle vous répondez aux appels au secours.

Des pros payés pour seraient moins rapides !

Merci donc pour la correction que je vais tester dès que j'ai un PC Office 2010 à disposition.

Juste la remarque que je me suis instantanément faite :

je croyais qu'écrire un... je ne sais plus comment cela s'appelle...

un "truc" comme "xlWK3" était une façon simplement "lisible"

d'écrire la valeur numérique correspondante :

celle réellement utilisée par Excel.

Mon écriture et la vôtre seraient alors traitées identiquements.

Et la valeur créée pour Excel 2010 toujours inconnue de Excel 2003.

Bon, les mystères Microsoft étant infinis,

je vais tester et me contenter de me réjouir si cela corrige le problème.

Je te remercie et fermerai le post quand j'aurais vérifié la bonne marchede la routine.

André

Bonjour à l'aimable sauveur.

J'ai testé, c'est bon.

Au fait, désolé, comme d'hab. j'ai directement filé sur ce qui m'intéressait en négligeant les commentaires.

Sale habitude : la lecture de ceux-ci m'aurait évité une remarque inutile,

car tu as été très clair quand aux inconséquences d'Excel suivant ses versions.

En tout cas, merci beaucoup pour ton efficace appui.

A bientôt certainement

André Blanquer

Rechercher des sujets similaires à "2003 2010 format fichier tous terrains"