Comment savoir si l'utilisateur est sous XP ou Seven?

Lone-wolf

XLDnaute Barbatruc
Re : Comment savoir si l'utilisateur est sous XP ou Seven?

Rebonjour à tous,

désolé mais j'ai coupé le code à moitié, comme ceci. :p ;) :D

Code:
Sub WMI_nous_en_dit_toujours_moins()
     Dim objWMIService, objOS, colOSes

     Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
     Set colOSes = objWMIService.ExecQuery("Select * from Win32_OperatingSystem")
     
     For Each objOS In colOSes
     Debug.Print " Nom de l'ordinateur: " & objOS.CSName
     Debug.Print " Nom: " & objOS.Caption 'Name
     Debug.Print " Concepteur: " & objOS.Manufacturer
     Debug.Print " Version: " & objOS.Version 'Version & build
     Debug.Print " N° de la Build: " & objOS.BuildNumber 'Build
     Debug.Print " Type de Processeur: " & objOS.BuildType
     Debug.Print " Processeur: " & objOS.OSArchitecture
     Debug.Print " Autre Description: (2003 Server R2 release only)" & objOS.OtherTypeDescription
     Debug.Print " Service Pack: " & " Service Pack " & objOS.ServicePackMajorVersion 
     Next
End Sub
Ce qui nous donne:

Nom de l'ordinateur: WIN7
Nom: Microsoft Windows*7 Édition Familiale Premium
Concepteur: Microsoft Corporation
Version: 6.1.7601
N° de la Build: 7601
Type de Processeur: Multiprocessor Free
Processeur: 64 bits
Autre Description: (2003 Server R2 release only)
Service Pack: Service Pack 1
Comment on peu afficher ceci dans un UserForm?


A+ :cool:


Amicalement
Lone-wolf
 
Dernière édition:

JCGL

XLDnaute Barbatruc
Re : Comment savoir si l'utilisateur est sous XP ou Seven?

Bonjour à tous,
Salut les amis,

Le but d'un test étant de... tester, je déconseille l'utilisation "On Error Resume Next" dans ce cas bien précis...
Je pense que l'ami David voulait connaître les lignes compatibles, ou non, entre 32 et 64 bits.

C'est pourquoi j'ai mis la ligne qui ne passait pas à la compilation en Rem.

A++ les amis
A + à tous
 

Staple1600

XLDnaute Barbatruc
Re : Comment savoir si l'utilisateur est sous XP ou Seven?

Bonjour à tous

Comment on peu afficher ceci dans un UserForm?


A+ :cool:
Amicalement
Lone-wolf
Userform avec une textb ox et un commandbutton
Avec un TextBox avec la propriété Multiline sur True

Code:
Private Sub CommandButton1_Click()
Dim objWMIService, objOS, colOSes
Dim StrResults$
     Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
     Set colOSes = objWMIService.ExecQuery("Select * from Win32_OperatingSystem")
     
     For Each objOS In colOSes
     StrResults = " Nom de l'ordinateur: " & objOS.CSName & vbCrLf
      StrResults = StrResults & " Nom: " & objOS.Caption & vbCrLf 'Name
     StrResults = StrResults & " Concepteur: " & objOS.Manufacturer & vbCrLf
     StrResults = StrResults & " Version: " & objOS.Version & vbCrLf 'Version & build
     StrResults = StrResults & " N° de la Build: " & objOS.BuildNumber & vbCrLf 'Build
     StrResults = StrResults & " Type de Processeur: " & objOS.BuildType & vbCrLf
     'StrResults = StrResults & " Processeur: " & objOS.OSArchitecture & vbCrLf
     StrResults = StrResults & " Autre Description: (2003 Server R2 release only)" & objOS.OtherTypeDescription & vbCrLf
     StrResults = StrResults & " Service Pack: " & " Service Pack " & objOS.ServicePackMajorVersion & vbCrLf
     Next
     TextBox1.Value = StrResults
