Bonjour,
Place tout ce qui suit dans un module standard.
Cette approche fut publi e sur MPFE par Fr d ric Sigonneau.
'-----------------------------------------------
Public Declare Function GetWinVersion Lib "kernel32" Alias "GetVersionExA " _
(lpVersionInformation As OSVERSIONINFO) As Long
Public Declare Function GetWinVersionEx Lib "kernel32" Alias "GetVersionE xA" _
(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 i nstall
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.dwMinorVers ion = 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.dwMinorVers ion = 10 Then
OS = "Windows 98"
If Detail = "A" Then OS = OS & " SE (Seconde dition)"
ElseIf oviWin32.dwMajorVersion = 4 And oviWin32.dwMinorVers ion = 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.dwMinorVers ion = 1 Then
OS = "Windows NT 3.1"
ElseIf oviWinNT.dwMajorVersion = 3 And oviWinNT.dwMinorVers ion = 51 Then
OS = "Windows NT 3.51"
ElseIf oviWinNT.dwMajorVersion = 4 Then
OS = "Windows NT 4.0"
ElseIf oviWinNT.dwMajorVersion = 5 And oviWinNT.dwMinorVers ion = 0 Then
OS = "Windows 2000"
ElseIf oviWinNT.dwMajorVersion = 5 And oviWinNT.dwMinorVers ion = 1 Then
OS = "Windows XP"
ElseIf oviWinNT.dwMajorVersion = 5 And oviWinNT.dwMinorVers ion = 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 The n
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 T hen
If oviWinNT.dwMajorVersion = 5 And oviWinNT.dwM inorVersion = 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.wSer vicePackMinor
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
'-----------------------------------------------
MichD
--------------------------------------------
"Boris" a crit dans le message de groupe de discussion :
Bonjour toutes et tous,
j'ai cr une application au travail sous Windows XP-SP3 et Excel
2000, qui tourne bien.
R cemment je viens de recevoir 5 ordi tous neufs implanter mais ils
sont sous Windows 7. J'ai install Excel 2000, normal, mais l j'ai
des probl mes avec mes macros.
Alors avant de tout modifier (voir tout refaire de a z), je pense
pouvoir m'en sortir moindre mal mais il faut un moment que
j'intercepte la version de l'OS en cours d'utilisation (XP ou 7).
Auriez-vous une routine qui permet d'avoir cela ???.
Merci par avance.
Cordialement.
Eliot
Bonjour,
Place tout ce qui suit dans un module standard.
Cette approche fut publi e sur MPFE par Fr d ric Sigonneau.
'-----------------------------------------------
Public Declare Function GetWinVersion Lib "kernel32" Alias "GetVersionExA " _
(lpVersionInformation As OSVERSIONINFO) As Long
Public Declare Function GetWinVersionEx Lib "kernel32" Alias "GetVersionE xA" _
(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 i nstall
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.dwMinorVers ion = 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.dwMinorVers ion = 10 Then
OS = "Windows 98"
If Detail = "A" Then OS = OS & " SE (Seconde dition)"
ElseIf oviWin32.dwMajorVersion = 4 And oviWin32.dwMinorVers ion = 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.dwMinorVers ion = 1 Then
OS = "Windows NT 3.1"
ElseIf oviWinNT.dwMajorVersion = 3 And oviWinNT.dwMinorVers ion = 51 Then
OS = "Windows NT 3.51"
ElseIf oviWinNT.dwMajorVersion = 4 Then
OS = "Windows NT 4.0"
ElseIf oviWinNT.dwMajorVersion = 5 And oviWinNT.dwMinorVers ion = 0 Then
OS = "Windows 2000"
ElseIf oviWinNT.dwMajorVersion = 5 And oviWinNT.dwMinorVers ion = 1 Then
OS = "Windows XP"
ElseIf oviWinNT.dwMajorVersion = 5 And oviWinNT.dwMinorVers ion = 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 The n
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 T hen
If oviWinNT.dwMajorVersion = 5 And oviWinNT.dwM inorVersion = 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.wSer vicePackMinor
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
'-----------------------------------------------
MichD
--------------------------------------------
"Boris" a crit dans le message de groupe de discussion :
232a305c-8308-427e-b406-54f3ba204...@x4g2000pre.googlegroups.com...
Bonjour toutes et tous,
j'ai cr une application au travail sous Windows XP-SP3 et Excel
2000, qui tourne bien.
R cemment je viens de recevoir 5 ordi tous neufs implanter mais ils
sont sous Windows 7. J'ai install Excel 2000, normal, mais l j'ai
des probl mes avec mes macros.
Alors avant de tout modifier (voir tout refaire de a z), je pense
pouvoir m'en sortir moindre mal mais il faut un moment que
j'intercepte la version de l'OS en cours d'utilisation (XP ou 7).
Auriez-vous une routine qui permet d'avoir cela ???.
Merci par avance.
Cordialement.
Eliot
Bonjour,
Place tout ce qui suit dans un module standard.
Cette approche fut publi e sur MPFE par Fr d ric Sigonneau.
'-----------------------------------------------
Public Declare Function GetWinVersion Lib "kernel32" Alias "GetVersionExA " _
(lpVersionInformation As OSVERSIONINFO) As Long
Public Declare Function GetWinVersionEx Lib "kernel32" Alias "GetVersionE xA" _
(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 i nstall
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.dwMinorVers ion = 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.dwMinorVers ion = 10 Then
OS = "Windows 98"
If Detail = "A" Then OS = OS & " SE (Seconde dition)"
ElseIf oviWin32.dwMajorVersion = 4 And oviWin32.dwMinorVers ion = 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.dwMinorVers ion = 1 Then
OS = "Windows NT 3.1"
ElseIf oviWinNT.dwMajorVersion = 3 And oviWinNT.dwMinorVers ion = 51 Then
OS = "Windows NT 3.51"
ElseIf oviWinNT.dwMajorVersion = 4 Then
OS = "Windows NT 4.0"
ElseIf oviWinNT.dwMajorVersion = 5 And oviWinNT.dwMinorVers ion = 0 Then
OS = "Windows 2000"
ElseIf oviWinNT.dwMajorVersion = 5 And oviWinNT.dwMinorVers ion = 1 Then
OS = "Windows XP"
ElseIf oviWinNT.dwMajorVersion = 5 And oviWinNT.dwMinorVers ion = 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 The n
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 T hen
If oviWinNT.dwMajorVersion = 5 And oviWinNT.dwM inorVersion = 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.wSer vicePackMinor
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
'-----------------------------------------------
MichD
--------------------------------------------
"Boris" a crit dans le message de groupe de discussion :
Bonjour toutes et tous,
j'ai cr une application au travail sous Windows XP-SP3 et Excel
2000, qui tourne bien.
R cemment je viens de recevoir 5 ordi tous neufs implanter mais ils
sont sous Windows 7. J'ai install Excel 2000, normal, mais l j'ai
des probl mes avec mes macros.
Alors avant de tout modifier (voir tout refaire de a z), je pense
pouvoir m'en sortir moindre mal mais il faut un moment que
j'intercepte la version de l'OS en cours d'utilisation (XP ou 7).
Auriez-vous une routine qui permet d'avoir cela ???.
Merci par avance.
Cordialement.
Eliot
Bonjour,
Place tout ce qui suit dans un module standard.
Cette approche fut publi e sur MPFE par Fr d ric Sigonneau.
'-----------------------------------------------
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
'-----------------------------------------------
MichD
--------------------------------------------
"Boris" a crit dans le message de groupe de discussion :
Bonjour toutes et tous,
j'ai cr une application au travail sous Windows XP-SP3 et Excel
2000, qui tourne bien.
R cemment je viens de recevoir 5 ordi tous neufs implanter mais ils
sont sous Windows 7. J'ai install Excel 2000, normal, mais l j'ai
des probl mes avec mes macros.
Alors avant de tout modifier (voir tout refaire de a z), je pense
pouvoir m'en sortir moindre mal mais il faut un moment que
j'intercepte la version de l'OS en cours d'utilisation (XP ou 7).
Auriez-vous une routine qui permet d'avoir cela ???.
Merci par avance.
Cordialement.
Eliot
Bonjour,
Place tout ce qui suit dans un module standard.
Cette approche fut publi e sur MPFE par Fr d ric Sigonneau.
'-----------------------------------------------
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
'-----------------------------------------------
MichD
--------------------------------------------
"Boris" a crit dans le message de groupe de discussion :
232a305c-8308-427e-b406-54f3ba204...@x4g2000pre.googlegroups.com...
Bonjour toutes et tous,
j'ai cr une application au travail sous Windows XP-SP3 et Excel
2000, qui tourne bien.
R cemment je viens de recevoir 5 ordi tous neufs implanter mais ils
sont sous Windows 7. J'ai install Excel 2000, normal, mais l j'ai
des probl mes avec mes macros.
Alors avant de tout modifier (voir tout refaire de a z), je pense
pouvoir m'en sortir moindre mal mais il faut un moment que
j'intercepte la version de l'OS en cours d'utilisation (XP ou 7).
Auriez-vous une routine qui permet d'avoir cela ???.
Merci par avance.
Cordialement.
Eliot
Bonjour,
Place tout ce qui suit dans un module standard.
Cette approche fut publi e sur MPFE par Fr d ric Sigonneau.
'-----------------------------------------------
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
'-----------------------------------------------
MichD
--------------------------------------------
"Boris" a crit dans le message de groupe de discussion :
Bonjour toutes et tous,
j'ai cr une application au travail sous Windows XP-SP3 et Excel
2000, qui tourne bien.
R cemment je viens de recevoir 5 ordi tous neufs implanter mais ils
sont sous Windows 7. J'ai install Excel 2000, normal, mais l j'ai
des probl mes avec mes macros.
Alors avant de tout modifier (voir tout refaire de a z), je pense
pouvoir m'en sortir moindre mal mais il faut un moment que
j'intercepte la version de l'OS en cours d'utilisation (XP ou 7).
Auriez-vous une routine qui permet d'avoir cela ???.
Merci par avance.
Cordialement.
Eliot
Si la seule chose que tu désiresestde discriminer entreWindowsXp
Vista Et Windows7, ceci pourrait être suffisant :
A = Val(Left(Environ("PROCESSOR_REVISION"), 1))
SurWindows7 : A = 6
Sur Vista : A = 5
Sur Window Xp : A = 4
Mais je suis sûr que tu préfères les API
Pourquoi utilise-t-on le 7 dansWindows7 alors qu'il s'agit du noyau 6 ?
un début d'explication ici :http://fr.wikipedia.org/wiki/Windows_7
MichD
--------------------------------------------
"Boris" a écrit dans le message de groupe de discussion :
Merci de cette réponse rapide __
Oulàlà, que de code !!
Je ne sais pas trop quoi "effacer" car j'aimerais récupérer (par
exemple) la valeur 1pourune machine sous XP et 2pourune sous Win7.
Je sais pas si c'estpossible ??
Je vais creuser mais en tous cas, cela m'avance bien quand même,
encore merci.
Cordialement
On 7 nov, 01:35, "michdenis" wrote:
> Bonjour,
> Place tout ce qui suit dans un module standard.
> Cette approche fut publi e sur MPFE par Fr d ric Sigonneau.
> '-----------------------------------------------
> Public Declare Function GetWinVersion Lib "kernel32" Alias "GetVersionE xA" _
> (lpVersionInformation As OSVERSIONINFO) As Long
> Public Declare Function GetWinVersionEx Lib "kernel32" Alias "GetVersio nExA" _
> (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
> 'Structurepourles 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
> 'Structurepourles 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.dwMinorVersio n = 0 Then
> OS = "Windows95"
> If Detail = "A" Then
> OS = OS & " OSR1"
> ElseIf Detail = "B" Then
> OS = OS & " OSR2"
> End If
> ElseIf oviWin32.dwMajorVersion = 4 And oviWin32.dwMinorVe rsion = 3 Then
> OS = "Windows95 OSR2"
> If Detail = "B" Then
> OS = OS & ".1"
> ElseIf Detail = "C" Then
> OS = OS & ".5"
> End If
> ElseIf oviWin32.dwMajorVersion = 4 And oviWin32.dwMinorVe rsion = 10 Then
> OS = "Windows98"
> If Detail = "A" Then OS = OS & " SE (Seconde dition )"
> ElseIf oviWin32.dwMajorVersion = 4 And oviWin32.dwMinorVe rsion = 90 Then
> OS = "WindowsME (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.dwMinorVersio n = 0 Then
> OS = "WindowsNT 3.0"
> ElseIf oviWinNT.dwMajorVersion = 3 And oviWinNT.dwMinorVe rsion = 1 Then
> OS = "WindowsNT 3.1"
> ElseIf oviWinNT.dwMajorVersion = 3 And oviWinNT.dwMinorVe rsion = 51 Then
> OS = "WindowsNT 3.51"
> ElseIf oviWinNT.dwMajorVersion = 4 Then
> OS = "WindowsNT 4.0"
> ElseIf oviWinNT.dwMajorVersion = 5 And oviWinNT.dwMinorVe rsion = 0 Then
> OS = "Windows2000"
> ElseIf oviWinNT.dwMajorVersion = 5 And oviWinNT.dwMinorVe rsion = 1 Then
> OS = "WindowsXP"
> ElseIf oviWinNT.dwMajorVersion = 5 And oviWinNT.dwMinorVe rsion = 2 Then
> OS = "Windows2003 Serveur"
> End If
> 'De quel typeestle 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 T hen
> 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 The n
> OSType = "Serveur (Centre de donn es)"
> ElseIf oviWinNT.wSuiteMask And VER_SUITE_ENTERPRISE Then
> If oviWinNT.dwMajorVersion = 5 And oviWinNT.d wMinorVersion = 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.wS ervicePackMinor
> Else
> SP = "Service Pack : " & "Aucun Service Pack install "
> End If
> End Select
> Msg = "Syst me : " & OS & " " & OSType & vbLf
> Msg = Msg & "Num roversion: " & NumeroVersion & vbLf
> Msg = Msg & SP
> MsgBox Msg
> End Sub
> '-----------------------------------------------
> MichD
> --------------------------------------------
> "Boris" a crit dans le message de groupe de discussion :
>
> Bonjour toutes et tous,
> j'ai cr une application au travail sousWindowsXP-SP3 et Excel
> 2000, qui tourne bien.
> R cemment je viens de recevoir 5 ordi tous neufs implanter mais ils
> sont sousWindows7. J'ai install Excel 2000, normal, mais l j'ai
> des probl mes avec mes macros.
> Alors avant de tout modifier (voir tout refaire de a z), je pense
> pouvoir m'en sortir moindre mal mais il faut un moment que
> j'intercepte laversionde l'OS en cours d'utilisation (XP ou 7).
> Auriez-vous une routine qui permet d'avoir cela ???.
> Merci par avance.
> Cordialement.
> Eliot
Si la seule chose que tu désiresestde discriminer entreWindowsXp
Vista Et Windows7, ceci pourrait être suffisant :
A = Val(Left(Environ("PROCESSOR_REVISION"), 1))
SurWindows7 : A = 6
Sur Vista : A = 5
Sur Window Xp : A = 4
Mais je suis sûr que tu préfères les API
Pourquoi utilise-t-on le 7 dansWindows7 alors qu'il s'agit du noyau 6 ?
un début d'explication ici :http://fr.wikipedia.org/wiki/Windows_7
MichD
--------------------------------------------
"Boris" a écrit dans le message de groupe de discussion :
8c6051b7-2d1b-4280-b40d-74e2633f3...@u25g2000pra.googlegroups.com...
Merci de cette réponse rapide __
Oulàlà, que de code !!
Je ne sais pas trop quoi "effacer" car j'aimerais récupérer (par
exemple) la valeur 1pourune machine sous XP et 2pourune sous Win7.
Je sais pas si c'estpossible ??
Je vais creuser mais en tous cas, cela m'avance bien quand même,
encore merci.
Cordialement
On 7 nov, 01:35, "michdenis" <michde...@hotmail.com> wrote:
> Bonjour,
> Place tout ce qui suit dans un module standard.
> Cette approche fut publi e sur MPFE par Fr d ric Sigonneau.
> '-----------------------------------------------
> Public Declare Function GetWinVersion Lib "kernel32" Alias "GetVersionE xA" _
> (lpVersionInformation As OSVERSIONINFO) As Long
> Public Declare Function GetWinVersionEx Lib "kernel32" Alias "GetVersio nExA" _
> (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
> 'Structurepourles 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
> 'Structurepourles 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.dwMinorVersio n = 0 Then
> OS = "Windows95"
> If Detail = "A" Then
> OS = OS & " OSR1"
> ElseIf Detail = "B" Then
> OS = OS & " OSR2"
> End If
> ElseIf oviWin32.dwMajorVersion = 4 And oviWin32.dwMinorVe rsion = 3 Then
> OS = "Windows95 OSR2"
> If Detail = "B" Then
> OS = OS & ".1"
> ElseIf Detail = "C" Then
> OS = OS & ".5"
> End If
> ElseIf oviWin32.dwMajorVersion = 4 And oviWin32.dwMinorVe rsion = 10 Then
> OS = "Windows98"
> If Detail = "A" Then OS = OS & " SE (Seconde dition )"
> ElseIf oviWin32.dwMajorVersion = 4 And oviWin32.dwMinorVe rsion = 90 Then
> OS = "WindowsME (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.dwMinorVersio n = 0 Then
> OS = "WindowsNT 3.0"
> ElseIf oviWinNT.dwMajorVersion = 3 And oviWinNT.dwMinorVe rsion = 1 Then
> OS = "WindowsNT 3.1"
> ElseIf oviWinNT.dwMajorVersion = 3 And oviWinNT.dwMinorVe rsion = 51 Then
> OS = "WindowsNT 3.51"
> ElseIf oviWinNT.dwMajorVersion = 4 Then
> OS = "WindowsNT 4.0"
> ElseIf oviWinNT.dwMajorVersion = 5 And oviWinNT.dwMinorVe rsion = 0 Then
> OS = "Windows2000"
> ElseIf oviWinNT.dwMajorVersion = 5 And oviWinNT.dwMinorVe rsion = 1 Then
> OS = "WindowsXP"
> ElseIf oviWinNT.dwMajorVersion = 5 And oviWinNT.dwMinorVe rsion = 2 Then
> OS = "Windows2003 Serveur"
> End If
> 'De quel typeestle 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 T hen
> 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 The n
> OSType = "Serveur (Centre de donn es)"
> ElseIf oviWinNT.wSuiteMask And VER_SUITE_ENTERPRISE Then
> If oviWinNT.dwMajorVersion = 5 And oviWinNT.d wMinorVersion = 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.wS ervicePackMinor
> Else
> SP = "Service Pack : " & "Aucun Service Pack install "
> End If
> End Select
> Msg = "Syst me : " & OS & " " & OSType & vbLf
> Msg = Msg & "Num roversion: " & NumeroVersion & vbLf
> Msg = Msg & SP
> MsgBox Msg
> End Sub
> '-----------------------------------------------
> MichD
> --------------------------------------------
> "Boris" a crit dans le message de groupe de discussion :
> 232a305c-8308-427e-b406-54f3ba204...@x4g2000pre.googlegroups.com...
> Bonjour toutes et tous,
> j'ai cr une application au travail sousWindowsXP-SP3 et Excel
> 2000, qui tourne bien.
> R cemment je viens de recevoir 5 ordi tous neufs implanter mais ils
> sont sousWindows7. J'ai install Excel 2000, normal, mais l j'ai
> des probl mes avec mes macros.
> Alors avant de tout modifier (voir tout refaire de a z), je pense
> pouvoir m'en sortir moindre mal mais il faut un moment que
> j'intercepte laversionde l'OS en cours d'utilisation (XP ou 7).
> Auriez-vous une routine qui permet d'avoir cela ???.
> Merci par avance.
> Cordialement.
> Eliot
Si la seule chose que tu désiresestde discriminer entreWindowsXp
Vista Et Windows7, ceci pourrait être suffisant :
A = Val(Left(Environ("PROCESSOR_REVISION"), 1))
SurWindows7 : A = 6
Sur Vista : A = 5
Sur Window Xp : A = 4
Mais je suis sûr que tu préfères les API
Pourquoi utilise-t-on le 7 dansWindows7 alors qu'il s'agit du noyau 6 ?
un début d'explication ici :http://fr.wikipedia.org/wiki/Windows_7
MichD
--------------------------------------------
"Boris" a écrit dans le message de groupe de discussion :
Merci de cette réponse rapide __
Oulàlà, que de code !!
Je ne sais pas trop quoi "effacer" car j'aimerais récupérer (par
exemple) la valeur 1pourune machine sous XP et 2pourune sous Win7.
Je sais pas si c'estpossible ??
Je vais creuser mais en tous cas, cela m'avance bien quand même,
encore merci.
Cordialement
On 7 nov, 01:35, "michdenis" wrote:
> Bonjour,
> Place tout ce qui suit dans un module standard.
> Cette approche fut publi e sur MPFE par Fr d ric Sigonneau.
> '-----------------------------------------------
> Public Declare Function GetWinVersion Lib "kernel32" Alias "GetVersionE xA" _
> (lpVersionInformation As OSVERSIONINFO) As Long
> Public Declare Function GetWinVersionEx Lib "kernel32" Alias "GetVersio nExA" _
> (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
> 'Structurepourles 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
> 'Structurepourles 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.dwMinorVersio n = 0 Then
> OS = "Windows95"
> If Detail = "A" Then
> OS = OS & " OSR1"
> ElseIf Detail = "B" Then
> OS = OS & " OSR2"
> End If
> ElseIf oviWin32.dwMajorVersion = 4 And oviWin32.dwMinorVe rsion = 3 Then
> OS = "Windows95 OSR2"
> If Detail = "B" Then
> OS = OS & ".1"
> ElseIf Detail = "C" Then
> OS = OS & ".5"
> End If
> ElseIf oviWin32.dwMajorVersion = 4 And oviWin32.dwMinorVe rsion = 10 Then
> OS = "Windows98"
> If Detail = "A" Then OS = OS & " SE (Seconde dition )"
> ElseIf oviWin32.dwMajorVersion = 4 And oviWin32.dwMinorVe rsion = 90 Then
> OS = "WindowsME (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.dwMinorVersio n = 0 Then
> OS = "WindowsNT 3.0"
> ElseIf oviWinNT.dwMajorVersion = 3 And oviWinNT.dwMinorVe rsion = 1 Then
> OS = "WindowsNT 3.1"
> ElseIf oviWinNT.dwMajorVersion = 3 And oviWinNT.dwMinorVe rsion = 51 Then
> OS = "WindowsNT 3.51"
> ElseIf oviWinNT.dwMajorVersion = 4 Then
> OS = "WindowsNT 4.0"
> ElseIf oviWinNT.dwMajorVersion = 5 And oviWinNT.dwMinorVe rsion = 0 Then
> OS = "Windows2000"
> ElseIf oviWinNT.dwMajorVersion = 5 And oviWinNT.dwMinorVe rsion = 1 Then
> OS = "WindowsXP"
> ElseIf oviWinNT.dwMajorVersion = 5 And oviWinNT.dwMinorVe rsion = 2 Then
> OS = "Windows2003 Serveur"
> End If
> 'De quel typeestle 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 T hen
> 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 The n
> OSType = "Serveur (Centre de donn es)"
> ElseIf oviWinNT.wSuiteMask And VER_SUITE_ENTERPRISE Then
> If oviWinNT.dwMajorVersion = 5 And oviWinNT.d wMinorVersion = 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.wS ervicePackMinor
> Else
> SP = "Service Pack : " & "Aucun Service Pack install "
> End If
> End Select
> Msg = "Syst me : " & OS & " " & OSType & vbLf
> Msg = Msg & "Num roversion: " & NumeroVersion & vbLf
> Msg = Msg & SP
> MsgBox Msg
> End Sub
> '-----------------------------------------------
> MichD
> --------------------------------------------
> "Boris" a crit dans le message de groupe de discussion :
>
> Bonjour toutes et tous,
> j'ai cr une application au travail sousWindowsXP-SP3 et Excel
> 2000, qui tourne bien.
> R cemment je viens de recevoir 5 ordi tous neufs implanter mais ils
> sont sousWindows7. J'ai install Excel 2000, normal, mais l j'ai
> des probl mes avec mes macros.
> Alors avant de tout modifier (voir tout refaire de a z), je pense
> pouvoir m'en sortir moindre mal mais il faut un moment que
> j'intercepte laversionde l'OS en cours d'utilisation (XP ou 7).
> Auriez-vous une routine qui permet d'avoir cela ???.
> Merci par avance.
> Cordialement.
> Eliot