Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

A vot'bon coeur !

24 réponses
Avatar
Frédéric Sigonneau
Bonsoir,

J'ai essayé d'écrire une procédure qui renvoie, sans oublier aucune des
"déclinaisons" possibles, la version exacte de Windows en cours d'exécution.
J'en ai recensé une 20aine (j'espère ne pas en avoir oublié) et je n'ai bien sûr
pas toutes ces versions à ma disposition pour vérifier que mon code fonctionne
pour chacune d'elles ! Je l'ai testé avec Windows 98 SE, Windows Me et Windows
XP Edition familiale mais je suis loin du compte...
Si ceux d'entre vous qui ont accès à d'autres versions pouvaient :
-recopier le code joint dans un module standard d'un classeur Excel
-exécuter la procédure GetWindowsVersion
-poster le résultat (échec/réussite, erreur ?),
par avance, je les en remercie.

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 !

'================================
'infos sur l'OS utilisé (version, type, etc.)

Public Declare Function GetWinVersion Lib "kernel32" Alias "GetVersionExA" _
(lpVersionInformation As OSVERSIONINFO) As Long
Public Declare Function GetWinVersionEx Lib "kernel32" Alias "GetVersionExA" _
(lpVersionInformation As OSVERSIONINFOEX) As Long

'Déclaration des constantes
Const VER_SUITE_SMALLBUSINESS = &H1
Const VER_SUITE_ENTERPRISE = &H2
Const VER_SUITE_BACKOFFICE = &H4
Const VER_SUITE_BLADE = &H400
Const VER_SUITE_COMMUNICATIONS = &H8
Const VER_SUITE_TERMINAL = &H10
Const VER_SUITE_SMALLBUSINESS_RESTRICTED = &H20
Const VER_SUITE_EMBEDDEDNT = &H40
Const VER_SUITE_DATACENTER = &H80
Const VER_SUITE_SINGLEUSERTS = &H100
Const VER_SUITE_PERSONAL = &H200

Const VER_NT_WORKSTATION = &H1
Const VER_NT_DOMAIN_CONTROLLER = &H2
Const VER_NT_SERVER = &H3

Const VER_PLATFORM_WIN32_WINDOWS As Long = 1&
Const VER_PLATFORM_WIN32_NT As Long = 2&

'Structure pour les versions WinDOS
Public Type OSVERSIONINFO
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long
szCSDVersion As String * 128 'sous type de certaines versions
End Type

'Structure pour les versions WinNT
Public Type OSVERSIONINFOEX
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long
szCSDVersion As String * 128 'sous type ou info sur service pack installé
wServicePackMajor As Integer
wServicePackMinor As Integer
wSuiteMask As Integer
wProductType As Byte
wRest As Byte
End Type


Public Sub GetWindowsVersion()
Dim ver As OSVERSIONINFOEX
Dim ver2 As OSVERSIONINFO
Dim strVer As String
Dim OS As String
Dim OSType As String
Dim NumeroVersion As String
Dim Detail As String
Dim Msg$

ver.dwOSVersionInfoSize = Len(ver)
GetWinVersionEx ver

ver2.dwOSVersionInfoSize = Len(ver2)
GetWinVersion ver2
Detail = Mid(ver2.szCSDVersion, 2, 1)

Select Case ver.dwPlatformId

Case VER_PLATFORM_WIN32_WINDOWS
If ver2.dwMajorVersion = 4 And ver2.dwMinorVersion = 0 Then
OS = "Windows 95"
If Detail = "A" Then
OS = OS & " OSR1"
ElseIf Detail = "B" Then
OS = OS & " OSR2"
End If
ElseIf ver2.dwMajorVersion = 4 And ver2.dwMinorVersion = 3 Then
OS = "Windows 95 OSR2"
If Detail = "B" Then
OS = OS & ".1"
ElseIf Detail = "C" Then
OS = OS & ".5"
End If
ElseIf ver2.dwMajorVersion = 4 And ver2.dwMinorVersion = 10 Then
OS = "Windows 98"
If Detail = "A" Then OS = OS & " SE (Seconde Édition)"
ElseIf ver2.dwMajorVersion = 4 And ver2.dwMinorVersion = 90 Then
OS = "Windows ME (Millenium Édition)"
End If
NumeroVersion = "[" & ver2.dwMajorVersion & "." _
& ver2.dwMinorVersion & _
IIf(Asc(Detail) = 0, "", "." & Detail) & "]"
Case VER_PLATFORM_WIN32_NT
If ver.dwMajorVersion = 3 And ver.dwMinorVersion = 0 Then
OS = "Windows NT 3.0"
ElseIf ver.dwMajorVersion = 3 And ver.dwMinorVersion = 1 Then
OS = "Windows NT 3.1"
ElseIf ver.dwMajorVersion = 3 And ver.dwMinorVersion = 51 Then
OS = "Windows NT 3.51"
ElseIf ver.dwMajorVersion = 4 Then
OS = "Windows NT 4.0"
ElseIf ver.dwMajorVersion = 5 And ver.dwMinorVersion = 0 Then
OS = "Windows 2000"
ElseIf ver.dwMajorVersion = 5 And ver.dwMinorVersion = 1 Then
OS = "Windows XP"
ElseIf ver.dwMajorVersion = 5 And ver.dwMinorVersion = 2 Then
OS = "Windows 2003 Serveur"
End If

'Quelle version exacte NT/2000/XP/2003 s'agit-il ?
Select Case ver.wProductType
Case VER_NT_WORKSTATION
If ver.dwMajorVersion < 5 Then
OSType = "Station de travail"
Else
If ver.wSuiteMask And VER_SUITE_PERSONAL Then
OSType = "Édition familiale"
Else
OSType = "Professionnel"
End If
End If
Case VER_NT_DOMAIN_CONTROLLER
OSType = "Serveur (Contrôleur de domaine)"
Case VER_NT_SERVER
If ver.wSuiteMask And VER_SUITE_DATACENTER Then
OSType = "Serveur (Centre de données)"
ElseIf ver.wSuiteMask And VER_SUITE_ENTERPRISE Then
If ver.dwMajorVersion = 5 And ver.dwMinorVersion = 0 Then
OSType = "Serveur avancé"
Else
OSType = "Edition Entreprise"
End If
ElseIf ver.wSuiteMask And VER_SUITE_BLADE Then
OSType = "Édition Web"
Else
OSType = "Serveur"
End If
End Select

NumeroVersion = "[" & ver.dwMajorVersion & "." _
& ver.dwMinorVersion & "." _
& ver.dwBuildNumber & "]"
End Select

Msg = "Système : " & OS & " " & OSType & vbLf
Msg = Msg & "Numéro version : " & NumeroVersion & vbLf

If ver.wServicePackMajor >= 1 Then
Msg = Msg & "Service Pack : " & ver.wServicePackMajor & "." &
ver.wServicePackMinor & vbLf
Else
Msg = Msg & "Service Pack : " & "Aucun Service Pack installé" & vbLf
End If

MsgBox Msg

End Sub 'fs
'================================

10 réponses

1 2 3
Avatar
gee-dee-
Salut Fred,
rien de spécial à signaler ...

réponse :
Système : Windows XP Édition familiale
Numéro version : [5.1.2600]
Service Pack : 1.0

OK
@+
Avatar
fil007
No problemo

Systéme: XP pro
Ver : 5.1.2600
SP: 1.0
Avatar
sabatier
'Quelle version exacte NT/2000/XP/2003 s'agit-il ?

merdum, je ne peux pas collaborer, moi, du fait que ma version ne s'agit
pas...
par contre, j'en connais un qui va s'agiter du côté de ses scuds bretons...
jps (aux abriiiiiiiiiiiiiiiiiiiiiiiiiiiis)

Frédéric Sigonneau a écrit:
Bonsoir,

J'ai essayé d'écrire une procédure qui renvoie, sans oublier aucune des
"déclinaisons" possibles, la version exacte de Windows en cours d'exécution.
J'en ai recensé une 20aine (j'espère ne pas en avoir oublié) et je n'ai bien sûr
pas toutes ces versions à ma disposition pour vérifier que mon code fonctionne
pour chacune d'elles ! Je l'ai testé avec Windows 98 SE, Windows Me et Windows
XP Edition familiale mais je suis loin du compte...
Si ceux d'entre vous qui ont accès à d'autres versions pouvaient :
-recopier le code joint dans un module standard d'un classeur Excel
-exécuter la procédure GetWindowsVersion
-poster le résultat (échec/réussite, erreur ?),
par avance, je les en remercie.

FS



--
NB. mes admiratrices voudront bien supprimer "delaile" avant de m'écrire
en bal perso....merci

Avatar
sabatier
il a dit le monsieur qu'il avait testé avec Win XP Home, geedee....tu
soignes tes stats ou quoi?
jps

gee-dee- a écrit:
Salut Fred,
rien de spécial à signaler ...

réponse :
Système : Windows XP Édition familiale
Numéro version : [5.1.2600]
Service Pack : 1.0

OK
@+





--
NB. mes admiratrices voudront bien supprimer "delaile" avant de m'écrire
en bal perso....merci

Avatar
Clément Marcotte
Bonjour,

Avec Windows 98 SP1 et Excel Xp:

Pas de message d'horreur.

Système : Rien
Numéro version : Rien
Service Pack : Aucun Service Pack d'installé


"Frédéric Sigonneau" a écrit dans le
message de news:
Bonsoir,

J'ai essayé d'écrire une procédure qui renvoie, sans oublier aucune
des

"déclinaisons" possibles, la version exacte de Windows en cours
d'exécution.

J'en ai recensé une 20aine (j'espère ne pas en avoir oublié) et je
n'ai bien sûr

pas toutes ces versions à ma disposition pour vérifier que mon code
fonctionne

pour chacune d'elles ! Je l'ai testé avec Windows 98 SE, Windows Me
et Windows

