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
 

job75

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

Re Yann,

Que veut dire: Application.Volatile ? ...

Regarde l'aide VBA sur Volatile.

Avec cette instruction la fonction, dans la feuille de calcul, se comporte comme la fonction MAINTENANT.

Elle se recalcule chaque fois que la feuille est recalculée, en particulier à l'ouverture du fichier.

Sans cette instruction (voir fichier de JCGL) voici ce qui se passe :

- quand JC a créé son fichier, il était sous Win Seven, ce qui apparaît donc dans la cellule

- quand j'ouvre son fichier sur mon ordi avec Win XP la cellule n'est pas modifiée

- il faut que je la revalide pour qu'elle indique enfin Win XP.

A+
 

Lone-wolf

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

Re Job,

ce matin, je suis tombé sur un site où l'on traitait su même sujet, une des participants à mis un code de Frédéric Sigonneau, qui permettait d'avoir ces informations et bien plus.

Ors, le code que tu à proposé et celui de Yann n'affichent que Windows Seven.
C'est pour celà que j'ai fais la proposition. Comme d'habitude tu part au quart de tour sans montrer la moindre indulgence, la moindre sagesse ou intelligence. L'homme est instruit oui, mais à des milliards d'années lumière intelligent. Des milliards comme toi en sont la preuve vivante, il n'y a quà voir ce qui se passe dans ce bas monde. Je suis là pour apprendre mon grand ne l'oublie jamais et ça sa fait de moi quelqu'un de plus intelligent que toi.
 
Dernière édition:

YANN-56

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

Merci Job,
je pense avoir compris l'avantage du processus.
Mes tests vont certainement me permettent d'assimiler........... A moi de bosser!
Je joins le résultat de mon regard dans le Fichier joint où j'ai ajouté
par le bouton la récupération de la version Windows suivant le code de JC
(Il en serait de même à l'initialisation de l'USF, voire dans "Workbook_Open"... Sauf Erreur)

Je vais en faire de même avec ta suggestion.

Mon but est d'écrire la soluce la plus accessible, car ce n'est pas que pour moi,
mais pour un p'tit jeune sympa qui devra, un jour, se débrouiller seul avec mon projet d'appli.

Amicalement avec mes respects pour ce que tu sais faire,

Je suis bien heureux de voir la richesse qu'a engendré ma question anodine.

Amicalement,

Yann

Vlan!!! Voici que kIki29 propose un lien à ce sujet!!!!! :)
Ma tête commence à bouillir comme une lessiveuse!
Vous voulez la mort de pépé ou quoi??? :mad:

Lone-wolf:
ce matin, je suis tombé sur un site où l'on traitait su même sujet, une des participants à mis un code de Frédéric Sigonneau, qui permettait d'avoir ces informations et bien plus.

Il aurait peut-être été bien que tu offres aux participants et visiteurs l'adresse de ce dont tu parles.
 

Pièces jointes

  • Copie de Version Windows Fonction.xls
    32.5 KB · Affichages: 120
Dernière édition:

YANN-56

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

Bonsoir MJ13:), Lone-wolf:), et à ceux qui suivent ces échanges enrichissants,

Je viens de tester le code de MJ13 et la suggestion de Lone-Wolf.

Je suis étonné par si peu de lignes! Et l'efficacité avérée.
L'analyse pour en extirper, par la suite, la version utilisée sera des plus simplissimes.


Je ne sais que dire, sinon encore "Merci"......

N'en croyant pas mes yeux et ma compréhension, il faut que je teste encore!!!

A plus tard,

Yann
 

Lone-wolf

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

Je suis ravi que ton projet progresse à grand pas Yann. Good Luck!

MJ: je ne comprends pas pourquoi il m'affiche 32Bits alors que j'en ai 64. Une idée?


A+ :cool:

Amicalement
Lone-wolf
 

YANN-56

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

Re Lone-wolf

Ta dernière remarque m'intéresse au plus haut point.

J'utilise ce code pour masquer la bande bleue ou seulement Croix dans mes USF:

Code:
Declare Function GetWindowLongA Lib "user32" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
Declare Function SetWindowLongA Lib "user32" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Declare Function FindWindowA Lib "user32" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Declare Function DrawMenuBar Lib "user32" (ByVal hWnd As Long) As Long

Sub CACHER_BANDE_BLEUE(USF As UserForm)
Dim hWnd&
hWnd = FindWindowA("Thunder" & IIf(Application.Version Like "8*", "X", "D") & "Frame", USF.Caption)
SetWindowLongA hWnd, -16, GetWindowLongA(hWnd, -16) And Not &HC00000: DrawMenuBar hWnd
End Sub

