compatibilite vba 2007 => 2003

Le
Hawk
Bonjour,

Lorsque je fais des macros avec excel 2007, si j'ouvre le classeur
avec 2003, je suis obligé de refaire la macro sous excel 2003 sinon
elle ne fonctionne pas.
En fait, tout depend de ce que fait la macro ! Mais c'est agaçant !
Y aurait-il un moyen de dire a excel 2007 de generer du code qui
fonctionne avec 2003.
J'ai deja dans les preferences choisi l'option de sauvegarder le
classeur en 2000-2003.

Merci
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Misange
Le #5384071
Bonjour

Il faut que nous en dises plus sur ce qui ne fonctionne pas et les
messages d'erreur que tu as. Le VBA n'a pas changé avec le passage de
2003 à 2007. Tu peux rencontrer des erreurs liées par exemple aux
extensions des fichiers qui elles ont changé ou à l'utilisation de
fonctionnalités dispos dans 2007 et non dans 2003 que tu manipulerais
par VBA. Sinon pas de pb particulier et nous sommes nombreux à passer
d'une version à l'autre avec le même code VBA ;-)
Misange migrateuse
XlWiki : Participez à un travail collaboratif sur excel !
http://xlwiki.free.fr/wiki
http://www.excelabo.net

Bonjour,

Lorsque je fais des macros avec excel 2007, si j'ouvre le classeur
avec 2003, je suis obligé de refaire la macro sous excel 2003 sinon
elle ne fonctionne pas.
En fait, tout depend de ce que fait la macro ! Mais c'est agaçant !
Y aurait-il un moyen de dire a excel 2007 de generer du code qui
fonctionne avec 2003.
J'ai deja dans les preferences choisi l'option de sauvegarder le
classeur en 2000-2003.

Merci


Hawk
Le #5383651
L'exemple concret est quand dans mon code je fais du tri.
Un code tout simple :

Range("C1:D8").Select
Selection.Copy
Sheets("Feuil2").Select
ActiveSheet.Paste
Application.CutCopyMode = False
ActiveWorkbook.Worksheets("Feuil2").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Feuil2").Sort.SortFields.Add
Key:=Range("A1:A8"),SortOn:=xlSortOnValues, Order:=xlAscending,
DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Feuil2").Sort
.SetRange Range("A1:B8")
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With

Ne fonctionne pas avec Excel 2003, "xlsortonvalues" ==>variable non
définie !!!

La même macro avec Excel 2003 crée ce code :

Range("C1:D8").Select
Selection.Copy
Sheets("Feuil2").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Selection.Sort Key1:=Range("A1"), Order1:=xlAscending,
Header:=xlGuess, OrderCustom:=1, MatchCase:úlse,
Orientation:=xlTopToBottom,DataOption1:=xlSortNormal

On Mon, 10 Dec 2007 09:31:48 +0100, Misange wrote:

Bonjour

Il faut que nous en dises plus sur ce qui ne fonctionne pas et les
messages d'erreur que tu as. Le VBA n'a pas changé avec le passage de
2003 à 2007. Tu peux rencontrer des erreurs liées par exemple aux
extensions des fichiers qui elles ont changé ou à l'utilisation de
fonctionnalités dispos dans 2007 et non dans 2003 que tu manipulerais
par VBA. Sinon pas de pb particulier et nous sommes nombreux à passer
d'une version à l'autre avec le même code VBA ;-)
Misange migrateuse
XlWiki : Participez à un travail collaboratif sur excel !
http://xlwiki.free.fr/wiki
http://www.excelabo.net

Bonjour,

Lorsque je fais des macros avec excel 2007, si j'ouvre le classeur
avec 2003, je suis obligé de refaire la macro sous excel 2003 sinon
elle ne fonctionne pas.
En fait, tout depend de ce que fait la macro ! Mais c'est agaçant !
Y aurait-il un moyen de dire a excel 2007 de generer du code qui
fonctionne avec 2003.
J'ai deja dans les preferences choisi l'option de sauvegarder le
classeur en 2000-2003.

Merci




MichDenis
Le #5383601
Quand tu développe une application, tu le fais
avec la version la plus "ancienne" du park des usagers
ont à leur disposition .... ça aide !

Et dans le cas présent, si tu enlèves
SortOn:=xlSortOnValues , ça fonctionnera sous les
2 versions 2003 et 2007 ... NON ???

Il y a d'autres exemples similaires entre d'autres versions d'excel.
c'est une problématique connue !!!


"Hawk"
L'exemple concret est quand dans mon code je fais du tri.
Un code tout simple :

Range("C1:D8").Select
Selection.Copy
Sheets("Feuil2").Select
ActiveSheet.Paste
Application.CutCopyMode = False
ActiveWorkbook.Worksheets("Feuil2").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Feuil2").Sort.SortFields.Add
Key:=Range("A1:A8"),SortOn:=xlSortOnValues, Order:=xlAscending,
DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Feuil2").Sort
.SetRange Range("A1:B8")
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With

Ne fonctionne pas avec Excel 2003, "xlsortonvalues" ==>variable non
définie !!!

La même macro avec Excel 2003 crée ce code :

Range("C1:D8").Select
Selection.Copy
Sheets("Feuil2").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Selection.Sort Key1:=Range("A1"), Order1:=xlAscending,
Header:=xlGuess, OrderCustom:=1, MatchCase:úlse,
Orientation:=xlTopToBottom,DataOption1:=xlSortNormal

On Mon, 10 Dec 2007 09:31:48 +0100, Misange wrote:

Bonjour

Il faut que nous en dises plus sur ce qui ne fonctionne pas et les
messages d'erreur que tu as. Le VBA n'a pas changé avec le passage de
2003 à 2007. Tu peux rencontrer des erreurs liées par exemple aux
extensions des fichiers qui elles ont changé ou à l'utilisation de
fonctionnalités dispos dans 2007 et non dans 2003 que tu manipulerais
par VBA. Sinon pas de pb particulier et nous sommes nombreux à passer
d'une version à l'autre avec le même code VBA ;-)
Misange migrateuse
XlWiki : Participez à un travail collaboratif sur excel !
http://xlwiki.free.fr/wiki
http://www.excelabo.net

Bonjour,

Lorsque je fais des macros avec excel 2007, si j'ouvre le classeur
avec 2003, je suis obligé de refaire la macro sous excel 2003 sinon
elle ne fonctionne pas.
En fait, tout depend de ce que fait la macro ! Mais c'est agaçant !
Y aurait-il un moyen de dire a excel 2007 de generer du code qui
fonctionne avec 2003.
J'ai deja dans les preferences choisi l'option de sauvegarder le
classeur en 2000-2003.

Merci




Publicité
Poster une réponse
Anonyme