XP Edition familiale mais je suis loin du compte...
Si ceux d'entre vous qui ont accès à d'autres versions pouvaient :
-recopier le code joint dans un module standard d'un classeur Excel
-exécuter la procédure GetWindowsVersion
-poster le résultat (échec/réussite, erreur ?),
par avance, je les en remercie.

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 !

'=============================== > 'infos sur l'OS utilisé (version, type, etc.)

Public Declare Function GetWinVersion Lib "kernel32" Alias
"GetVersionExA" _

(lpVersionInformation As OSVERSIONINFO) As Long
Public Declare Function GetWinVersionEx Lib "kernel32" Alias
"GetVersionExA" _

(lpVersionInformation As OSVERSIONINFOEX) As Long

'Déclaration des constantes
Const VER_SUITE_SMALLBUSINESS = &H1
Const VER_SUITE_ENTERPRISE = &H2
Const VER_SUITE_BACKOFFICE = &H4
Const VER_SUITE_BLADE = &H400
Const VER_SUITE_COMMUNICATIONS = &H8
Const VER_SUITE_TERMINAL = &H10
Const VER_SUITE_SMALLBUSINESS_RESTRICTED = &H20
Const VER_SUITE_EMBEDDEDNT = &H40
Const VER_SUITE_DATACENTER = &H80
Const VER_SUITE_SINGLEUSERTS = &H100
Const VER_SUITE_PERSONAL = &H200

Const VER_NT_WORKSTATION = &H1
Const VER_NT_DOMAIN_CONTROLLER = &H2
Const VER_NT_SERVER = &H3

Const VER_PLATFORM_WIN32_WINDOWS As Long = 1&
Const VER_PLATFORM_WIN32_NT As Long = 2&

'Structure pour les versions WinDOS
Public Type OSVERSIONINFO
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long
szCSDVersion As String * 128 'sous type de certaines versions
End Type

'Structure pour les versions WinNT
Public Type OSVERSIONINFOEX
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long
szCSDVersion As String * 128 'sous type ou info sur service pack
installé

wServicePackMajor As Integer
wServicePackMinor As Integer
wSuiteMask As Integer
wProductType As Byte
wRest As Byte
End Type


Public Sub GetWindowsVersion()
Dim ver As OSVERSIONINFOEX
Dim ver2 As OSVERSIONINFO
Dim strVer As String
Dim OS As String
Dim OSType As String
Dim NumeroVersion As String
Dim Detail As String
Dim Msg$

ver.dwOSVersionInfoSize = Len(ver)
GetWinVersionEx ver

ver2.dwOSVersionInfoSize = Len(ver2)
GetWinVersion ver2
Detail = Mid(ver2.szCSDVersion, 2, 1)

Select Case ver.dwPlatformId

Case VER_PLATFORM_WIN32_WINDOWS
If ver2.dwMajorVersion = 4 And ver2.dwMinorVersion = 0 Then
OS = "Windows 95"
If Detail = "A" Then
OS = OS & " OSR1"
ElseIf Detail = "B" Then
OS = OS & " OSR2"
End If
ElseIf ver2.dwMajorVersion = 4 And ver2.dwMinorVersion = 3
Then

OS = "Windows 95 OSR2"
If Detail = "B" Then
OS = OS & ".1"
ElseIf Detail = "C" Then
OS = OS & ".5"
End If
ElseIf ver2.dwMajorVersion = 4 And ver2.dwMinorVersion = 10
Then

OS = "Windows 98"
If Detail = "A" Then OS = OS & " SE (Seconde Édition)"
ElseIf ver2.dwMajorVersion = 4 And ver2.dwMinorVersion = 90
Then

OS = "Windows ME (Millenium Édition)"
End If
NumeroVersion = "[" & ver2.dwMajorVersion & "." _
& ver2.dwMinorVersion & _
IIf(Asc(Detail) = 0, "", "." & Detail) & "]"
Case VER_PLATFORM_WIN32_NT
If ver.dwMajorVersion = 3 And ver.dwMinorVersion = 0 Then
OS = "Windows NT 3.0"
ElseIf ver.dwMajorVersion = 3 And ver.dwMinorVersion = 1 Then
OS = "Windows NT 3.1"
ElseIf ver.dwMajorVersion = 3 And ver.dwMinorVersion = 51 Then
OS = "Windows NT 3.51"
ElseIf ver.dwMajorVersion = 4 Then
OS = "Windows NT 4.0"
ElseIf ver.dwMajorVersion = 5 And ver.dwMinorVersion = 0 Then
OS = "Windows 2000"
ElseIf ver.dwMajorVersion = 5 And ver.dwMinorVersion = 1 Then
OS = "Windows XP"
ElseIf ver.dwMajorVersion = 5 And ver.dwMinorVersion = 2 Then
OS = "Windows 2003 Serveur"
End If