Sub CACHER_CROIX(USF As UserForm) ' Ceci pourrait servir plus tard, et laisser le droit de déplacer l'USF
Dim hWnd&
hWnd = FindWindowA("Thunder" & IIf(Application.Version Like "8*", "X", "D") & "Frame", USF.Caption)
SetWindowLongA hWnd, -16, GetWindowLongA(hWnd, -16) And &HFFF7FFFF
End Sub

Mais ceci ne marche pas en 64 Bits et plante l'application!:mad:

Je pensais donc utiliser le code précédent pour savoir si oui ou non je pouvais appeler le module ci-dessus
(32 => Oui; 64 => Non) ....... Car je n'ai toujours pas trouvé la correspondance pour les versions en 64 Bits)

Super ce fil riche en enseignements!


A plus tard,

Yann
 

david84

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

Bonsoir,
pour récupérer la version et le type de processeur, possibilité d'utiliser une macro Excel4 :
Code:
Sub Test_version()
Dim Version As String
Version = Application.ExecuteExcel4Macro("get.workspace(1)")
MsgBox Version
End Sub
Merci à Gérard pour ce partage de connaissance:).
A+
 

YANN-56

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

Re David:), (Gérard.... Heu, je n'aurai que la politesse de le saluer)

La housse du NetBook a fondu,
les ventilos de l'ordi hurlent comme une tempête sur la côte sauvage de Quiberon.
Je ne cesse des passer l'aspi pour mes cheveux qui tombent.

Au final, je constate avec plaisir que cette recherche est à la taille d'un timbre poste,
alors qu'il me fallait auparavant deux pages de mon bloc-notes.

Bigre de brigue; que j'ai bien fait de poser cette question!!!

Que de gens admirables ici à qui je dis Merci.

Avec moult reconnaissances,

Yann

P.S. Le tri ne va être de la tarte; mais c'est mon affaire à faire!
Diantre que science!!!
 

Brigitte

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

Bonsoir,

Une petite intrusion pour dire à Yves le plaisir que j'ai de voir qu'il est revenu parmi nous... et semble t'il en pleine forme.
Bienvenue, et ... sois sage, hein !
Bises
 

Lone-wolf

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

Bonsoir Brigitte...Nielsen, david...hasseloff, heeeeuuu!! :confused::confused: Ou je m'éléphante!! Pardon... je me trompe. ;) :D

C'est pas de bol david, le message m'affiche toujours 32Bits.


A+ :cool:

Amicalement
Lone-wolf
 

david84

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

Re

Teste ton code modifié et vois ce que cela donne:

Code:
Declare PtrSafe Function GetWindowLongA Lib "user32" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
Declare PtrSafe Function SetWindowLongA Lib "user32" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Declare PtrSafe Function FindWindowA Lib "user32" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Declare PtrSafe Function DrawMenuBar Lib "user32" (ByVal hWnd As Long) As Long

Sub CACHER_BANDE_BLEUE(USF As UserForm)
Dim hWnd&
hWnd = FindWindowA("Thunder" & IIf(Application.Version Like "8*", "X", "D") & "Frame", USF.Caption)
SetWindowLongA hWnd, -16, GetWindowLongA(hWnd, -16) And Not &HC00000: DrawMenuBar hWnd
End Sub

Sub CACHER_CROIX(USF As UserForm) ' Ceci pourrait servir plus tard, et laisser le droit de déplacer l'USF
Dim hWnd&
hWnd = FindWindowA("Thunder" & IIf(Application.Version Like "8*", "X", "D") & "Frame", USF.Caption)
SetWindowLongA hWnd, -16, GetWindowLongA(hWnd, -16) And &HFFF7FFFF
End Sub

Je pensais donc utiliser le code précédent pour savoir si oui ou non je pouvais appeler le module ci-dessus
(32 => Oui; 64 => Non) ....... Car je n'ai toujours pas trouvé la correspondance pour les versions en 64 Bits)
Pour rendre compatible un code pour les versions 32 et 64 bit, regarde la réponse que j'avais faite sur ce fil et le lien que j'avais indiqué :
A+
Edit :
C'est pas de bol david, le message m'affiche toujours 32Bits.
Si tu parles de la macro Excel4, je suis en 64 bit et c'est ce que le résultat me renvoie.
Es-tu vraiment sûr d'être en 64 bit ? Par défaut, l'installation d'Office 2010 est faite en 32 bit.
 
Dernière édition: