PB avec constantes Win64 Win32 Win16 VBA7 et VBA6

8test.xlsm (12.08 Ko)

Bonjour,

chez moi toutes les constantes sont vides et prennent systématiquement la valeur "Faux" si elles sont déclarer comme Booléenne.

Normalement ces constantes sont défini et ont une valeur en fonction de la version du logiciel utilisé, or là c'est le néant et Google ne m'a pas été d'un grand renfort sur ce coup là, quelqu'un a t'il déjà eu affaires à ce problème ?

Merci de votre aide.

Ci joint le fichier test avec le code et un tableau de ce que me renvoie les valeurs.

Constante

Valeur renvoyé

valeur renvoyé si déclaré comme booléenne.

Win64

Vide

Faux
Win32VideFaux
Win16VideFaux
VBA7VideFaux
VBA6VideFaux

Bonjour,

Ben... Oui ! C'est comme ça que ça passe en VBA. Mais YAPA que chez toi si ça peut te rassurer.

A+

Voilà qui est tout à fait curieux galopin01, car nos amis de chez Microsoft nous assures que ces constantes sont présentes dans toutes les versions de leur suite de logiciel. Ainsi en les vérifiant, nous pouvons faire ajuster nos codes pour les versions 32 et 64 bits.

2021 02 12 18h25 31

Du coup, permet moi de réitérer l'interrogation et pourquoi ça ne fonctionne pas non plus chez toi galopin01 ? Il doit y avoir un truc

Si tu remplaces if VBA6 par if VBA6 = True ça change qq chose ?

J'avais essayé et non ça ne changeait rien

Bonjour,

cette variable est une variable qui est destinée à l'interpréteur VBA, à utiliser avec des instructions spécifiques pour l'interpréteur

exemple

#If Win64 Then
    Const w = 64
#ElseIf Win32 Then
    Const w = 32
#else
    Const w = 16
#End If
#If VBA7 Then
    Const v = 7
#Else
    Const v = 6
#End If

Sub test()
    MsgBox "version windows : " & w & " version vba : " & v
End Sub

D'accord je commence à comprendre, je m'obstinais à mettre ce code entre un Sub et un End sub, et c'était là l'erreur !

en copiant ton code tel quel dans un module ça fonctionne parfaitement.

Merci de ton aide h2so4 !

Avant de clore le sujet, la raison qui fais que l'on peut se passer de Sub et End Sub m'échappe , pourrais-tu m'expliquer stp ?

bonsoir

sans variables et conditions globale module

Sub testWIN()
'avec une un simple variable et pas forcement globale 
Dim W2&
W2 = Val(Split(Split(Application.OperatingSystem, "(")(1), "-")(0))
MsgBox "Environnement: " & W2 
End Sub

Sub testVB()
MsgBox "VB" & Left(Application.VBE.Version, 1)
End Sub

re-,

Avant de clore le sujet, la raison qui fais que l'on peut se passer de Sub et End Sub m'échappe , pourrais-tu m'expliquer stp ?

il ne s'agit pas d'instructions VBA mais d'instructions pour l'interpréteur VBA et à ma connaissance n'ont d'utilité que pour la déclaration de procédures se trouvant dans des librairies externes (API) qui a une syntaxe différente selon que l'on est en WIN64 ou autre, dans les autres cas on peut utiliser la proposition de patricktoulon. Ces instructions sont généralement utilisées pour du code VBA qui est destiné à devoir s'exécuter sur différentes version de windows et excel vba.

voir quelques explications ici (pour access mais valable pour excel)

https://grenier.self-access.com/access/visual-basic/faire-cohabiter-du-code-vba-32-bits-et-64-bits/

Top ! Merci pour vos réponses patricktoulon et h2so4.

Rechercher des sujets similaires à "constantes win64 win32 win16 vba7 vba6"