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

YANN-56

XLDnaute Barbatruc
Bonsoir à tous, ou Bonjour suivant l'heure,

J'utilise "GetDetailsOf" pour dresser la liste des propriétés résumées d'un document Word.
(Ce qui est du même tonneau pour un Excel)

Comme le sujet de la discussion ci-dessous le démontre:
https://www.excel-downloads.com/thr...ent-2-le-2-nest-pas-le-meme-chez-tous.153645/

Les n° d'Items sont différents!

J'ai pensé palier ce problème en adaptant mon code suivant le "Windows" utilisé.

Mais malgré moult recherches, je ne parviens pas à pomper son identité.

Mon application étant utilisée en réseau avec des versions différentes; c'est le désordre!

Si quelqu'un a une idée; je lui serai très reconnaissant.

Merci par avance,

Yann
 

david84

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

Bonjour tout le monde,
@staple : que cherches-tu à faire exactement ? Si c'est le fait d'éviter de boucler, tu peux peut-être appeler le nom de la variable environnement recherchée.
Par exemple :
Code:
Sub a()
MsgBox Environ("OS")
MsgBox Environ("PROCESSOR_IDENTIFIER")
End Sub
Chez moi cela donne :
Windows_NT
Intel64 Family 6 Model 42 Stepping 7, GenuineIntel
A+
 

YANN-56

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

Bonjour aux participants, et à ceux qui passeront par ici,

Quant à ceux-là; j'ai trop peur d'en oublier en les citant.
Quant à ceux-ci; ils vont enrichir leur bibliothèque, et j'en suis très heureux!

Ma question est résolue pour ce qui est du nom de l'OS: XP ou SEVEN; voire autres.
Je vais donc pouvoir adapter mes recherches par " GetDetailsOf" et palier les différences d'index.

J'ai levé, au bénéfice des réponses, un autre souci avec mon code masquant la bande bleue des USF,
qui ne fonctionne qu'avec OFFICE en 32 bits. (Je ne pense pas que cela soit lié avec l'OS)

Je ne peux pas tester l'adaptation de mon code qui est proposée par David 84, car je n'ai que 2003 en 32.
(De plus, mon correspondant pouvant regarder si cela fonctionne avec sa version en 64 Bits est absent)

Je ne suis pas à la hauteur de tout comprendre, et loin de là!
Mais voici joint ce dont je me suis servi pour récupérer le nom de l'ordi de l'utilisateur.
(Il était nécessaire d'octroyer ou non le droit de modifier une base de données sur le serveur son l'entreprise)

Dans cet exemple dont je suis incapable d'analyser tous les résultats. (Voir en Feuille2)
A noter que j'ai remplacé par des "x" les éléments à ne pas trop divulguer.

Est-il possible de savoir si la version "OFFICE" est en 32 ou 64 Bits?

Ce qui me permettrait d'adapter le code de masquage de la bande bleue des USF suivant cette donnée.

Pardon d'avoir du mal à formuler, et grand Merci à vous pour votre regard.

Amicalement,

Yann
 

Pièces jointes

  • ORDI.xls
    29 KB · Affichages: 67

Staple1600

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

Bonsoir à tous

