Traiter une erreur de compilation en VBA

tontonexcel

XLDnaute Occasionnel
Bonjour à tous,

Je suis en train de tester une macro qui doit fonctionner sous Excel 2007 et versions supérieures

Fonctionnement très simple : Désactiver l'affichage du volet dans un graphique croisé dynamique

Sur Excel 2007 : ActiveWorkbook.ShowPivotChartActiveFields = False

Sur Excel 2010 : ActiveChart.ShowAllFieldButtons = False

J'ai donc fait un petit test avec Application.Version pour tester la version d'Excel, mais le souci est que la syntaxe 2010 n'existe pas dans 2007 à l'exécution j'ai une erreur de compilation

Comment est-il possible de contourner cela ?

Je joins éventuellement le fichier la macro est événementielle dans la feuille Histogramme

Merci à vous
 

Pièces jointes

  • test_version_excel.xlsm
    24.3 KB · Affichages: 52

Dranreb

XLDnaute Barbatruc
Re : Traiter une erreur de compilation en VBA

Bonjour.

Vous pouvez au moins limiter les dégâts (en termes d'adaptations à effectuer) à l'aide de directives de compilation conditionnelle #Const, #If, #ElseIf, #Else et #End If, même s'il n'existe hélas pas de constantes de compilation conditionnelles toutes prêtes dépendant de la version d'Excel, ce qu'il reste à vérifier. Il y en a qui dépendent de la version de VBA: VBA6, VBA7. À tester.
 
Dernière édition:

tontonexcel

XLDnaute Occasionnel
Re : Traiter une erreur de compilation en VBA

Bonjour Dranreb

Je me doutais malheureusement que cela allait être un peu compliqué car effectivement le compilateur fait bien son travail (trop bien :rolleyes:)... Peut-être dans une prochaine version !

Merci en tout cas pour la réponse !
 

Dranreb

XLDnaute Barbatruc
Re : Traiter une erreur de compilation en VBA

Essayez quand même ça à tout hasard, au cas où ça résoudrait quand même le problème:
VB:
#If VBA7 Then
   ActiveChart.ShowAllFieldButtons = True
#Else
   ActiveWorkbook.ShowPivotChartActiveFields = True
#End If
Si ça ne le résout pas il restera toujours la possibilité d'utiliser un autre nom initialisé préalablement par #Const Vers2010 = 1
 

tontonexcel

XLDnaute Occasionnel
Re : Traiter une erreur de compilation en VBA

Eh bien ça fonctionne ;) Franchement je ne connaissais pas du tout ces conditions, juste pour ma connaissance et pour voir si j'ai bien compris, le # teste le code VBA en cours de compilation ?

Merci beaucoup dans tous les cas et bon dimanche !!
 

Dranreb

XLDnaute Barbatruc
Re : Traiter une erreur de compilation en VBA

Oui, un peu. Ce sont des directives de compilation conditionnelles. Si l'expression (qui doit être composée de constantes de compilation conditionnelles) derrière un #If est nulle toutes instructions derrières le Then sont ignorées jusqu'à rencontre d'un #ElseIf, #Else ou #End If
 

Discussions similaires

Réponses
11
Affichages
2 K

Membres actuellement en ligne

Statistiques des forums

Discussions
312 196
Messages
2 086 100
Membres
103 116
dernier inscrit
kutobi87