OVH Cloud OVH Cloud

Curiosité excellienne

3 réponses
Avatar
Clément Marcotte
Bonjour,

Quand je clique sur le menu "?" dans Excel, puis dans À propos... je vois
que mon numéro d'Excel est: 10.6789.6735.

Dans VBA, je peux, avec Application.version, retrouver le 10 et, avec
Application.build, retrouver le 6789.

Mais je ne trouve rien pour le 6735. Si jamais quelqu'un tombe là-dessus, je
serais curieux de le savoir, mais ce n'est absolument pas urgent et cela ne
m'empêchera pas de dormir, si je ne le sais pas.

Merci d'avance,

3 réponses

Avatar
Clément Marcotte
P.S. Non, ce n'est pas Application.calculationversion, ni
application.productcode ;-)


"Clément Marcotte" a écrit dans le message
de news:
Bonjour,

Quand je clique sur le menu "?" dans Excel, puis dans À propos... je vois
que mon numéro d'Excel est: 10.6789.6735.

Dans VBA, je peux, avec Application.version, retrouver le 10 et, avec
Application.build, retrouver le 6789.

Mais je ne trouve rien pour le 6735. Si jamais quelqu'un tombe là-dessus,
je serais curieux de le savoir, mais ce n'est absolument pas urgent et
cela ne m'empêchera pas de dormir, si je ne le sais pas.

Merci d'avance,




Avatar
Bill Gates
Bien le bonsour,

Les derniers doigts de cette numéro sont la version de l'Office qui encadre
l'Excel de toi. Plus accuratement, c'est la numéro de version du fichier
Mso.dll. Si tu as Office 11, ce fichier gît ici :

C:Program FilesFichiers communsMicrosoft SharedOffice 11Mso.dll

Pour acquérir ce numéro programmatiquement, tu peux expérimenter les lignes de
codage là-dessous. Elles subsument que ton project VBA a une référence vers
"Microsoft Office 11 Object Library", par instance (si tu as Office 11).

_____

Private Type VS_FIXEDFILEINFO
dwSignature As Long
dwStrucVersion As Long
dwFileVersionMSl As Integer
dwFileVersionMSh As Integer
dwFileVersionLSl As Integer
dwFileVersionLSh As Integer
dwProductVersionMSl As Integer
dwProductVersionMSh As Integer
dwProductVersionLSl As Integer
dwProductVersionLSh As Integer
dwFileFlagsMask As Long
dwFileFlags As Long
dwFileOS As Long
dwFileType As Long
dwFileSubtype As Long
dwFileDateMS As Long
dwFileDateLS As Long
End Type

Private Declare Function GetFileVersionInfo _
Lib "Version.dll" Alias "GetFileVersionInfoA" _
(ByVal lptstrFilename As String, ByVal dwHandle As Long, _
ByVal dwLen As Long, lpData As Any) As Long

Private Declare Function GetFileVersionInfoSize _
Lib "Version.dll" Alias "GetFileVersionInfoSizeA" _
(ByVal lptstrFilename As String, lpdwHandle As Long) As Long

Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" _
(dest As Any, src As Long, ByVal length As Long)

Private Declare Function VerQueryValue Lib "Version.dll" _
Alias "VerQueryValueA" (pBlock As Any, ByVal lpSubBlock As String, _
lplpBuffer As Any, puLen As Long) As Long

Sub GetVersion()

MsgBox "Voici la numéro complete de version de l'Excel de toi : " & vbLf & _
Split(Application.Version, ".")(0) & "." & Application.Build & "." & _
GetVersionInfo(ThisWorkbook.VBProject.References("Office").FullPath)

End Sub

Private Function GetVersionInfo(ByVal sFile As String) As String

Dim lDummy As Long
Dim sBuffer() As Byte
Dim lBufferLen As Long, lVerPointer As Long
Dim lVerBufferLen As Long
Dim udtVerBuffer As VS_FIXEDFILEINFO

lBufferLen = GetFileVersionInfoSize(sFile, lDummy)
ReDim sBuffer(lBufferLen)
GetFileVersionInfo sFile, 0&, lBufferLen, sBuffer(0)
VerQueryValue sBuffer(0), "", lVerPointer, lVerBufferLen
CopyMemory udtVerBuffer, ByVal lVerPointer, Len(udtVerBuffer)
GetVersionInfo = CStr(udtVerBuffer.dwProductVersionLSh)

End Function
_____

Votre dévoté Bill Gates

P.S. Non, ce n'est pas Application.calculationversion, ni
application.productcode ;-)


"Clément Marcotte" a écrit dans le message
de news:
Bonjour,

Quand je clique sur le menu "?" dans Excel, puis dans À propos... je vois
que mon numéro d'Excel est: 10.6789.6735.

Dans VBA, je peux, avec Application.version, retrouver le 10 et, avec
Application.build, retrouver le 6789.

Mais je ne trouve rien pour le 6735. Si jamais quelqu'un tombe là-dessus,
je serais curieux de le savoir, mais ce n'est absolument pas urgent et
cela ne m'empêchera pas de dormir, si je ne le sais pas.

Merci d'avance,








Avatar
Bill Gates
De rien.

Votre dévoté Bill Gates


Bien le bonsour,

Les derniers doigts de cette numéro sont la version de l'Office qui
encadre l'Excel de toi. Plus accuratement, c'est la numéro de version du
fichier Mso.dll. Si tu as Office 11, ce fichier gît ici :

C:Program FilesFichiers communsMicrosoft SharedOffice 11Mso.dll

Pour acquérir ce numéro programmatiquement, tu peux expérimenter les
lignes de codage là-dessous. Elles subsument que ton project VBA a une
référence vers "Microsoft Office 11 Object Library", par instance (si tu
as Office 11).

_____

Private Type VS_FIXEDFILEINFO
dwSignature As Long
dwStrucVersion As Long
dwFileVersionMSl As Integer
dwFileVersionMSh As Integer
dwFileVersionLSl As Integer
dwFileVersionLSh As Integer
dwProductVersionMSl As Integer
dwProductVersionMSh As Integer
dwProductVersionLSl As Integer
dwProductVersionLSh As Integer
dwFileFlagsMask As Long
dwFileFlags As Long
dwFileOS As Long
dwFileType As Long
dwFileSubtype As Long
dwFileDateMS As Long
dwFileDateLS As Long
End Type

Private Declare Function GetFileVersionInfo _
Lib "Version.dll" Alias "GetFileVersionInfoA" _
(ByVal lptstrFilename As String, ByVal dwHandle As Long, _
ByVal dwLen As Long, lpData As Any) As Long

Private Declare Function GetFileVersionInfoSize _
Lib "Version.dll" Alias "GetFileVersionInfoSizeA" _
(ByVal lptstrFilename As String, lpdwHandle As Long) As Long

Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" _
(dest As Any, src As Long, ByVal length As Long)

Private Declare Function VerQueryValue Lib "Version.dll" _
Alias "VerQueryValueA" (pBlock As Any, ByVal lpSubBlock As String, _
lplpBuffer As Any, puLen As Long) As Long

Sub GetVersion()

MsgBox "Voici la numéro complete de version de l'Excel de toi : " &
vbLf & _
Split(Application.Version, ".")(0) & "." & Application.Build & "." & _
GetVersionInfo(ThisWorkbook.VBProject.References("Office").FullPath)

End Sub

Private Function GetVersionInfo(ByVal sFile As String) As String

Dim lDummy As Long
Dim sBuffer() As Byte
Dim lBufferLen As Long, lVerPointer As Long
Dim lVerBufferLen As Long
Dim udtVerBuffer As VS_FIXEDFILEINFO

lBufferLen = GetFileVersionInfoSize(sFile, lDummy)
ReDim sBuffer(lBufferLen)
GetFileVersionInfo sFile, 0&, lBufferLen, sBuffer(0)
VerQueryValue sBuffer(0), "", lVerPointer, lVerBufferLen
CopyMemory udtVerBuffer, ByVal lVerPointer, Len(udtVerBuffer)
GetVersionInfo = CStr(udtVerBuffer.dwProductVersionLSh)

End Function
_____

Votre dévoté Bill Gates

P.S. Non, ce n'est pas Application.calculationversion, ni
application.productcode ;-)


"Clément Marcotte" a écrit dans le
message de news:
Bonjour,

Quand je clique sur le menu "?" dans Excel, puis dans À propos... je
vois que mon numéro d'Excel est: 10.6789.6735.

Dans VBA, je peux, avec Application.version, retrouver le 10 et, avec
Application.build, retrouver le 6789.

Mais je ne trouve rien pour le 6735. Si jamais quelqu'un tombe
là-dessus, je serais curieux de le savoir, mais ce n'est absolument
pas urgent et cela ne m'empêchera pas de dormir, si je ne le sais pas.

Merci d'avance,