david84
Je parlais de cette boucle (voir le message #33 de Lone Wolf, ainsi que la PJ de M13 si je me souviens bien ou apparut la piste de WMI)
Code:
For Each objItem In colItems
        getOS = "Vous utilisez:" & vbCr & vbCr & _
            "Système d'Exploitation: " & objItem.Caption & vbCr & vbCr & _
            "Version:" & " " & objItem.version & " " & objItem.CSDVersion & vbCr & _
            Application.OperatingSystem
    Next objItem

Et comme je le précisais c'est juste pour le fun d'éviter la boucle.
(Mais je suis pas sure que ce soit possible ou alors je m'y prends mal, car je sèche toujours)
 
Dernière édition:

david84

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

Re

Mais voici joint ce dont je me suis servi pour récupérer le nom de l'ordi de l'utilisateur.
A priori, pas besoin de boucle pour cela :
Code:
Sub test()
MsgBox Environ("username")
End Sub

Est-il possible de savoir si la version "OFFICE" est en 32 ou 64 Bits?
Là, nous ne parlons que de la version 2010 d'Office (les autres sont toutes en 32 bits, seul Office 2010 te donne le choix entre une installation en 32 ou en 64 bits).

Si tu demandes j'en déduis que ton code va tourner sur Office 2010 : est-ce le cas ?

Si oui, dans quel but veux tu utiliser cette information ?
Est-ce par ce que tu veux que ton code puisse tourner sur différentes versions d'Office (2003, 2007, 2010 32 et 64 bits) ou pour l'empêcher de tourner sur certaines versions et pas d'autres ?

Utilises-tu oui ou non des API Windows dans ton code ?
A+
 

Staple1600

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

Re

David84:
Avec WMI, on peut savoir si OS est en 32 ou 64 bits
(voir à ce sujets les nombreux scripts VBS disponibles sur le net)
Pour ce qui concerne l'évitement de la boucle dans la proc précitée, tu vois comment faire ?

EDITION: une exemple succinct
Code:
Sub test()
Dim objWMIService, colSettings
Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
Set colSettings = objWMIService.ExecQuery("SELECT * FROM Win32_Processor")
For Each objProcessor In colSettings
MsgBox  objProcessor.AddressWidth & "-bit"
Next
End Sub
 
Dernière édition:

Staple1600

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

Re

EDITION: Pour ceux qui aiment éviter les boucles ;)
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

En passant par la "cave"
Code:
Sub test2() 'source:[URL="http://www.blogger.com/profile/16715160344457148874"]Blogger: Profil d'utilisateur : Richard Binning[/URL]
On Error Resume Next
Dim WshShell
Dim OsType
Set WshShell = CreateObject("WScript.Shell")
OsType = WshShell.RegRead("HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\PROCESSOR_ARCHITECTURE")
If OsType = "x86" Then
MsgBox "Windows 32bit system detected"
ElseIf OsType = "AMD64" Then
MsgBox "Windows 64bit system detected"
End If
End Sub
 
Dernière édition:

Staple1600

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

Bonsoir Lone-Wolf, re à tous


Euh non c'est pas Jean-Claude mais moi qui ait écrit cela ;) (D'ailleurs JCGL l'indiquait lui-même dans son message ... cf l'Agrafe ;) )
Mais je remercie JCGL d'avoir pris le temps de tester cette petite macro (même si il semble - sauf erreur - qu'il n'ait pas ouvert sa fenêtre ;) )

PS: Lone-Wolf: Le dernier code proposé donne quoi chez toi ?
 
Dernière édition:

Lone-wolf

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

Re,

Toutes mes excuses alors, mais quand même mort de rire, je te jure.

Staple, si dans le Msgbox on écrit "Windows 64bit system detected", le reste du code ne sert à rien. :D ;)


Amicalement
Lone-wolf
 
Dernière édition:

Staple1600

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

Re


Et que donne le dernier code ? c'est celui-ci.
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
PS: Tu as remarqué que l'avant-dernier code n'est pas de mon cru comme indiqué dans les commentaires.
 
Dernière édition:

Staple1600

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

Re


Donc ton OS est en 64 bits ou en 32 bits ?

Car c'est bien ce que cherche désormais à faire YANN-56, non ?

Re,
Staple, si dans le Msgbox on écrit "Windows 64bit system detected", le reste du code ne sert à rien. :D ;)
Amicalement
Lone-wolf
Si c'est "Windows 64bit system detected" qui s'affiche, il n'y a pas de reste du code après non ???
Juste un :
End If
End Sub
 
Dernière édition:

Lone-wolf

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

Tu as mal compris Stapple,

si tu met MsgBox Application.OperatingSystem , cela donne 32bit. Ceci est un exemple.



Sans titre 1.gif

Comme je l'ai dit et montré, je suis sous 64bits.


Amicalement
Lone-wolf
 
Dernière édition:

Staple1600

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

Tu m'as mal compris toit aussi lol
Je parlais de cette macro.
Code:
Sub test2()  'source:[URL="http://www.blogger.com/profile/16715160344457148874"]Blogger:  Profil d'utilisateur : Richard Binning[/URL]
On Error Resume Next
Dim WshShell
Dim OsType
Set WshShell = CreateObject("WScript.Shell")
OsType = WshShell.RegRead("HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\PROCESSOR_ARCHITECTURE")
If OsType = "x86" Then
MsgBox "Windows 32bit system detected"
ElseIf OsType = "AMD64" Then
MsgBox "Windows 64bit system detected"
End If
End Sub

Ou nulle part il est question de Application.OperatingSystem
 

fhoest

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

Re
quelqu'un sous Vista ou Seven peut-il tester le code ci-dessous, svp


Code:
Sub Test4VistaSeven()
Dim Obj, oStr
Set Obj = GetObject("winmgmts:\\.\root\cimv2").InstancesOf("Win32_OperatingSystem")
Set oStr = Obj.ItemIndex(0)
MsgBox oStr.Description
End Sub

bonsoir tous,
sous vista j'obtiens le nom voir imageRegarde la pièce jointe 846833
A+
 

Pièces jointes

  • staples picture.jpg
    staples picture.jpg
    18.4 KB · Affichages: 79

Statistiques des forums

Discussions
311 725
Messages
2 081 944
Membres
101 849
dernier inscrit
florentMIG