Compatibilité VBA entre Exel 2003 et 2007

Ranipet

XLDnaute Junior
Bonjour,

Je me suis rendu compte grâce à Robert que l'instruction ActiveSheet.Shapes.AddChart.Select n'existait pas sous 2003 :(

Je sais aussi que certaines instructions présentes sous 2003 ne le sont plus sous 2007 (quelle scandale !).

=> Y a-t-il une solution qui fonctionnerait sous 2007 & 2003 (voire les versions antérieures : je bosse en Inde et la gestion des licences ici ça n'existe pas) ?
Ou alors puis-je tester la version d'Excel qui exécute la macro et lui faire alors exécuter un code différent fonction de la valeur du test ?

Voici mon code actuel (qui tourne bien sous 2007) :
VB:
'Ajout du graphique
    Sheets("Evolution").Select 'Just in case
    ActiveSheet.Shapes.AddChart.Select
     
'Sélection de la plage de données
    With ActiveChart
        .SetSourceData Source:=Range(Cells(24, 3), Cells(ActiveSheet.Range("C65536").End(xlUp).Row, 3 + i))
        .ChartType = xlLineMarkers
        .Axes(xlCategory).MajorUnit = 7
    End With
    
'Déplacement du graphique
    With ActiveSheet.ChartObjects(ActiveSheet.ChartObjects.Count) 'Placement en B3
        .Left = Range("B3:L23").Left + 3
        .Top = Range("B3:L23").Top + 3
        .Width = Range("B3:L23").Width - 2 * 3
        .Height = Range("B3:L23").Height - 2 * 3
    End With

Merci pour votre aide.
 
Dernière édition:

eriiic

XLDnaute Barbatruc
Re : Compatibilité VBA entre Exel 2003 et 2007

Bonjour,

puis-je tester la version d'Excel qui exécute la macro et lui faire alors exécuter un code différent fonction de la valeur du test ?
Avec Application.version
Tant qu'à faire n'oublie pas excel 2010 qui est la 14.0 (pas de 13.0)
Bon courage...

eric
 

Ranipet

XLDnaute Junior
Re : Compatibilité VBA entre Exel 2003 et 2007

Bonjour,

puis-je tester la version d'Excel qui exécute la macro et lui faire alors exécuter un code différent fonction de la valeur du test ?
Avec Application.version
Tant qu'à faire n'oublie pas excel 2010 qui est la 14.0 (pas de 13.0)
Bon courage...

eric
Re,

1/ Puis-je considérer que 2007 et 2010 sont compatibles entre elles et de même pour les versions antérieures ?
(Et donc tester si Application.version renvoie une valeur inférieure à 12 ou non ?)

2/ Quel code fonctionnera sous 2003 ?

Merci.
 

JNP

XLDnaute Barbatruc
Re : Compatibilité VBA entre Exel 2003 et 2007

Bonjour le fil :),
De mon expérience personnelle, je dirais que le test de version ne sera pas la panacée :eek:.
Le problème qui va se présenter est que dès que t'utilises une macro, j'ai bien l'impression (en tout cas, j'ai déjà rencontré le problème et je pense qu'il vient de là) que VBA compile l'intégralité des codes présents... Donc si l'instruction qui n'existe pas dans une version ou une autre peux être assimilée à une variable, ça passera, mais dans le cas contraire, il te mettra un message d'erreur même si ce que tu as déclenché n'utilises pas la ligne mise en cause :eek:...
Donc soit tu t'arranges pour avoir un code "full compatible", ce qui est souvent possible en rusant un peu, soit, mais c'est une solution qui me parrait très compliquée, tu mets tes codes dans une feuille cachée et tu copie celui de la bonne version à l'ouverture dans tes modules :rolleyes:...
Plutôt que ce qui fonctionne sous 2003, c'est plutôt ce qui ne fonctionne pas sous 2003 qu'il faut lister :p...
Liste non exhaustive :
Les tris sont différents, illimités sous 2007, limités à 3 sous 2003, donc la syntaxe 2007 utilises Sort.Add alors que 2003 utilise Key1:. Mais du tri rédigé pour 2003 fonctionne sous 2007 :D.
Idem pour les MFC.
La gestion des tableaux aussi est très différente, et là, ça peux coincer. Mieux vaux travailler sans notion de tableau :eek:.
Un certain nombre de formules de feuilles n'éxistait pas sous 2003, donc méfiance ;)...
Il y a quand même peu d'instructions supprimées dans 2007 par rapport à 2003, mais tu peux en avoir la liste dans l'aide, ainsi que la liste des nouvelles fonctionalités de 2007/2010. Je sais que par exemple FileSearch est maintenant masquée (théoriquement utilisable mais déconseillé), mais ça me parrait logique, si l'indexation automatique d'XP est débranchée, elle ne fonctionnera pas de toute façon :eek:...
Voilà, bon courage à toi :cool:
Ajout : en ce qui concerne 2010, oui, il y a très peu de problème de compatibilité entre les 2. Mais attention, et là je parle en connaissance de cause, il y a 2010 32 bits et 2010 64 bits, et là, on est loin du "full compatible" si on utilise des DLL...
 
Dernière édition:

kiki29

XLDnaute Barbatruc
Re : Compatibilité VBA entre Exel 2003 et 2007

Salut,la solution est de developper dans la version d'excel la plus basse susceptible d'utiliser ton application, cela devrait éviter de nombreuses mauvaises surprises sans les eviter toutes : perso j'ai développé une application sous 97 ! et là tu as de nombreux problemes ( fonctions à récréer, bugs de 97 à bypasser etc ), mais au final cette aplication a été validée pour 97 2002 et 2007.Une autre piste a explorer via la compilation conditionnelle
 
Dernière édition:

Ranipet

XLDnaute Junior
Re : Compatibilité VBA entre Exel 2003 et 2007

Re,

Je n'ai pas vraiment les autres version à dispo. Quelqu'un pourrait-il me dire quelle(s) instruction(s) je devrais utiliser pour que ça fonctionne avec Excel 2000 et suivants ?

"Compilation conditionnelle" : je ne sais pas pourquoi mais ça me fait peur...
 

kiki29

XLDnaute Barbatruc
Re : Compatibilité VBA entre Exel 2003 et 2007

Re,par curiosité voir Ce lien n'existe plus
sinon l'installation d'une version 2000 sur ton PC t'aiderait et si comme tu le dis tu bosses en Inde cela ne posera pas de problemex
quant à obtenir une liste des différences il faut aller fouiller sur Msdn et encore sans certitudes aucune.La compatibilté étant à priori ascendante cela reste à mon humble avis la meilleure approche sans enlever tous les écueils
 

Ranipet

XLDnaute Junior
Re : Compatibilité VBA entre Exel 2003 et 2007

Re,

Re,par curiosité voir Ce lien n'existe plus
Merci, intéressant.


sinon l'installation d'une version 2000 sur ton PC t'aiderait et si comme tu le dis tu bosses en Inde cela ne posera pas de problemex
Malheureusement je suis en inde mais j'ai un PC français sur lequel je ne suis pas libre d'installer de version 2000 "indienne".
Je n'ai pas non plus accès à un PC avec 2000.


=> Est-ce que quelqu'un pourrait me dire ce que mon code devrait être sous 2000 ou 2003 ?
Notamment la première ligne et, peut-être, le choix des données.
Peut-être doit-on sélectionner les données avant de créer un graph sous 2003, je ne sais plus.
VB:
'Ajout du graphique
    ActiveSheet.Shapes.AddChart.Select
     
'Sélection de la plage de données
    With ActiveChart
        .SetSourceData Source:=Range(Cells(24, 3), Cells(ActiveSheet.Range("C65536").End(xlUp).Row, 3 + i))
        .ChartType = xlLineMarkers
        .Axes(xlCategory).MajorUnit = 7
    End With
    
'Déplacement du graphique
    With ActiveSheet.ChartObjects(ActiveSheet.ChartObjects.Count) 'Placement en B3
        .Left = Range("B3:L23").Left + 3
        .Top = Range("B3:L23").Top + 3
        .Width = Range("B3:L23").Width - 2 * 3
        .Height = Range("B3:L23").Height - 2 * 3
    End With

Merci pour votre aide, j'ai vraiment besoin de vous là.
 

Staple1600

XLDnaute Barbatruc
Re : Compatibilité VBA entre Exel 2003 et 2007

Bonjour

Pour les graphiques, j'écris mon code VBA comme Monsieur Peltier
(en évitant de le sélectionner)
Code:
Sub AddChartObject()
With ActiveSheet.ChartObjects.Add _
            (Left:=100, Width:=375, Top:=75, Height:=225)
        .Chart.SetSourceData Source:=Sheets("Sheet1").Range("A3:G14")
        .Chart.ChartType = xlXYScatterLines
    End With
End Sub

PS: je te conseille de parcourir les différents messages relatifs aux graphique rédigés
par ce membre du forum
 
Dernière édition:

Ranipet

XLDnaute Junior
Re : Compatibilité VBA entre Exel 2003 et 2007

Bonjour

Pour les graphiques, j'écris mon code VBA comme Monsieur Peltier
(en évitant de le sélectionner)
Code:
Sub AddChartObject()
With ActiveSheet.ChartObjects.Add _
            (Left:=100, Width:=375, Top:=75, Height:=225)
        .Chart.SetSourceData Source:=Sheets("Sheet1").Range("A3:G14")
        .Chart.ChartType = xlXYScatterLines
    End With
End Sub
Merci.


PS: je te conseille de parcourir les différents messages relatifs aux graphique rédigés
par ce membre du forum
Excel Downloads Forums - Voir le profil: CB60
Excellent !:eek:
 

Discussions similaires

Réponses
1
Affichages
194
Réponses
0
Affichages
175

Statistiques des forums

Discussions
312 412
Messages
2 088 195
Membres
103 763
dernier inscrit
p.michaux