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

[VBA] EXCEL - connaitre la version de L'OS

3 réponses
Avatar
Jordane
Bonjour à tous et à toutes.

Il y aurait il quelqu'un parmi vous qui pourrait m'indiquer un bout de code
me permettant de savoir quelle version de l'OS est utilisée sur le poste de
l'utilisateur ?

En gros, je veux pouvoir détecter quelle version de windows est installée
sur le poste de la personne qui ouvre mon classeur.


J'ai cherché sur le net et sur le forum mais n'ai rien trouvé... (soit le
sujet n'existe pas.. soit il faut que je revoi mes mots clés... soit...il
faut que je me rachette des yeux...) ;-)

D'avance merci pour vos réponses.


--
Cordialement,

Jordane

3 réponses

Avatar
Gilbert
Bonjour,

Regarde sur cette page ça devrait répondre à ton besoin
http://vbsystemlibrary.free.fr/code.php?ID7

--
Cordialement,

Gilbert


"Jordane" a écrit dans le message de
news:
Bonjour à tous et à toutes.

Il y aurait il quelqu'un parmi vous qui pourrait m'indiquer un bout de


code
me permettant de savoir quelle version de l'OS est utilisée sur le poste


de
l'utilisateur ?

En gros, je veux pouvoir détecter quelle version de windows est installée
sur le poste de la personne qui ouvre mon classeur.


J'ai cherché sur le net et sur le forum mais n'ai rien trouvé... (soit le
sujet n'existe pas.. soit il faut que je revoi mes mots clés... soit...il
faut que je me rachette des yeux...) ;-)

D'avance merci pour vos réponses.


--
Cordialement,

Jordane


Avatar
isabelle
bonjour Jordane,

x = Application.OperatingSystem

isabelle

Jordane a écrit :
Bonjour à tous et à toutes.

Il y aurait il quelqu'un parmi vous qui pourrait m'indiquer un bout de code
me permettant de savoir quelle version de l'OS est utilisée sur le poste de
l'utilisateur ?

En gros, je veux pouvoir détecter quelle version de windows est installée
sur le poste de la personne qui ouvre mon classeur.


J'ai cherché sur le net et sur le forum mais n'ai rien trouvé... (soit le
sujet n'existe pas.. soit il faut que je revoi mes mots clés... soit...il
faut que je me rachette des yeux...) ;-)

D'avance merci pour vos réponses.





Avatar
Péhemme
Bonjour à Tous,

N'est-ce pas Frédéric Sigonneau qui avait, il y a 3 siècles, publié ces
lignes ?
À mettre dans un module standard.
Michel


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

Public Const VER_PLATFORM_WIN32s = 0
Public Const VER_PLATFORM_WIN32_WINDOWS = 1
Public Const VER_PLATFORM_WIN32_NT = 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 oviWinNT As OSVERSIONINFOEX
Dim oviWin32 As OSVERSIONINFO
Dim strVer As String
Dim OS As String
Dim OSType As String
Dim NumeroVersion As String
Dim Detail As String
Dim Msg$, SP$

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

Select Case oviWin32.dwPlatformId

Case VER_PLATFORM_WIN32_WINDOWS

If oviWin32.dwMajorVersion = 4 And oviWin32.dwMinorVersion = 0 Then
OS = "Windows 95"
If Detail = "A" Then
OS = OS & " OSR1"
ElseIf Detail = "B" Then
OS = OS & " OSR2"
End If
ElseIf oviWin32.dwMajorVersion = 4 And oviWin32.dwMinorVersion = 3
Then
OS = "Windows 95 OSR2"
If Detail = "B" Then
OS = OS & ".1"
ElseIf Detail = "C" Then
OS = OS & ".5"
End If
ElseIf oviWin32.dwMajorVersion = 4 And oviWin32.dwMinorVersion = 10
Then
OS = "Windows 98"
If Detail = "A" Then OS = OS & " SE (Seconde Édition)"
ElseIf oviWin32.dwMajorVersion = 4 And oviWin32.dwMinorVersion = 90
Then
OS = "Windows ME (Millenium Édition)"
End If
NumeroVersion = "[" & oviWin32.dwMajorVersion & "." _
& oviWin32.dwMinorVersion & _
IIf(Asc(Detail) = 0, "", "." & Detail) & "]"

Case VER_PLATFORM_WIN32_NT

oviWinNT.dwOSVersionInfoSize = Len(oviWinNT)
GetWinVersionEx oviWinNT

If oviWinNT.dwMajorVersion = 3 And oviWinNT.dwMinorVersion = 0 Then
OS = "Windows NT 3.0"
ElseIf oviWinNT.dwMajorVersion = 3 And oviWinNT.dwMinorVersion = 1
Then
OS = "Windows NT 3.1"
ElseIf oviWinNT.dwMajorVersion = 3 And oviWinNT.dwMinorVersion = 51
Then
OS = "Windows NT 3.51"
ElseIf oviWinNT.dwMajorVersion = 4 Then
OS = "Windows NT 4.0"
ElseIf oviWinNT.dwMajorVersion = 5 And oviWinNT.dwMinorVersion = 0
Then
OS = "Windows 2000"
ElseIf oviWinNT.dwMajorVersion = 5 And oviWinNT.dwMinorVersion = 1
Then
OS = "Windows XP"
ElseIf oviWinNT.dwMajorVersion = 5 And oviWinNT.dwMinorVersion = 2
Then
OS = "Windows 2003 Serveur"
End If

'De quel type est le produit NT/2000/XP/2003 ?
Select Case oviWinNT.wProductType
Case VER_NT_WORKSTATION
If oviWinNT.dwMajorVersion < 5 Then
OSType = "Station de travail"
Else
If oviWinNT.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 oviWinNT.wSuiteMask And VER_SUITE_DATACENTER Then
OSType = "Serveur (Centre de données)"
ElseIf oviWinNT.wSuiteMask And VER_SUITE_ENTERPRISE Then
If oviWinNT.dwMajorVersion = 5 And oviWinNT.dwMinorVersion = 0
Then
OSType = "Serveur avancé"
Else
OSType = "Edition Entreprise"
End If
ElseIf oviWinNT.wSuiteMask And VER_SUITE_BLADE Then
OSType = "Édition Web"
Else
OSType = "Serveur"
End If
End Select

NumeroVersion = "[" & oviWinNT.dwMajorVersion & "." _
& oviWinNT.dwMinorVersion & "." _
& oviWinNT.dwBuildNumber & "]"

If oviWinNT.wServicePackMajor >= 1 Then
SP = "Service Pack : " & oviWinNT.wServicePackMajor & "." & _
oviWinNT.wServicePackMinor
Else
SP = "Service Pack : " & "Aucun Service Pack installé"
End If

End Select

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

MsgBox Msg

End Sub 'fs


"isabelle" a écrit dans le message de
news:%
bonjour Jordane,

x = Application.OperatingSystem

isabelle

Jordane a écrit :
Bonjour à tous et à toutes.

Il y aurait il quelqu'un parmi vous qui pourrait m'indiquer un bout de
code me permettant de savoir quelle version de l'OS est utilisée sur le
poste de l'utilisateur ?

En gros, je veux pouvoir détecter quelle version de windows est installée
sur le poste de la personne qui ouvre mon classeur.


J'ai cherché sur le net et sur le forum mais n'ai rien trouvé... (soit le
sujet n'existe pas.. soit il faut que je revoi mes mots clés... soit...il
faut que je me rachette des yeux...) ;-)

D'avance merci pour vos réponses.