Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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 )... 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
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…