'Quelle version exacte NT/2000/XP/2003 s'agit-il ?
Select Case ver.wProductType
Case VER_NT_WORKSTATION
If ver.dwMajorVersion < 5 Then
OSType = "Station de travail"
Else
If ver.wSuiteMask And VER_SUITE_PERSONAL Then
OSType = "Édition familiale"
Else
OSType = "Professionnel"
End If
End If
Case VER_NT_DOMAIN_CONTROLLER
OSType = "Serveur (Contrôleur de domaine)"
Case VER_NT_SERVER
If ver.wSuiteMask And VER_SUITE_DATACENTER Then
OSType = "Serveur (Centre de données)"
ElseIf ver.wSuiteMask And VER_SUITE_ENTERPRISE Then
If ver.dwMajorVersion = 5 And ver.dwMinorVersion = 0
Then

OSType = "Serveur avancé"
Else
OSType = "Edition Entreprise"
End If
ElseIf ver.wSuiteMask And VER_SUITE_BLADE Then
OSType = "Édition Web"
Else
OSType = "Serveur"
End If
End Select

NumeroVersion = "[" & ver.dwMajorVersion & "." _
& ver.dwMinorVersion & "." _
& ver.dwBuildNumber & "]"
End Select

Msg = "Système : " & OS & " " & OSType & vbLf
Msg = Msg & "Numéro version : " & NumeroVersion & vbLf

If ver.wServicePackMajor >= 1 Then
Msg = Msg & "Service Pack : " & ver.wServicePackMajor & "." &
ver.wServicePackMinor & vbLf
Else
Msg = Msg & "Service Pack : " & "Aucun Service Pack installé" &
vbLf

End If

MsgBox Msg

End Sub 'fs
'=============================== >


Avatar
popi
Salut Frédéric,

Si ceux d'entre vous qui ont accès à d'autres versions pouvaient :
-poster le résultat (échec/réussite, erreur ?),


Système : Windows 2000 Professionnel
Numéro version : [5.0.2195]
Service Pack : 2.0
(identique avec XL97 ou XL2002)

@+ popi

Avatar
AV
Juste pour info :
Code non supporté par XL5 et XL95

AV
Avatar
Daniel.j
Salut Frédéric
Resultat:
XP PRO
5-1-2600
Pack 1.0


Daniel MVP Excel
FAQ du Forum Microsoft Public Fr Excel
http://dj.joss.free.fr/faq.htm



"Frédéric Sigonneau" a écrit dans le message de news:

| Bonsoir,
|
| J'ai essayé d'écrire une procédure qui renvoie, sans oublier aucune des
| "déclinaisons" possibles, la version exacte de Windows en cours d'exécution.
| J'en ai recensé une 20aine (j'espère ne pas en avoir oublié) et je n'ai bien sûr
| pas toutes ces versions à ma disposition pour vérifier que mon code fonctionne
| pour chacune d'elles ! Je l'ai testé avec Windows 98 SE, Windows Me et Windows
| XP Edition familiale mais je suis loin du compte...
| Si ceux d'entre vous qui ont accès à d'autres versions pouvaient :
| -recopier le code joint dans un module standard d'un classeur Excel
| -exécuter la procédure GetWindowsVersion
| -poster le résultat (échec/réussite, erreur ?),
| par avance, je les en remercie.
|
| 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 !
|
| '=============================== | 'infos sur l'OS utilisé (version, type, etc.)
|
| Public Declare Function GetWinVersion Lib "kernel32" Alias "GetVersionExA" _
| (lpVersionInformation As OSVERSIONINFO) As Long
| Public Declare Function GetWinVersionEx Lib "kernel32" Alias "GetVersionExA" _
| (lpVersionInformation As OSVERSIONINFOEX) As Long
|
| 'Déclaration des constantes
| Const VER_SUITE_SMALLBUSINESS = &H1
| Const VER_SUITE_ENTERPRISE = &H2
| Const VER_SUITE_BACKOFFICE = &H4
| Const VER_SUITE_BLADE = &H400
| Const VER_SUITE_COMMUNICATIONS = &H8
| Const VER_SUITE_TERMINAL = &H10
| Const VER_SUITE_SMALLBUSINESS_RESTRICTED = &H20
| Const VER_SUITE_EMBEDDEDNT = &H40
| Const VER_SUITE_DATACENTER = &H80
| Const VER_SUITE_SINGLEUSERTS = &H100
| Const VER_SUITE_PERSONAL = &H200
|
| Const VER_NT_WORKSTATION = &H1
| Const VER_NT_DOMAIN_CONTROLLER = &H2
| Const VER_NT_SERVER = &H3
|
| Const VER_PLATFORM_WIN32_WINDOWS As Long = 1&
| Const VER_PLATFORM_WIN32_NT As Long = 2&
|
| 'Structure pour les versions WinDOS
| Public Type OSVERSIONINFO
| dwOSVersionInfoSize As Long
| dwMajorVersion As Long
| dwMinorVersion As Long
| dwBuildNumber As Long
| dwPlatformId As Long
| szCSDVersion As String * 128 'sous type de certaines versions
| End Type
|
| 'Structure pour les versions WinNT
| Public Type OSVERSIONINFOEX
| dwOSVersionInfoSize As Long
| dwMajorVersion As Long
| dwMinorVersion As Long
| dwBuildNumber As Long
| dwPlatformId As Long
| szCSDVersion As String * 128 'sous type ou info sur service pack installé
| wServicePackMajor As Integer
| wServicePackMinor As Integer
| wSuiteMask As Integer
| wProductType As Byte
| wRest As Byte
| End Type
|
|
| Public Sub GetWindowsVersion()
| Dim ver As OSVERSIONINFOEX
| Dim ver2 As OSVERSIONINFO
| Dim strVer As String
| Dim OS As String
| Dim OSType As String
| Dim NumeroVersion As String
| Dim Detail As String
| Dim Msg$
|
| ver.dwOSVersionInfoSize = Len(ver)
| GetWinVersionEx ver
|
| ver2.dwOSVersionInfoSize = Len(ver2)
| GetWinVersion ver2
| Detail = Mid(ver2.szCSDVersion, 2, 1)
|
| Select Case ver.dwPlatformId
|
| Case VER_PLATFORM_WIN32_WINDOWS
| If ver2.dwMajorVersion = 4 And ver2.dwMinorVersion = 0 Then
| OS = "Windows 95"
| If Detail = "A" Then
| OS = OS & " OSR1"
| ElseIf Detail = "B" Then
| OS = OS & " OSR2"
| End If
| ElseIf ver2.dwMajorVersion = 4 And ver2.dwMinorVersion = 3 Then
| OS = "Windows 95 OSR2"
| If Detail = "B" Then
| OS = OS & ".1"
| ElseIf Detail = "C" Then
| OS = OS & ".5"
| End If
| ElseIf ver2.dwMajorVersion = 4 And ver2.dwMinorVersion = 10 Then
| OS = "Windows 98"
| If Detail = "A" Then OS = OS & " SE (Seconde Édition)"
| ElseIf ver2.dwMajorVersion = 4 And ver2.dwMinorVersion = 90 Then
| OS = "Windows ME (Millenium Édition)"
| End If
| NumeroVersion = "[" & ver2.dwMajorVersion & "." _
| & ver2.dwMinorVersion & _
| IIf(Asc(Detail) = 0, "", "." & Detail) & "]"
| Case VER_PLATFORM_WIN32_NT
| If ver.dwMajorVersion = 3 And ver.dwMinorVersion = 0 Then
| OS = "Windows NT 3.0"
| ElseIf ver.dwMajorVersion = 3 And ver.dwMinorVersion = 1 Then
| OS = "Windows NT 3.1"
| ElseIf ver.dwMajorVersion = 3 And ver.dwMinorVersion = 51 Then
| OS = "Windows NT 3.51"
| ElseIf ver.dwMajorVersion = 4 Then
| OS = "Windows NT 4.0"
| ElseIf ver.dwMajorVersion = 5 And ver.dwMinorVersion = 0 Then
| OS = "Windows 2000"
| ElseIf ver.dwMajorVersion = 5 And ver.dwMinorVersion = 1 Then
| OS = "Windows XP"
| ElseIf ver.dwMajorVersion = 5 And ver.dwMinorVersion = 2 Then
| OS = "Windows 2003 Serveur"
| End If
|
| 'Quelle version exacte NT/2000/XP/2003 s'agit-il ?
| Select Case ver.wProductType
| Case VER_NT_WORKSTATION
| If ver.dwMajorVersion < 5 Then
| OSType = "Station de travail"
| Else
| If ver.wSuiteMask And VER_SUITE_PERSONAL Then
| OSType = "Édition familiale"
| Else
| OSType = "Professionnel"
| End If
| End If
| Case VER_NT_DOMAIN_CONTROLLER
| OSType = "Serveur (Contrôleur de domaine)"
| Case VER_NT_SERVER
| If ver.wSuiteMask And VER_SUITE_DATACENTER Then
| OSType = "Serveur (Centre de données)"
| ElseIf ver.wSuiteMask And VER_SUITE_ENTERPRISE Then
| If ver.dwMajorVersion = 5 And ver.dwMinorVersion = 0 Then
| OSType = "Serveur avancé"
| Else
| OSType = "Edition Entreprise"
| End If
| ElseIf ver.wSuiteMask And VER_SUITE_BLADE Then
| OSType = "Édition Web"
| Else
| OSType = "Serveur"
| End If
| End Select
|
| NumeroVersion = "[" & ver.dwMajorVersion & "." _
| & ver.dwMinorVersion & "." _
| & ver.dwBuildNumber & "]"
| End Select
|
| Msg = "Système : " & OS & " " & OSType & vbLf
| Msg = Msg & "Numéro version : " & NumeroVersion & vbLf
|
| If ver.wServicePackMajor >= 1 Then
| Msg = Msg & "Service Pack : " & ver.wServicePackMajor & "." &
| ver.wServicePackMinor & vbLf
| Else
| Msg = Msg & "Service Pack : " & "Aucun Service Pack installé" & vbLf
| End If
|
| MsgBox Msg
|
| End Sub 'fs
| '=============================== |
Avatar
Jacky
Bonjour Frédéric

Pour ma part:

Système : Windows NT 4.0 Station de travail
Numéro version : [4.0.1381]
Service Pack : 6.0

Bon courage.
JJ

"Frédéric Sigonneau" a écrit dans le message
news:
Bonsoir,

J'ai essayé d'écrire une procédure qui renvoie, sans oublier aucune des
"déclinaisons" possibles, la version exacte de Windows en cours
d'exécution.

J'en ai recensé une 20aine (j'espère ne pas en avoir oublié) et je n'ai
bien sûr

pas toutes ces versions à ma disposition pour vérifier que mon code
fonctionne

pour chacune d'elles ! Je l'ai testé avec Windows 98 SE, Windows Me et
Windows

XP Edition familiale mais je suis loin du compte...
Si ceux d'entre vous qui ont accès à d'autres versions pouvaient :
-recopier le code joint dans un module standard d'un classeur Excel
-exécuter la procédure GetWindowsVersion
-poster le résultat (échec/réussite, erreur ?),
par avance, je les en remercie.

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 !

'=============================== > 'infos sur l'OS utilisé (version, type, etc.)

Public Declare Function GetWinVersion Lib "kernel32" Alias "GetVersionExA"
_

(lpVersionInformation As OSVERSIONINFO) As Long
Public Declare Function GetWinVersionEx Lib "kernel32" Alias
"GetVersionExA" _

(lpVersionInformation As OSVERSIONINFOEX) As Long

'Déclaration des constantes
Const VER_SUITE_SMALLBUSINESS = &H1
Const VER_SUITE_ENTERPRISE = &H2
Const VER_SUITE_BACKOFFICE = &H4
Const VER_SUITE_BLADE = &H400
Const VER_SUITE_COMMUNICATIONS = &H8
Const VER_SUITE_TERMINAL = &H10
Const VER_SUITE_SMALLBUSINESS_RESTRICTED = &H20
Const VER_SUITE_EMBEDDEDNT = &H40
Const VER_SUITE_DATACENTER = &H80
Const VER_SUITE_SINGLEUSERTS = &H100
Const VER_SUITE_PERSONAL = &H200

Const VER_NT_WORKSTATION = &H1
Const VER_NT_DOMAIN_CONTROLLER = &H2
Const VER_NT_SERVER = &H3

Const VER_PLATFORM_WIN32_WINDOWS As Long = 1&
Const VER_PLATFORM_WIN32_NT As Long = 2&

'Structure pour les versions WinDOS
Public Type OSVERSIONINFO
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long
szCSDVersion As String * 128 'sous type de certaines versions
End Type

'Structure pour les versions WinNT
Public Type OSVERSIONINFOEX
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long
szCSDVersion As String * 128 'sous type ou info sur service pack
installé

wServicePackMajor As Integer
wServicePackMinor As Integer
wSuiteMask As Integer
wProductType As Byte
wRest As Byte
End Type


Public Sub GetWindowsVersion()
Dim ver As OSVERSIONINFOEX
Dim ver2 As OSVERSIONINFO
Dim strVer As String
Dim OS As String
Dim OSType As String
Dim NumeroVersion As String
Dim Detail As String
Dim Msg$

ver.dwOSVersionInfoSize = Len(ver)
GetWinVersionEx ver

ver2.dwOSVersionInfoSize = Len(ver2)
GetWinVersion ver2
Detail = Mid(ver2.szCSDVersion, 2, 1)

Select Case ver.dwPlatformId

Case VER_PLATFORM_WIN32_WINDOWS
If ver2.dwMajorVersion = 4 And ver2.dwMinorVersion = 0 Then
OS = "Windows 95"
If Detail = "A" Then
OS = OS & " OSR1"
ElseIf Detail = "B" Then
OS = OS & " OSR2"
End If
ElseIf ver2.dwMajorVersion = 4 And ver2.dwMinorVersion = 3 Then
OS = "Windows 95 OSR2"
If Detail = "B" Then
OS = OS & ".1"
ElseIf Detail = "C" Then
OS = OS & ".5"
End If
ElseIf ver2.dwMajorVersion = 4 And ver2.dwMinorVersion = 10 Then
OS = "Windows 98"
If Detail = "A" Then OS = OS & " SE (Seconde Édition)"
ElseIf ver2.dwMajorVersion = 4 And ver2.dwMinorVersion = 90 Then
OS = "Windows ME (Millenium Édition)"
End If
NumeroVersion = "[" & ver2.dwMajorVersion & "." _
& ver2.dwMinorVersion & _
IIf(Asc(Detail) = 0, "", "." & Detail) & "]"
Case VER_PLATFORM_WIN32_NT
If ver.dwMajorVersion = 3 And ver.dwMinorVersion = 0 Then
OS = "Windows NT 3.0"
ElseIf ver.dwMajorVersion = 3 And ver.dwMinorVersion = 1 Then
OS = "Windows NT 3.1"
ElseIf ver.dwMajorVersion = 3 And ver.dwMinorVersion = 51 Then
OS = "Windows NT 3.51"
ElseIf ver.dwMajorVersion = 4 Then
OS = "Windows NT 4.0"
ElseIf ver.dwMajorVersion = 5 And ver.dwMinorVersion = 0 Then
OS = "Windows 2000"
ElseIf ver.dwMajorVersion = 5 And ver.dwMinorVersion = 1 Then
OS = "Windows XP"
ElseIf ver.dwMajorVersion = 5 And ver.dwMinorVersion = 2 Then
OS = "Windows 2003 Serveur"
End If

'Quelle version exacte NT/2000/XP/2003 s'agit-il ?
Select Case ver.wProductType
Case VER_NT_WORKSTATION
If ver.dwMajorVersion < 5 Then
OSType = "Station de travail"
Else
If ver.wSuiteMask And VER_SUITE_PERSONAL Then
OSType = "Édition familiale"
Else
OSType = "Professionnel"
End If
End If
Case VER_NT_DOMAIN_CONTROLLER
OSType = "Serveur (Contrôleur de domaine)"
Case VER_NT_SERVER
If ver.wSuiteMask And VER_SUITE_DATACENTER Then
OSType = "Serveur (Centre de données)"
ElseIf ver.wSuiteMask And VER_SUITE_ENTERPRISE Then
If ver.dwMajorVersion = 5 And ver.dwMinorVersion = 0 Then
OSType = "Serveur avancé"
Else
OSType = "Edition Entreprise"
End If
ElseIf ver.wSuiteMask And VER_SUITE_BLADE Then
OSType = "Édition Web"
Else
OSType = "Serveur"
End If
End Select

NumeroVersion = "[" & ver.dwMajorVersion & "." _
& ver.dwMinorVersion & "." _
& ver.dwBuildNumber & "]"
End Select

Msg = "Système : " & OS & " " & OSType & vbLf
Msg = Msg & "Numéro version : " & NumeroVersion & vbLf

If ver.wServicePackMajor >= 1 Then
Msg = Msg & "Service Pack : " & ver.wServicePackMajor & "." &
ver.wServicePackMinor & vbLf
Else
Msg = Msg & "Service Pack : " & "Aucun Service Pack installé" & vbLf
End If

MsgBox Msg

End Sub 'fs
'=============================== >


Avatar
Frédéric Sigonneau
Bonjour Clément,

Apparemment, ça ne fonctionne pas avec Windows 98 chez toi (alors que j'avais
fait un essai concluant ici avec Windows 98 SE). Puis-je t'envoyer en bal perso
une version légèrement modifiée, pour essayer de trouver où est le schmilblick ?

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,

Avec Windows 98 SP1 et Excel Xp:

Pas de message d'horreur.

Système : Rien
Numéro version : Rien
Service Pack : Aucun Service Pack d'installé

"Frédéric Sigonneau" a écrit dans le
message de news:
Bonsoir,

J'ai essayé d'écrire une procédure qui renvoie, sans oublier aucune
des

"déclinaisons" possibles, la version exacte de Windows en cours
d'exécution.

J'en ai recensé une 20aine (j'espère ne pas en avoir oublié) et je
n'ai bien sûr

pas toutes ces versions à ma disposition pour vérifier que mon code
fonctionne

pour chacune d'elles ! Je l'ai testé avec Windows 98 SE, Windows Me
et Windows

XP Edition familiale mais je suis loin du compte...
Si ceux d'entre vous qui ont accès à d'autres versions pouvaient :
-recopier le code joint dans un module standard d'un classeur Excel
-exécuter la procédure GetWindowsVersion
-poster le résultat (échec/réussite, erreur ?),
par avance, je les en remercie.

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 !

'=============================== > > 'infos sur l'OS utilisé (version, type, etc.)

Public Declare Function GetWinVersion Lib "kernel32" Alias
"GetVersionExA" _

(lpVersionInformation As OSVERSIONINFO) As Long
Public Declare Function GetWinVersionEx Lib "kernel32" Alias
"GetVersionExA" _

(lpVersionInformation As OSVERSIONINFOEX) As Long

'Déclaration des constantes
Const VER_SUITE_SMALLBUSINESS = &H1
Const VER_SUITE_ENTERPRISE = &H2
Const VER_SUITE_BACKOFFICE = &H4
Const VER_SUITE_BLADE = &H400
Const VER_SUITE_COMMUNICATIONS = &H8
Const VER_SUITE_TERMINAL = &H10
Const VER_SUITE_SMALLBUSINESS_RESTRICTED = &H20
Const VER_SUITE_EMBEDDEDNT = &H40
Const VER_SUITE_DATACENTER = &H80
Const VER_SUITE_SINGLEUSERTS = &H100
Const VER_SUITE_PERSONAL = &H200

Const VER_NT_WORKSTATION = &H1
Const VER_NT_DOMAIN_CONTROLLER = &H2
Const VER_NT_SERVER = &H3

Const VER_PLATFORM_WIN32_WINDOWS As Long = 1&
Const VER_PLATFORM_WIN32_NT As Long = 2&

'Structure pour les versions WinDOS
Public Type OSVERSIONINFO
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long
szCSDVersion As String * 128 'sous type de certaines versions
End Type

'Structure pour les versions WinNT
Public Type OSVERSIONINFOEX
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long
szCSDVersion As String * 128 'sous type ou info sur service pack
installé

wServicePackMajor As Integer
wServicePackMinor As Integer
wSuiteMask As Integer
wProductType As Byte
wRest As Byte
End Type


Public Sub GetWindowsVersion()
Dim ver As OSVERSIONINFOEX
Dim ver2 As OSVERSIONINFO
Dim strVer As String
Dim OS As String
Dim OSType As String
Dim NumeroVersion As String
Dim Detail As String
Dim Msg$

ver.dwOSVersionInfoSize = Len(ver)
GetWinVersionEx ver

ver2.dwOSVersionInfoSize = Len(ver2)
GetWinVersion ver2
Detail = Mid(ver2.szCSDVersion, 2, 1)

Select Case ver.dwPlatformId

Case VER_PLATFORM_WIN32_WINDOWS
If ver2.dwMajorVersion = 4 And ver2.dwMinorVersion = 0 Then
OS = "Windows 95"
If Detail = "A" Then
OS = OS & " OSR1"
ElseIf Detail = "B" Then
OS = OS & " OSR2"
End If
ElseIf ver2.dwMajorVersion = 4 And ver2.dwMinorVersion = 3
Then

OS = "Windows 95 OSR2"
If Detail = "B" Then
OS = OS & ".1"
ElseIf Detail = "C" Then
OS = OS & ".5"
End If
ElseIf ver2.dwMajorVersion = 4 And ver2.dwMinorVersion = 10
Then

OS = "Windows 98"
If Detail = "A" Then OS = OS & " SE (Seconde Édition)"
ElseIf ver2.dwMajorVersion = 4 And ver2.dwMinorVersion = 90
Then

OS = "Windows ME (Millenium Édition)"
End If
NumeroVersion = "[" & ver2.dwMajorVersion & "." _
& ver2.dwMinorVersion & _
IIf(Asc(Detail) = 0, "", "." & Detail) & "]"
Case VER_PLATFORM_WIN32_NT
If ver.dwMajorVersion = 3 And ver.dwMinorVersion = 0 Then
OS = "Windows NT 3.0"
ElseIf ver.dwMajorVersion = 3 And ver.dwMinorVersion = 1 Then
OS = "Windows NT 3.1"
ElseIf ver.dwMajorVersion = 3 And ver.dwMinorVersion = 51 Then
OS = "Windows NT 3.51"
ElseIf ver.dwMajorVersion = 4 Then
OS = "Windows NT 4.0"
ElseIf ver.dwMajorVersion = 5 And ver.dwMinorVersion = 0 Then
OS = "Windows 2000"
ElseIf ver.dwMajorVersion = 5 And ver.dwMinorVersion = 1 Then
OS = "Windows XP"
ElseIf ver.dwMajorVersion = 5 And ver.dwMinorVersion = 2 Then
OS = "Windows 2003 Serveur"
End If

'Quelle version exacte NT/2000/XP/2003 s'agit-il ?
Select Case ver.wProductType
Case VER_NT_WORKSTATION
If ver.dwMajorVersion < 5 Then
OSType = "Station de travail"
Else
If ver.wSuiteMask And VER_SUITE_PERSONAL Then
OSType = "Édition familiale"
Else
OSType = "Professionnel"
End If
End If
Case VER_NT_DOMAIN_CONTROLLER
OSType = "Serveur (Contrôleur de domaine)"
Case VER_NT_SERVER
If ver.wSuiteMask And VER_SUITE_DATACENTER Then
OSType = "Serveur (Centre de données)"
ElseIf ver.wSuiteMask And VER_SUITE_ENTERPRISE Then
If ver.dwMajorVersion = 5 And ver.dwMinorVersion = 0
Then

OSType = "Serveur avancé"
Else
OSType = "Edition Entreprise"
End If
ElseIf ver.wSuiteMask And VER_SUITE_BLADE Then
OSType = "Édition Web"
Else
OSType = "Serveur"
End If
End Select

NumeroVersion = "[" & ver.dwMajorVersion & "." _
& ver.dwMinorVersion & "." _
& ver.dwBuildNumber & "]"
End Select

Msg = "Système : " & OS & " " & OSType & vbLf
Msg = Msg & "Numéro version : " & NumeroVersion & vbLf

If ver.wServicePackMajor >= 1 Then
Msg = Msg & "Service Pack : " & ver.wServicePackMajor & "." &
ver.wServicePackMinor & vbLf
Else
Msg = Msg & "Service Pack : " & "Aucun Service Pack installé" &
vbLf

End If

MsgBox Msg

End Sub 'fs
'=============================== > >




1 2 3