XL 2021 Code manufacturier et fabricant (Ram) suite projet en cours ( à tester s'il vous plait )

Nicolas JACQUIN

XLDnaute Impliqué
Supporter XLD
Bonjour à tous et à ceux qui on suivi ma discussion précédente,

Je cherche à pouvoir récupérer les codes fabricant de chaque manufacturier pour les ram ( barettes mémoires )
je suis tombé la dessus, du coup j'ai adapté en fonction.

Capture d’écran 2024-11-01 111022.jpg


Je vous joint un code que j'aimerai que vous testiez, et savoir le code (Marque) que vous obtenez en "B2" etc..
Exemple,

Capture d’écran 2024-11-01 112036.jpg


Et si le code ou fabricant ne figure pas me le dire (le code et éventuellement le fabricant si vous le connaissez).
En vous remerciant tous.
Nico.

VB:
Sub GetRAMInfo3()
    Dim objWMI As Object
    Dim objMemory As Object
    Dim colMemory As Object
    Dim RAMType As String
    Dim MANType As String
    Dim row As Integer
    Dim RAMSizeGB As Double

    row = 2

    Set objWMI = GetObject("winmgmts:\\.\root\CIMV2")
    Set colMemory = objWMI.ExecQuery("SELECT * FROM Win32_PhysicalMemory")

    ' Entêtes
    Range("A1").Value = "Type de RAM"
    Range("B1").Value = "Marque"
    Range("C1").Value = "Taille (Go)"

    For Each objMemory In colMemory
        Select Case objMemory.SMBIOSMemoryType
            Case 20
                RAMType = "DDR"
            Case 21
                RAMType = "DDR2"
            Case 22
                RAMType = "DDR2 FB-DIMM"
            Case 24
                RAMType = "DDR3"
            Case 26
                RAMType = "DDR4"
            Case 27
                RAMType = "DDR5"
            Case Else
                RAMType = "Type inconnu"
        End Select
   
        Select Case objMemory.Manufacturer
            Case "04CB"
                MANType = "(A-DATA)"
            Case "017A"
                MANType = "(Apacer)"
            Case "029E"
                MANType = "(Corsair)"
            Case "059B"
                MANType = "(Crucial)"
            Case "04CD"
                MANType = "(Crucial)"
            Case "0198"
                MANType = "(HyperX)"
            Case "00CE"
                MANType = "(Samsung)"
            Case Else
                MANType = "(Type inconnu)"
        End Select

        RAMSizeGB = objMemory.Capacity / (1024 ^ 3)
   
        Range("A" & row).Value = RAMType & " " & MANType
        Range("B" & row).Value = objMemory.Manufacturer
        Range("C" & row).Value = Format(RAMSizeGB, "0") & " Go"
        row = row + 1
    Next objMemory

    Set colMemory = Nothing
    Set objMemory = Nothing
    Set objWMI = Nothing

    Columns("A:C").EntireColumn.AutoFit
End Sub

Capture d’écran 2024-11-01 121239.jpg
 
Dernière édition:

TooFatBoy

XLDnaute Barbatruc
Mais pourquoi compliques-tu toujours tout ?!?
Tu ne peux pas simplement répondre à la question dès ton premier post ?

Pour éviter que ça parte encore sur trois pages pour avoir une simple réponse, je vais répondre à ta place : "Non, je n'ai pas essayé la macro que j'ai postée en #9."
Et du coup je te réponds que je m'en doutais car, pour info, il y a une erreur dans ta macro de #9.
 

Nicolas JACQUIN

XLDnaute Impliqué
Supporter XLD
Mais pourquoi compliques-tu toujours tout ?!?
Tu ne peux pas simplement répondre à la question dès ton premier post ?

Pour éviter que ça parte encore sur trois pages pour avoir une simple réponse, je vais répondre à ta place : "Non, je n'ai pas essayé la macro que j'ai postée en #9."
Et du coup je te réponds que je m'en doutais car, pour info, il y a une erreur dans ta macro de #9.

Désolé, chez moi elle fonctionne, réessaye celle là pour voir sinon je laisse tomber les marques, de plus j'ai pas assez de retours.

VB:
Sub GetMemoryInfoWithSelectCase()

    Sheets(2).Cells.ClearContents
   
    Sheets(2).Cells(1, 1).Value = "Barrette"
    Sheets(2).Cells(1, 2).Value = "Capacité (GB)"
    Sheets(2).Cells(1, 3).Value = "Vitesse (MHz)"
    Sheets(2).Cells(1, 4).Value = "Fabricant"
    Sheets(2).Cells(1, 5).Value = "Numéro de série"

    Dim objWMIService As Object
    Dim colItems As Object
    Dim objItem As Object
    Dim i As Integer
    Dim manufacturerCode As String
    Dim manufacturerName As String

    Set objWMIService = GetObject("winmgmts:\\.\root\CIMV2")
    Set colItems = objWMIService.ExecQuery("Select * from Win32_PhysicalMemory")
   
    i = 2
   
    For Each objItem In colItems
        Sheets(2).Cells(i, 1).Value = "Barrette " & i - 1
        Sheets(2).Cells(i, 2).Value = Format(objItem.Capacity / 1024 ^ 3, "#0.00")
        Sheets(2).Cells(i, 3).Value = objItem.Speed
        Sheets(2).Cells(i, 6).Value = objItem.Manufacturer

        manufacturerCode = objItem.Manufacturer
        Select Case manufacturerCode
            Case "029E"
                manufacturerName = "Corsair"
            Case "04CD"
                manufacturerName = "G.Compétence"
            Case "0190"
                manufacturerName = "Samsung"
            Case "07A9"
                manufacturerName = "Hynix"
            Case "014F", "2C00"
                manufacturerName = "Micron"
            Case "00CE"
                manufacturerName = "Samsung"
            Case "80AD"
                manufacturerName = "Hynix"
            Case "98FE"
                manufacturerName = "Toshiba"
            Case "859B"
                manufacturerName = "Transcend"
            Case "00AD"
                manufacturerName = "SK Hynix"
            Case "001C"
                manufacturerName = "Crucial"
            Case "00CB"
                manufacturerName = "Infineon"
            Case "017A"
                manufacturerName = "Apacer"
            Case "059B"
                manufacturerName = "Crucial"
            Case "00CB"
                manufacturerName = "Infineon"
            Case "0198"
                manufacturerName = "HyperX"
            Case "04CB"
                manufacturerName = "A-DATA"
            Case "7F7F"
                manufacturerName = "Non-standard"
            Case "Micron Technology"
                manufacturerName = "Micron Technology"
            Case "Manufacturer00"
                manufacturerName = "G.Skill"
            Case "Manufacturer01"
                manufacturerName = "G.Skill"
            Case "Manufacturer02"
                manufacturerName = "G.Skill"
            Case "Manufacturer03"
                manufacturerName = "G.Skill"
            ' Ajoutez ici d'autres codes connus
            Case Else
                manufacturerName = "Inconnu (" & manufacturerCode & ")"
        End Select
        Sheets(2).Cells(i, 4).Value = manufacturerName
       
        Sheets(2).Cells(i, 5).Value = objItem.SerialNumber
       
        i = i + 1
    Next objItem
   
    Set colItems = Nothing
    Set objWMIService = Nothing
   
    'MsgBox "Les informations sur la mémoire ont été récupérées avec succès.", vbInformation
End Sub

Merci
 

Gégé-45550

XLDnaute Accro
Bonjour à tous,

Dernier test s'il vous plait, si votre fabricant ne s'affiche pas ou n'est pas bon me dire ce que vous avez en colonne F, et si vous connaissez la marque en plus me la donner. En vous remerciant d'avance.
Nico

VB:
Sub GetMemoryInfoWithSelectCase()

    Sheets(2).Cells.ClearContents
   
    Sheets(2).Cells(1, 1).Value = "Barrette"
    Sheets(2).Cells(1, 2).Value = "Capacité (GB)"
    Sheets(2).Cells(1, 3).Value = "Vitesse (MHz)"
    Sheets(2).Cells(1, 4).Value = "Fabricant"
    Sheets(2).Cells(1, 5).Value = "Numéro de série"

    Dim objWMIService As Object
    Dim colItems As Object
    Dim objItem As Object
    Dim i As Integer
    Dim manufacturerCode As String
    Dim manufacturerName As String

    Set objWMIService = GetObject("winmgmts:\\.\root\CIMV2")
    Set colItems = objWMIService.ExecQuery("Select * from Win32_PhysicalMemory")
   
    i = 2
   
    For Each objItem In colItems
        Sheets(2).Cells(i, 1).Value = "Barrette " & i - 1
        Sheets(2).Cells(i, 2).Value = Format(objItem.Capacity / 1024 ^ 3, "#0.00")
        Sheets(2).Cells(i, 3).Value = objItem.Speed
        Sheets(2).Cells(i, 6).Value = objItem.Manufacturer

        manufacturerCode = objItem.Manufacturer
        Select Case manufacturerCode
            Case "029E"
                manufacturerName = "Corsair"
            Case "04CD"
                manufacturerName = "G.Compétence"
            Case "0190"
                manufacturerName = "Samsung"
            Case "07A9"
                manufacturerName = "Hynix"
            Case "014F", "2C00"
                manufacturerName = "Micron"
            Case "00CE"
                manufacturerName = "Samsung"
            Case "80AD"
                manufacturerName = "Hynix"
            Case "98FE"
                manufacturerName = "Toshiba"
            Case "859B"
                manufacturerName = "Transcend"
            Case "00AD"
                manufacturerName = "SK Hynix"
            Case "001C"
                manufacturerName = "Crucial"
            Case "00CB"
                manufacturerName = "Infineon"
            Case "017A"
                manufacturerName = "Apacer"
            Case "059B"
                manufacturerName = "Crucial"
            Case "00CB"
                manufacturerName = "Infineon"
            Case "0198"
                manufacturerName = "HyperX"
            Case "04CB"
                manufacturerName = "A-DATA"
            Case "7F7F"
                manufacturerName = "Non-standard"
            ' Ajoutez ici d'autres codes connus
            Case Else
                manufacturerName = "Inconnu (" & manufacturerCode & ")"
        End Select
        Sheets(2).Cells(i, 4).Value = manufacturerName
       
        Sheets(2).Cells(i, 5).Value = objItem.SerialNumber
       
        i = i + 1
    Next objItem
   
    Set colItems = Nothing
    Set objWMIService = Nothing
   
    MsgBox "Les informations sur la mémoire ont été récupérées avec succès.", vbInformation
End Sub

Regarde la pièce jointe 1206355
Bonsoir,
test 1 :
Type de RAMMarqueTaille (Go)
DDR4 (Type inconnu)Kingston8 Go
DDR4 (Type inconnu)Kingston8 Go
DDR4 (Type inconnu)Kingston8 Go
DDR4 (Type inconnu)Kingston8 Go
test 2 :
BarretteCapacité (GB)Vitesse (MHz)FabricantNuméro de série
Barrette 18,00
2666​
Inconnu (Kingston)F0B500E5Kingston
Barrette 28,00
2666​
Inconnu (Kingston)2A746B4EKingston
Barrette 38,00
2666​
Inconnu (Kingston)E8B500AEKingston
Barrette 48,00
2666​
Inconnu (Kingston)0BF500A1Kingston
Cdlt
 

jurassic pork

XLDnaute Occasionnel
Hello Nicolas,
je pense que tu vas devoir modifier ton test sur les fabricants car comme tu as pu le constater la plupart des personnes qui ont testé ton code se retrouve avec le véritable nom du fabricant. Concernant les Modules CORSAIR (qui ne mettent pas la chaîne Corsair dans la propriété Manufacturer) que tu utilises j'ai mené ma petite enquête et voici ce que j'ai trouvé :
Selon les informations disponibles, Corsair n’est pas un fabricant de puces RAM (Random Access Memory). Les puces RAM utilisées dans les produits Corsair sont en général fournies par des fabricants tiers tels que Micron, Samsung, SK Hynix
C'est peut-être pour cela qu'ils mettent le code JEDEC à la place de leur nom.
Une info qu'il serait utile de rajouter c'est la partName car elle donne le nom du modèle de module utilisé ce qui peut être utile pour retrouver le fabricant. Par exemple dans le cas de TooFatBoy je serai curieux de
voir ce que cela donne. Mais il m'a l'air d'avoir un pc ancien car les infos renvoyées par wmi ne sont pas précises (ex: Manufacturer00). Les Infos sont récoltées dans le BIOS et si celui est très ancien, on peut avoir des choses manquantes.
Voici le code VBA que je propose :
VB:
Sub GetMemoryInfoWithSelectCase()
    Sheets(2).Cells.ClearContents   
    Sheets(2).Cells(1, 1).Value = "Barrette"
    Sheets(2).Cells(1, 2).Value = "Capacité (GB)"
    Sheets(2).Cells(1, 3).Value = "Vitesse (MHz)"
    Sheets(2).Cells(1, 4).Value = "Fabricant"
    Sheets(2).Cells(1, 5).Value = "Numéro de série"
    Sheets(2).Cells(1, 6).Value = "Modèle"

    Dim objWMIService As Object
    Dim colItems As Object
    Dim objItem As Object
    Dim i As Integer
    Dim manufacturerCode As String
    Dim manufacturerName As String
    Set objWMIService = GetObject("winmgmts:\\.\root\CIMV2")
    Set colItems = objWMIService.ExecQuery("Select * from Win32_PhysicalMemory")  
    i = 2  
    For Each objItem In colItems
        Sheets(2).Cells(i, 1).Value = "Barrette " & i - 1
        Sheets(2).Cells(i, 2).Value = Format(objItem.Capacity / 1024 ^ 3, "#0.00")
        Sheets(2).Cells(i, 3).Value = objItem.Speed
        manufacturerName = objItem.Manufacturer
        Select Case manufacturerName
            Case "029E"
                manufacturerName = "Corsair"
        End Select
        Sheets(2).Cells(i, 4).Value = manufacturerName      
        Sheets(2).Cells(i, 5).Value = objItem.SerialNumber
        Sheets(2).Cells(i, 6).Value = objItem.PartNumber      
        i = i + 1
    Next objItem  
    Set colItems = Nothing
    Set objWMIService = Nothing  
    'MsgBox "Les informations sur la mémoire ont été récupérées avec succès.", vbInformation
End Sub


et voici ce que cela donne chez moi:
RamInfos.png


Ami calmant, J.P
 

Nicolas JACQUIN

XLDnaute Impliqué
Supporter XLD
Hello Nicolas,
je pense que tu vas devoir modifier ton test sur les fabricants car comme tu as pu le constater la plupart des personnes qui ont testé ton code se retrouve avec le véritable nom du fabricant. Concernant les Modules CORSAIR (qui ne mettent pas la chaîne Corsair dans la propriété Manufacturer) que tu utilises j'ai mené ma petite enquête et voici ce que j'ai trouvé :

C'est peut-être pour cela qu'ils mettent le code JEDEC à la place de leur nom.
Une info qu'il serait utile de rajouter c'est la partName car elle donne le nom du modèle de module utilisé ce qui peut être utile pour retrouver le fabricant. Par exemple dans le cas de TooFatBoy je serai curieux de
voir ce que cela donne. Mais il m'a l'air d'avoir un pc ancien car les infos renvoyées par wmi ne sont pas précises (ex: Manufacturer00). Les Infos sont récoltées dans le BIOS et si celui est très ancien, on peut avoir des choses manquantes.
Voici le code VBA que je propose :
VB:
Sub GetMemoryInfoWithSelectCase()
    Sheets(2).Cells.ClearContents  
    Sheets(2).Cells(1, 1).Value = "Barrette"
    Sheets(2).Cells(1, 2).Value = "Capacité (GB)"
    Sheets(2).Cells(1, 3).Value = "Vitesse (MHz)"
    Sheets(2).Cells(1, 4).Value = "Fabricant"
    Sheets(2).Cells(1, 5).Value = "Numéro de série"
    Sheets(2).Cells(1, 6).Value = "Modèle"

    Dim objWMIService As Object
    Dim colItems As Object
    Dim objItem As Object
    Dim i As Integer
    Dim manufacturerCode As String
    Dim manufacturerName As String
    Set objWMIService = GetObject("winmgmts:\\.\root\CIMV2")
    Set colItems = objWMIService.ExecQuery("Select * from Win32_PhysicalMemory") 
    i = 2 
    For Each objItem In colItems
        Sheets(2).Cells(i, 1).Value = "Barrette " & i - 1
        Sheets(2).Cells(i, 2).Value = Format(objItem.Capacity / 1024 ^ 3, "#0.00")
        Sheets(2).Cells(i, 3).Value = objItem.Speed
        manufacturerName = objItem.Manufacturer
        Select Case manufacturerName
            Case "029E"
                manufacturerName = "Corsair"
        End Select
        Sheets(2).Cells(i, 4).Value = manufacturerName     
        Sheets(2).Cells(i, 5).Value = objItem.SerialNumber
        Sheets(2).Cells(i, 6).Value = objItem.PartNumber     
        i = i + 1
    Next objItem 
    Set colItems = Nothing
    Set objWMIService = Nothing 
    'MsgBox "Les informations sur la mémoire ont été récupérées avec succès.", vbInformation
End Sub


et voici ce que cela donne chez moi:
Regarde la pièce jointe 1206372

Ami calmant, J.P

Bonjour à tous,

A J.P, ta correction fonctionne bien, à part n° de série, mais c'est parfait, sur mon pc portable aussi, reste à voir pour les autres.

Capture d’écran 2024-11-03 074359.jpg


Merci
 

jurassic pork

XLDnaute Occasionnel
Le numéro de série n'est pas important tu pourrais le supprimer des infos à afficher. Et pour le type de ram que trouve TooFatBoy (19h) voici l'info ainsi que d'autres types :
FBD2 (Fast Burst DRAM 2):
Code: 19h

01h Other
02h Unknown
03h DRAM
04h EDRAM
05h VRAM
06h SRAM
07h RAM
08h ROM
09h FLASH
0Ah EEPROM
0Bh FEPROM
0Ch EPROM
0Dh CDRAM
0Eh 3DRAM
0Fh SDRAM
10h SGRAM
11h RDRAM
12h DDR
13h DDR2
14h DDR2 FB-DIMM
15h-17h Reserved
18h DDR3
19h FBD2
1Ah DDR4
1Bh LPDDR
1Ch LPDDR2
1Dh LPDDR3
1Eh LPDDR4
20h ddr5
 

Discussions similaires

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
314 499
Messages
2 110 251
Membres
110 711
dernier inscrit
chmessi