Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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.



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



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

 
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

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
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é :
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:


Ami calmant, J.P
 

Nicolas JACQUIN

XLDnaute Impliqué
Supporter XLD

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.



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

 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…