Déclarer une variable en fonction de la version d'excel

  • Initiateur de la discussion Initiateur de la discussion carlos
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

carlos

XLDnaute Impliqué
Bonjour,
J'ai créé un petit programme qui fonctionne sous excel 2007 mais qui bogue sur 2010 et 2013.
J'ai résolu mon problème mais la correction m'obligé a avoir 2 fichiers, un pour2007 et un autre pour 2010
Le probleme vient de la déclaration des variables différentes entre les 2 versions.

Version 2007:
Private Declare Function IsClipboardFormatAvailable& Lib "user32" (ByVal wFormat%)
Version 2010-2013
Private Declare PtrSafe Function IsClipboardFormatAvailable& Lib "user32" (ByVal wFormat%)

Si j'ouvre le fichier 2010 avec 2007 ça bogue et réciproquement
Comment faire pour n'avoir qu'un seul fichier?
Merci
Carlos
 
Re : Déclarer une variable en fonction de la version d'excel

Bonjour Carlos

Pour la version, tu peux tester avec:

Code:
VersionXL= Application.Version

Mais je me demande si tu ne vas pas avoir un bug sous Xl2007 avec Ptrsafe 😕.
 
Re : Déclarer une variable en fonction de la version d'excel

Merci pour vos réponses.
Lorsque je teste :
If Vba7 Then
Private Declare PtrSafe Function IsClipboardFormatAvailable& Lib "user32" (ByVal wFormat%)
Else
Private Declare Function IsClipboardFormatAvailable& Lib "user32" (ByVal wFormat%)
End If
J'ai le message d'erreur:
Erreur de compilation.
Instruction incorrecte à l’extérieur d'une procédure.

Savez vous comment déclarer en private dans une procédure?
 
Re : Déclarer une variable en fonction de la version d'excel

Bonjour.

Il n'y a pas à déclarer des procédures à l'intérieur d'autres procédures. Ça existait en PL1, ça n'a jamais existé en VBA. Toujours globales les procédures. Que ce soit par Sub, Function etc. ou par Declare.

Et puis c'est #If Vba7 Then, #Else, #End If. Ce sont des directives de compilations, pas des instructions exécutables.
 
Dernière édition:
Re : Déclarer une variable en fonction de la version d'excel

Attention, laissez bien les # présents dans le code, utilisez
Code:
#If VBA7 Then
Private Declare PtrSafe Function IsClipboardFormatAvailable& Lib "user32" (ByVal wFormat%)
#Else
Private Declare Function IsClipboardFormatAvailable& Lib "user32" (ByVal wFormat%)
#End If

Il faut copier ce code au début du module, à l'extérieur de toute procédure (d'où l'importance du symbole # avant les instructions)
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour