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:

jurassic pork

XLDnaute Occasionnel
comme ça ça match sur mes 2 pc

Code:
        Select Case manufacturerName
            Case "029E": manufacturerName = "Corsair"
            Case "Micron Technology": manufacturerName = "Micron Technology"
        
            Case Else: manufacturerName = "Fabricant inconnu"
        End Select
ben ça marchera pas sur la plupart des PC. Il ne faut pas mettre de Case Else . Soit tu as directement le fabricant, soit tu as le code Jedec du Fabricant ( ce qui doit être plus rare). Le cas où tu as un fabricant inconnu c'est quand WMI n'arrive pas à lire l'information (comme dans le cas de TooFatBoy où c'est Manufacturerxx qui est renvoyé)
 
Dernière édition:

dysorthographie

XLDnaute Accro
Bonjour,
Rubberduck personnellement jamais utilisé.
Rubberduck VBA est un add-in open-source pour l'éditeur VBA (Visual Basic for Applications) qui fournit un ensemble d'outils puissants pour améliorer la productivité et la qualité du code VBA. Développé par la communauté, il est compatible avec Excel, Access, Word, et d'autres applications Microsoft Office utilisant VBA. En plus de faciliter les tests unitaires, Rubberduck ajoute des fonctionnalités de refactorisation, d’analyse de code, et bien plus encore. Voici ses principales caractéristiques :

1. Tests Unitaires

Rubberduck inclut un framework de tests unitaires similaire à ceux des autres langages de programmation. Il permet de créer, d’organiser et d'exécuter des tests directement dans l'éditeur VBA :

Configuration et exécution des tests : Permet de définir des procédures de test, avec des attributs spécifiques (@TestMethod, @TestInitialize, etc.) pour structurer les tests et gérer la configuration.

Assertions : Des méthodes d’assertion (Assert.AreEqual, Assert.IsTrue, etc.) facilitent la vérification des résultats.

Rapports de tests : Une fois les tests exécutés, Rubberduck fournit un rapport détaillé des tests réussis et échoués, identifiant clairement où se trouvent les erreurs.


2. Analyse Statique du Code

Rubberduck analyse votre code VBA pour repérer les erreurs potentielles et les problèmes de style :

Inspection du code : Il identifie les variables non utilisées, les noms de variables confus, les potentielles erreurs logiques, etc.

Alerte d'erreurs : Les erreurs de syntaxe, les erreurs courantes de logique et les violations de conventions de codage sont signalées dans une liste d’inspections.

Suggestions d'amélioration : Il propose des suggestions pour améliorer la clarté, la maintenabilité, et la performance du code.


3. Refactorisation

Rubberduck propose des outils pour restructurer votre code sans en modifier la fonctionnalité, ce qui facilite l’entretien et la lisibilité :

Renommer : Renomme les variables, méthodes et classes partout dans le projet.

Encapsulation des champs : Permet de créer des propriétés pour encapsuler les champs.

Extraire une méthode : Permet d’isoler une section de code dans une nouvelle procédure pour améliorer la modularité.

Réorganisation de code : Il aide à réorganiser les procédures et modules pour un code plus clair.


4. Explorateur de Projet

Rubberduck propose un explorateur de projet avancé, améliorant la vue standard de VBA :

Permet de naviguer facilement entre les modules, les classes et les procédures.

Offre des options de tri, de regroupement et de recherche avancées.


5. Navigation et Documentation

Rubberduck fournit des outils pour naviguer plus efficacement dans le code et générer automatiquement de la documentation :

Documentation automatique : Ajoute des commentaires et des descriptions aux fonctions, aux procédures et aux modules.

Navigation rapide : Facilite la recherche des références et la navigation dans les dépendances.


6. Support pour les Conventions de Codage

Rubberduck permet de définir et d'appliquer des conventions de codage pour VBA :

Standardisation des noms : Applique une convention de nommage pour les variables, fonctions, procédures, etc.

Recommandations de style : Propose des suggestions pour rendre le code conforme aux conventions de style standard.


Installation et Utilisation

Rubberduck est un logiciel gratuit que vous pouvez télécharger depuis son site GitHub. Une fois installé, il s’intègre directement dans l’éditeur VBA, en ajoutant une barre d’outils et des options supplémentaires.

Conclusion

Rubberduck VBA est un outil puissant pour les développeurs VBA qui souhaitent des fonctionnalités avancées comparables aux IDE modernes, améliorant la qualité, la maintenabilité, et la productivité de leur code VBA. Que ce soit pour les tests unitaires, la refactorisation, ou l
a documentation, il offre de nombreux avantages pour tout projet VBA.
 

TooFatBoy

XLDnaute Barbatruc
je m'en doutais un peu vu que tu n'as pas non plus l'info du fabricant. De quand date le BIOS de ton PC ?
Ca fait à peu près cinq ans que j'essaye de savoir quand j'ai acheté les éléments de mon PC, mais impossible de retrouver l'information. :(

Si ça peut te donner une idée : la CM est une ASUS P5Q-E.


[edit]
Une information de trouver je viens : 6 avril 2009
[/edit]
 

Gégé-45550

XLDnaute Accro
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,
Voici pour moi :
BarretteCapacité (GB)Vitesse (MHz)FabricantNuméro de sérieModèle
Barrette 18,00
2666​
KingstonF0B500E5KHX2666C16/8G
Barrette 28,00
2666​
Kingston2A746B4EKHX2666C16/8G
Barrette 38,00
2666​
KingstonE8B500AEKHX2666C16/8G
Barrette 48,00
2666​
Kingston0BF500A1KHX2666C16/8G
Cdlt
 

Discussions similaires

Réponses
19
Affichages
2 K

Statistiques des forums

Discussions
314 704
Messages
2 112 055
Membres
111 410
dernier inscrit
yomeiome