End Sub
david84
Je me suis contenté d'adapter rapidement le script VBS (e faisant Edition/Remplace WScript.Echo par Debug.Print) et j'ai lancé le code pour voir quelle ligne ne fonctionne pas sous XP (car suis sous XP pour le week-end)
Je cherche toujours comment écrire ce même code sans boucler
(Par exemple si on veut afficher que le nom de l'os et si 32 ou 64 bits)
 
Dernière édition:

Lone-wolf

XLDnaute Barbatruc
Re : Comment savoir si l'utilisateur est sous XP ou Seven?

Merci beaucoup Staple, t'es un chou ;) :D

Est-ce que par hazard, quelqu'un sait quelle est la ligne qui permet d'afficher la Mémoire(RAM)?

En PJ, le résultat (pour l'instant) après quelques modifications.


A+ :cool:

Amicalement
Lone-wolf
 

Fichiers joints

Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : Comment savoir si l'utilisateur est sous XP ou Seven?

Re

Lone-Wolf
:
Tu n'as pas été voir le lien que j'ai mis dans mon message?
Tu y trouveras l'info que tu cherches ;)
 
Dernière édition:

JCGL

XLDnaute Barbatruc
Re : Comment savoir si l'utilisateur est sous XP ou Seven?

Bonjour à tous,

"GetRamSize" et "GetFreeMemory"

A + à tous
 

Lone-wolf

XLDnaute Barbatruc
Re : Comment savoir si l'utilisateur est sous XP ou Seven?

Désolé mais, avec tout ce qu'il y a de noté à ce sujet, je Raaammmeeeeeee! :eek::eek::eek:

un sch'ti coup de main?


A+ :cool:

Amicalement
Lone-wolf
 

JCGL

XLDnaute Barbatruc
Re : Comment savoir si l'utilisateur est sous XP ou Seven?

Bonjour à tous,

Voilà de quoi t'occuper un petit moment...
Un fichier compilé par Michel XLD avec des pointures à l'écriture.

A++
A + à tous
 

Fichiers joints

Lone-wolf

XLDnaute Barbatruc
Re : Comment savoir si l'utilisateur est sous XP ou Seven?

Jean Claude, je n'arrive pas à déchiffrer.

C'est quoi et à mettre sur quelle ligne: "GetRamSize" et "GetFreeMemory" ? :confused:

A+ :cool:


Amicalement
Lone-wolf
 

fhoest

XLDnaute Accro
Re : Comment savoir si l'utilisateur est sous XP ou Seven?

Bonjour à tous,
@ yann56 as tu essayé ce que j'ai proposé pour la bande bleu,
A+ (bien que je doute que cela fonctionne car cela me parait trop simple)
 

Staple1600

XLDnaute Barbatruc
Re : Comment savoir si l'utilisateur est sous XP ou Seven?

Re, bonjour fhoest

Lone-Wolf:
Ne vaudrait-il pas mieux ouvrir un fil dédié à tes questions sur WMI ?

Sinon (toujours adapté du lien que j'ai mis plus bas)
Code:
Sub test()
Dim objOS
On Error Resume Next
' Connect to WMI and obtain instances of Win32_OperatingSystem
For Each objOS In GetObject( _
"winmgmts:").InstancesOf("Win32_OperatingSystem")
MsgBox "Memoire = " & objOS.TotalVisibleMemorySize
Next
If Err <> 0 Then
MsgBox Err.Description
Err.Clear
End If
End Sub
D'autres scrips adaptables (dont le premier ;) ) en VBA
WMI Tasks: Computer Hardware
(la source est toujours la même)
 
Dernière édition:

Lone-wolf

XLDnaute Barbatruc
Re : Comment savoir si l'utilisateur est sous XP ou Seven?

Staple, désolé mais là je cale à mort. :eek:

Message d'erreur: Propriété ou Méthode non gérée par le système. :(

Pour la RAM, j'ai vu ceci:

Code:
...determine how much RAM is installed in a computer?	Use the Win32_ComputerSystem class and check the value of the TotalPhysicalMemory property.
VB

strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" _
    & strComputer & "\root\cimv2")
Set colSettings = objWMIService.ExecQuery _
    ("Select * from Win32_ComputerSystem")
For Each objComputer in colSettings 
    Wscript.Echo "System Name: " & objComputer.Name
    Wscript.Echo "Total Physical Memory: " & _
        objComputer.TotalPhysicalMemory
Next
Au faite
la source est toujours la même
Le VBA ressemble a CHARMED: CALL <test> - LA SOURCE (est toujours la même);
ça me fou la trouille tout ça.



A+ :cool:


Amicalement
Lone-wolf
 
Dernière édition:

Lone-wolf

XLDnaute Barbatruc
Re : Comment savoir si l'utilisateur est sous XP ou Seven?

Bonsoir à tous,

Avant toute chose, je tiens à vous dire qu'il n'y a pas d'OS ;) dans le fichier joint, suite aux remarques faites par les XLDiens.

Dites-moi ce que ça donne chez vous s.v.p. . Merci pour votre collaboration.


A+ :cool:


Amicalement
Lone-wolf
 

Fichiers joints

JCGL

XLDnaute Barbatruc
Re : Comment savoir si l'utilisateur est sous XP ou Seven?

Bonjour à tous,

Il doit y avoir un problème avec la détetcton de la mémoire :

Capture_1.png

A + à tous
 

Fichiers joints

Lone-wolf

XLDnaute Barbatruc
Re : Comment savoir si l'utilisateur est sous XP ou Seven?

Bonsoir Jean Claude,

Avec Excel 2010 mettre (objC.TotalVisibleMemorySize / 1000000 + 0.14, 2)

Testé sur PC portable.


A+ :cool:

Amicalement
Lone-wolf
 
Dernière édition:

Lone-wolf

XLDnaute Barbatruc
Re : Comment savoir si l'utilisateur est sous XP ou Seven?

Re,

ça donne 3.93Go et toi Attention!!!...0.77Go??? :confused:

La ligne avec Application.WorksheetFunction.Round était dans le fichier de Didier, je l'ai copiée et rajouté 0.07 pour avoir le chiffre
rond de 4.00.


Sans titre.jpg Sans titre.gif


EDIT: je viens de modifier cette ligne:

StrResults = StrResults & " Mémoire (RAM) installée Lone-Wolf : " & Application.WorksheetFunction.Round(((objC.TotalVisibleMemorySize / 1024) / 1024), 0) & " Go" & vbCrLf & vbCrLf
ça me donne 4 Go, testé aussi sur Excel 2010 sans le bout de code que Jean Claude à rajouter.



A+ :cool:

Amicalement
Lone-wolf
 

Fichiers joints

Dernière édition:

david84

XLDnaute Barbatruc
Re : Comment savoir si l'utilisateur est sous XP ou Seven?

Bonjour,
@LoneWolf :
Nom de l'ordinateur: DAVID-PC
Edition: Microsoft Windows 7 Édition Familiale Premium
Version: 6.1.7601
Processeur : Intel(R) Core(TM) i5-2400S CPU @ 2.50GHz - 64 bits
Mémoire (RAM) installée 6,34.00 Go
Service Pack 1
Peux-tu me communiquer les résultats des tests demandés au message 65 ?
A+
 

Lone-wolf

XLDnaute Barbatruc
Re : Comment savoir si l'utilisateur est sous XP ou Seven?

Bonsoir david, désolé pour le retard; mais travail oblige.

Testé sur Excel 2007 et 2010

La macro de Staple:

Code:
Sub a() 'renvoie 32 sur un PC sous XP HOME SP3)
Dim OSVER
Set OSVER = GetObject("winmgmts:root\cimv2:Win32_Processor='cpu0'")
MsgBox OSVER.addresswidth & "-bit"
End Sub
Me renvois 64-Bit

La macro test()

Code:
Sub test()
MsgBox Application.OperatingSystem
End Sub
Me renvois Windows(32bit) NT 6.01


Quand à ma dernière macro modifiée, testée sur PC (Écran non tactile HP avec Excel 2007) et portable Acer avec Excel 2010 mon donné 4Go.


Pourquoi chez vous le résultat est faussé? Est-ce que les paramètres régionaux France pour vous et Suisse pour moi, font qu'il y ai cette différence?? :confused: :confused:


A+ :cool

Amicalement
Lone-wolf
 

Discussions similaires


Haut Bas