OVH Cloud OVH Cloud

VBA + version OS

4 réponses
Avatar
Olivier Guillou
Bonjour,

J'aurai besoin de faire de la compilation conditionnelle sous VBA. A savoir
je dois empêcher la compilation d'une partie de mon code si on est sous
Windows NT 4.0. Savez-vous quelle est le nom de la variable conditionnelle
qui gère la version OS ? Il existe Win32 pour faire la différence entre 16
et 32 bits mais je ne connais pas le nom de celle qui gère WinNT, WinXP,
etc.


--
****************************************************************************
*****
Pour répondre à ce message, enlever "nospam" de l'adresse e-mail.
Merci.

****************************************************************************
*****

4 réponses

Avatar
Christian Herbé
Olivier Guillou a écrit:
Bonjour,

J'aurai besoin de faire de la compilation conditionnelle sous VBA. A savoir
je dois empêcher la compilation d'une partie de mon code si on est sous
Windows NT 4.0.


if Environ("OS")="Windows_NT" then



Tu peux obtenir la liste des variables d'environnement (variables du
système) en tapant la commande SET dans une fenetre DOS

Avatar
Olivier Guillou
ok merci bcp Christian.

olivier




"Christian Herbé" a écrit dans le message de news:



Olivier Guillou a écrit:
Bonjour,

J'aurai besoin de faire de la compilation conditionnelle sous VBA. A
savoir


je dois empêcher la compilation d'une partie de mon code si on est sous
Windows NT 4.0.


if Environ("OS")="Windows_NT" then



Tu peux obtenir la liste des variables d'environnement (variables du
système) en tapant la commande SET dans une fenetre DOS






Avatar
Frédéric Sigonneau
Bonsoir,

Pour repérer quel est l'OS utilisé, je pense qu'il faut passer par la fonction
API GetWindowsExA. Je crains que la solution de Christian ne renvoie la même
réponse pour Windows NT, 2000, XP, et sans doute 2003 parce qu'Environ ne semble
pas permettre de faire la différence entre la plateforme et ses versions.
L'instruction Application.OperatingSystem n'est guère plus précise. Il y a aussi
des solutions utilisant le FileSystemObject (une recherche sur google te
permettrait d'en trouver des exemeples), mais je trouve l'API plus prodigue en
renseignements possibles.
Tu pourrais essayer une petite fonction perso de ce style, après avoir recopié
le code dans un module standard du projet où tu veux l'utiliser :

'================================ Private Declare Function GetVersionExA Lib "Kernel32" _
(lpVersionInformation As OSVERSIONINFO) As Long

Private Type OSVERSIONINFO
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long
szCSDVersion As String * 128
End Type

Sub test()
MsgBox IsWindowsNT
End Sub

Function IsWindowsNT() As Boolean
Dim VerInfo As OSVERSIONINFO

VerInfo.dwOSVersionInfoSize = Len(VerInfo)
GetVersionExA VerInfo
IsWindowsNT = (VerInfo.dwPlatformId = 2) And (VerInfo.dwMajorVersion < 5)

End Function
'================================
Si tu as besoin de distinguer Windows NT 4.0 des autres versions de NT, relance.

FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !


Bonjour,

J'aurai besoin de faire de la compilation conditionnelle sous VBA. A savoir
je dois empêcher la compilation d'une partie de mon code si on est sous
Windows NT 4.0. Savez-vous quelle est le nom de la variable conditionnelle
qui gère la version OS ? Il existe Win32 pour faire la différence entre 16
et 32 bits mais je ne connais pas le nom de celle qui gère WinNT, WinXP,
etc.

--
****************************************************************************
*****
Pour répondre à ce message, enlever "nospam" de l'adresse e-mail.
Merci.

****************************************************************************
*****


Avatar
AV
En utilisant Evaluate et la fonction de feuille INFO, il y a ça :
MsgBox [mid(info("origin"),find(":",info("origin"))+1,9^9)]
.....mais comme je n'ai pas Win NT (donc pas de test possible), je livre en
l'état :

AV