Bonjour à tous,
Je me suis un peu amusé, parce que souvent on nous demande quel version d'excel ou windows on a et l'architecture,
J'ai plusieurs macros du coup, mais je voudrais savoir s'il serait possible de les cumuler en 1 seule fonction ou simplifier.
mes macros:
La macro d'appel:
Le résultat:
J'en profite au passage pour dire à Patrick que je salut, s'il passe par là, qu'il y a un petit soucis avec son indenter à ce niveau là
Merci à tous
Nicolas
Je me suis un peu amusé, parce que souvent on nous demande quel version d'excel ou windows on a et l'architecture,
J'ai plusieurs macros du coup, mais je voudrais savoir s'il serait possible de les cumuler en 1 seule fonction ou simplifier.
mes macros:
VB:
Option Explicit
' Fonction pour récupérer les informations du processeur
Sub GetProcessorInfo()
Dim objWMI As Object
Dim objProcessor As Object
Dim colProcessors As Object
Dim objProcess As Object
Dim colProcess As Object
Dim objWMIService As Object
Set objWMIService = GetObject("winmgmts:\\.\root\CIMV2")
Set colProcess = objWMIService.ExecQuery("SELECT Name, CurrentClockSpeed, NumberOfCores FROM Win32_Processor")
Debug.Print "=== Informations du processeur ==="
For Each objProcess In colProcess
Debug.Print "Nom du processeur: " & objProcess.Name
Debug.Print "Vitesse actuelle (MHz): " & objProcess.CurrentClockSpeed
Debug.Print "Nombre de cœurs: " & objProcess.NumberOfCores
Debug.Print "-------------------------------"
Debug.Print ""
Next objProcess
End Sub
' Fonction pour récupérer la quantité de mémoire RAM
Sub GetRAMInfo()
Dim objWMIService As Object
Dim objWMI As Object
Dim totalMemory As Double
Dim colMem As Object
Dim objMem As Object
Set objWMIService = GetObject("winmgmts:\\.\root\CIMV2")
Set colMem = objWMIService.ExecQuery("SELECT TotalVisibleMemorySize, FreePhysicalMemory FROM Win32_OperatingSystem")
Debug.Print "=== Informations de mémoire (Ram) ==="
For Each objMem In colMem
Dim totalMemoryGo As Double
Dim freeMemoryGo As Double
totalMemoryGo = Application.WorksheetFunction.Ceiling(objMem.TotalVisibleMemorySize / 1048576, 1)
freeMemoryGo = Application.WorksheetFunction.Ceiling(objMem.FreePhysicalMemory / 1048576, 1)
Debug.Print "Mémoire totale (Go): " & totalMemoryGo
Debug.Print "Mémoire libre (Go): " & freeMemoryGo
Debug.Print "-------------------------------"
Debug.Print ""
Next objMem
End Sub
' Fonction pour récupérer les informations de la carte graphique
Sub GetGraphicsCardInfo()
Dim objWMI As Object
Dim objItems As Object
Dim objItem As Object
Dim strComputer As String
Dim memory As Variant
strComputer = "."
Set objWMI = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set objItems = objWMI.ExecQuery("SELECT * FROM Win32_VideoController")
For Each objItem In objItems
Debug.Print "=== Informations de la carte graphique ==="
Debug.Print "Nom de la carte graphique : " & objItem.Name
memory = objItem.AdapterRAM
If IsNumeric(memory) And memory > 0 Then
Debug.Print "Mémoire vidéo : " & memory / 1024 / 1024 & " Mo" ' Convertir en Mo
Else
Debug.Print "Mémoire vidéo : Information non disponible"
End If
Next objItem
Debug.Print "-------------------------------"
Debug.Print ""
Set objItems = Nothing
Set objWMI = Nothing
End Sub
' Fonction pour récupérer la version de Windows et son architecture
Sub GetWindowsInfo()
Dim wmi As Object
Dim os As Object
Dim strComputer As String
Dim Architecture As String
Dim version As String
strComputer = "."
Set wmi = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
Set os = wmi.ExecQuery("SELECT * FROM Win32_OperatingSystem").ItemIndex(0)
version = os.Caption
If Len(Environ("ProgramFiles(x86)")) > 0 Then
Architecture = "64 bits"
Else
Architecture = "32 bits"
End If
Debug.Print "=== Version windows ==="
Debug.Print "Version : " & version
Debug.Print "Architecture : " & Architecture
Debug.Print "-------------------------------"
Debug.Print ""
Set os = Nothing
Set wmi = Nothing
End Sub
' Fonction pour récupérer la version d'Excel et son architecture
Sub GetExcelInfo()
Dim versionExcel As String
Dim versionVBA As String
Dim versionAnnee As String
Dim Architecture As String
Dim buildExcel As String
Dim versionWindows As String
versionExcel = Application.version
versionVBA = Application.VBE.version
buildExcel = Application.Build
Select Case versionExcel
Case "16.0"
versionAnnee = "Excel 2016, 2019 ou Office 365"
Case "15.0"
versionAnnee = "Excel 2013"
Case "14.0"
versionAnnee = "Excel 2010"
Case "12.0"
versionAnnee = "Excel 2007"
Case "11.0"
versionAnnee = "Excel 2003"
Case Else
versionAnnee = "Version inconnue ou non prise en charge"
End Select
#If Win64 Then
Architecture = "64 bits"
#Else
Architecture = "32 bits"
#End If
versionWindows = Environ("OS") & " " & Environ("PROCESSOR_ARCHITECTURE") & _
" " & Environ("OSVERSION")
Debug.Print "=== Version excel & VBA ==="
Debug.Print versionAnnee
Debug.Print "Version : " & versionExcel & " (Build " & buildExcel & ")"
Debug.Print "Architecture : " & Architecture
Debug.Print "Version de VBA : " & versionVBA
Debug.Print "-------------------------------"
Debug.Print ""
End Sub
' Fonction pour obtenir l'état des disques durs
Sub GetDiskInfo()
Dim objWMI As Object
Dim objDisk As Object
Dim colDisks As Object
Dim i As Integer
Set objWMI = GetObject("winmgmts:\\.\root\CIMV2")
Set colDisks = objWMI.ExecQuery("Select * from Win32_LogicalDisk")
i = 1
For Each objDisk In colDisks
Debug.Print "=== Informations du disque(N°" & i & ") " & objDisk.DeviceID '& " ==="
Debug.Print "Type: " & objDisk.description
Debug.Print "Espace libre (en Go): " & Format(objDisk.FreeSpace / 1024 ^ 3, "0.00")
Debug.Print "Espace total (en Go): " & Format(objDisk.Size / 1024 ^ 3, "0.00")
Debug.Print "-------------------------------"
Debug.Print ""
i = i + 1
Next
End Sub
La macro d'appel:
Code:
Sub ShowSystemInfo()
GetWindowsInfo
GetProcessorInfo
GetGraphicsCardInfo
GetRAMInfo
GetExcelInfo
GetDiskInfo
End Sub
Le résultat:
Code:
=== Version windows ===
Version : Microsoft Windows 10 Professionnel
Architecture : 64 bits
-------------------------------
=== Informations du processeur ===
Nom du processeur: Intel(R) Core(TM) i5-10400F CPU @ 2.90GHz
Vitesse actuelle (MHz): 2904
Nombre de cœurs: 6
-------------------------------
=== Informations de la carte graphique ===
Nom de la carte graphique : NVIDIA GeForce RTX 3070
Mémoire vidéo : Information non disponible
-------------------------------
=== Informations de mémoire ===
Mémoire totale (Go): 32
Mémoire libre (Go): 21
-------------------------------
=== Version excel & VBA ===
Excel 2016, 2019 ou Office 365
Version : 16.0 (Build 16327)
Architecture : 32 bits
Version de VBA : 7.01
-------------------------------
=== Informations du disque(N°1) C:
Type: Disque monté local
Espace libre (en Go): 468,63
Espace total (en Go): 930,91
-------------------------------
=== Informations du disque(N°2) D:
Type: Disque monté local
Espace libre (en Go): 220,17
Espace total (en Go): 465,76
-------------------------------
=== Informations du disque(N°3) E:
Type: Disque monté local
Espace libre (en Go): 318,42
Espace total (en Go): 931,51
-------------------------------
=== Informations du disque(N°4) F:
Type: Disque monté local
Espace libre (en Go): 734,11
Espace total (en Go): 931,51
-------------------------------
=== Informations du disque(N°5) I:
Type: Disque amovible
Espace libre (en Go):
Espace total (en Go):
-------------------------------
=== Informations du disque(N°6) K:
Type: Disque monté local
Espace libre (en Go): 884,38
Espace total (en Go): 931,51
-------------------------------
J'en profite au passage pour dire à Patrick que je salut, s'il passe par là, qu'il y a un petit soucis avec son indenter à ce niveau là
Merci à tous
Nicolas
Pièces jointes
Dernière édition: