Merci NICOLAS, mais ta capture d'écran m'interpelle. Est-ce vraiment là un userform en mode aero activé ?
Version imprimable
Merci NICOLAS, mais ta capture d'écran m'interpelle. Est-ce vraiment là un userform en mode aero activé ?
J'avais un doute du coup, mais le test fait précedement était activé
et désactivé ça donne ça
apparence identique sur l'affichageCitation:
curseur tout contre handle obtenu = 856290
curseur sur le userform apparent handle obtenu = 7603792
FINDWINDOWS handle obtenu = 4590018
Curseur dans la barre de titre handle obtenu = 4590018
@Nicolas :
curseur tout contre handle obtenu = 856290 ==> hwnd de l'application qui est derrière l'userform
curseur sur le userform apparent handle obtenu = 7603792 ==> hwnd de la partie de l'userform qui réagit aux événement Mouse_Move (par exemple)
FINDWINDOWS handle obtenu = 4590018 ==> hwnd de l'usf
Curseur dans la barre de titre handle obtenu = 4590018 ==> hwnd de la bordure
bonjour
je l'ai dis hier que findwindow ramenait le même que windowfrompoint(x,y) sur la caption
alors comme windowfrompoint dans un do loop a tâtonner me permet de trouver la différence
essayez avec getwindowrect pour déterminer le rect.left et rect.top ( quoi que il me semble déjà avoir essayé )
après si il faut vraiment et que l'on a bien 2 handle (caption,Inside)
on peut faire un getwindowrect sur Inside
avec getsystemmetric 46 si je me souviens bien on a le borderwidth que l'on ajoute et le comparer avec la position qu'il devrait avoir
mais malheureusement findwindowhex sur handle userform ou handle trouver par caption ne ramène rien ;0 nada
c'est balo!!!
Désolé, Patrick, mais ce que tu dis n'as absolument rien à voir, si l'on ne fait pas le test manuellement et proprement.
Bon.
Après ma siestita, je proposerai un dernier test, fait encore différemment et --->>
- s'il montre que l'image crée par directx est une fenêtre à part entère -->> sauvés
- s'il montre au contraire qu'il ne s'agit que d'une image et non d'une fenêtre à part entère --->> terminé : il n'y aura AUCUNE solution.
re
Pièce jointe 293841Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Private Declare Function WindowFromPoint Lib "user32" (ByVal xpoint As Long, ByVal ypoint As Long) As Long Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT) As Long Type RECT: Left As Long: Top As Long: Right As Long: Bottom As Long: End Type Sub test_userform_replace2222() Dim rect1 As RECT, rect1bis As RECT, rect2 As RECT 'With CreateObject("WScript.Shell"): ppx = .RegRead("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\ThemeManager\LastLoadedDPI") / 72: End With With CreateObject("WScript.Shell"): ppx = .RegRead("HKEY_CURRENT_USER\Control Panel\Desktop\WindowMetrics\AppliedDPI") / 72: End With With ActiveWindow X = (.ActivePane.PointsToScreenPixelsX([D3].Left)) / ppx Y = (.ActivePane.PointsToScreenPixelsY([D3].Top)) / ppx With UserForm1: .Show 0: .Left = X: .Top = Y: handle1 = FindWindow(vbNullString, UserForm1.Caption): handle1bis = handle1 handle1bis = WindowFromPoint(X * ppx - 1, Y * ppx - 1) handleinside = WindowFromPoint(X + 10, Y + 10) End With End With GetWindowRect handle1, rect1 GetWindowRect handle1bis, rect1bis GetWindowRect handleinside, rect2 texte = "handle (userform par findwindow) " & handle1 & vbCrLf & "handle inside " & handleinside & vbCrLf & "handle1(userform par windowfrompoint " & handle1bis texte = texte & vbCrLf & "----------------------------" & vbCrLf & "avec api getwindowrect" texte = texte & vbCrLf & "left handle (userform)par findwindow " & rect1.Left & vbCrLf & "left handle (userform)par windowfrompoint " & rect1bis.Left & vbCrLf & _ "left handleinside " & rect2.Left & vbCrLf & "position left cellule D3 par pointstoscreenpixel " & X * ppx MsgBox texte End Sub
avec les api a part le do loop avec windowfrompoint il n'y a aucune solution
a part mon switch pas élégant oui mais fonctionne
si j'ai posé la question au tout début a savoir"y a t il un moyen de remplacer mon switch par api ou autre" c'est que j'avais déjà essayé plusieurs api qui me donnaient pareil que point toscreenpixels qui contrairement a ce que tu a cru longtemps est juste
j'ai juste poser la question au cas ou j'aurais éventuellement zapper une api ou autre qui m'aurais échappé
Re-désolé, patricktoulon, mais :
La détermination de la nature de ce que ce (fenêtre à part entière ou simple image) que l'on a à l'écran (avec aero actvé) n'a absolument rien à voir avec l'emplacement du userform (ou de son image), que cet emplacement soit une cellule de la feuille ou sur n'importe quoi d'autre !
Mélanger les genres ne sert ici rigoureusement à rien, sinon à s'égarer inutilement.
a bon!!?
et que fait ton depuis un moment avec windowsfrompoint ? qui a moins que nous ai trouvé une autre surprise est le seul a pouvoir nous donner ce décalage d'image dans un do loop
les api donnent la même chose que pointstoscreenpixels voila tout
que ce soit par le rectangle par setwindowpos
je cherche un peu dans GDI mais perso j'ai peu d'espoir
par contre j'ai fait une découverte avec pointstoscreenpixels je vais pas trop en parler je veux savoir de quoi il retourne
mais sache déjà que pour 2007 j'ai trouvé le moyen de calculer le coefficient exact avec pointstoscreenpixels sans passer ni par les api ni par le registre et pour tout les zooms
j'avoue y être allé a taton mais quand j'ai vu le chiffre final woahw!!!! je me suis dis puré je connais ce nombre toi aussi ainsi que tout le monde ayant participé a cette discussion d'ailleurs
Ouais ... ?
Bon.
J'ai peut-être une bonne nouvelle à la suite d'une petite découverte faite sur une fenêtre de userform sans aero (sous xp).
Il se peut que les relevés faits jusqu'à présent aient été faussés par la forme même du userform.
Je reviens plus tard (je fais une série de tests).
a bon!? maintenant si il est plutôt rectangle que carré ca change la donne ?
nan!!... je plaisante
de toute façon je suis persuadé que si et quand on trouvera ce sera un truc tout bête
Non, ce n'est pas cet aspect-là de la forme, qui peut avoir faussé nos tests antérieurs ;)Citation:
si il est plutôt rectangle que carré ca change la donne ?
A propos de ton "correctif", Patrick : j'espère qu'il n'est pas un pourcentage de la hauteur de la barre de titre (hauteur calculée en faisant la différence du height et du insideheight). Ce ne serait pas une bonne idée car dépendante de la création éventuelle par microsoft de nouveaux thèmes "débordant" différemment.
je me suis ampétrer dans des calculs et tous me ramène a ca sans execption
ma résolution est de 1920 en horizontal on le trouve avec les api et le registre ca il n'y a pas de soucis
mais qu'and est il vraiment ???
en fait on constate que si on va plus loin avec cetsystemmetric on trouve la largeur et hauteur max en pixel de votre écran et donc chez moi c'est 1938
maintenant faisons un calcul simple
1920-1938=-18
j'ai donc 18 pixel en moins dans ma résolution
que je vais divisé par mon coeff ptTopx (1.666.....)j'obtient donc -10.xxxxxxxxxxx
que je divise par 2 histoire de ne pas rendre les coté de mon écran jaloux hein !!
qu'est que j'obtiens
-5.xxxxxxxxxxx
que j'ajoute en positif a pointstoscreenpixels(cellule.left)
et j'ai mon userform en place
maintenant la question qui se pose
serait ce parce que le calcul se fait sur la vrai résolution et non celle adapter sur Windows
ou le calcul se fait sur la résolution Windows mais l'affichage se fait avec la vrai résolution
to be or not to be that's the question
Je pense personnellement qu'il ne s'agit là que d'une coïncidence, Patrick.Citation:
maintenant la question qui se pose
serait ce parce que le calcul se fait sur la vrai résolution et non celle adapter sur Windows
je sais pas mais c'est troublant le fait que le resultat de 1938/1920 que j'applique en division en pointstoscreenpixelx(cellule.left) donne le même résultat soit ajoute les 5 qui manque
Et si tu veux en avoir le coeur net : modifie donc la configuration en choisissant une autre résolution, de préférence avec un rapport Largeur/hauteur en pixels très différent.
Et reprends ensuite en modifiant également le dpi (en le mettant par exemple à 96 et sans oublier qu'il ne sera alors réellement pris en compte, lui, qu'après un redémarrage)
en attendant voici un pdf de toutes les constantes que j'utilise dans mes codes
regarde aussi le 32 ,60
en fait on a tout ici
Merci, mais j'ai (liste personnelle) ce qu'il faut en bien plus complet et par catégories ;)
Il ne me manque que ce qui "colle" avec certains composants de Excel/VBA (listbox, combobox, textbox, etc...) qui sont très différents de ceux de VB6 et autres outils de développement.
Revenons plutôt à nos moutons : As-tu fait des tests après modification des paramètres de configuration ?
et bien non ca correspond toujours j'ai toujours mes 18pixels
laisse moi le temps de revenir a la normal c'est impraticable sur mon ecrant en 1080*768:lol:
une horreur le machin
en resolution 1600*900
en resolution 1280*720Citation:
getsystemmetrics (0) 1600
getsystemmetrics (1) 900
getsystemmetrics (2) 21
getsystemmetrics (3) 21
getsystemmetrics (4) 27
getsystemmetrics (5) 1
getsystemmetrics (6) 1
getsystemmetrics (7) 3
getsystemmetrics (8) 3
getsystemmetrics (9) 21
getsystemmetrics (10) 21
getsystemmetrics (11) 40
getsystemmetrics (12) 40
getsystemmetrics (13) 32
getsystemmetrics (14) 32
getsystemmetrics (15) 25
getsystemmetrics (16) 1600
getsystemmetrics (17) 839
getsystemmetrics (18) 0
getsystemmetrics (19) 1
getsystemmetrics (20) 21
getsystemmetrics (21) 21
getsystemmetrics (22) 0
getsystemmetrics (23) 0
getsystemmetrics (24) 0
getsystemmetrics (25) 0
getsystemmetrics (26) 0
getsystemmetrics (27) 0
getsystemmetrics (28) 158
getsystemmetrics (29) 45
getsystemmetrics (30) 43
getsystemmetrics (31) 26
getsystemmetrics (32) 9
getsystemmetrics (33) 9
getsystemmetrics (34) 158
getsystemmetrics (35) 45
getsystemmetrics (36) 4
getsystemmetrics (37) 4
getsystemmetrics (38) 116
getsystemmetrics (39) 94
getsystemmetrics (40) 0
getsystemmetrics (41) 0
getsystemmetrics (42) 0
getsystemmetrics (43) 5
getsystemmetrics (44) 0
getsystemmetrics (45) 2
getsystemmetrics (46) 2
getsystemmetrics (47) 160
getsystemmetrics (48) 32
getsystemmetrics (49) 20
getsystemmetrics (50) 20
getsystemmetrics (51) 22
getsystemmetrics (52) 21
getsystemmetrics (53) 21
getsystemmetrics (54) 24
getsystemmetrics (55) 24
getsystemmetrics (56) 8
getsystemmetrics (57) 160
getsystemmetrics (58) 32
getsystemmetrics (59) 1612
getsystemmetrics (60) 912
getsystemmetrics (61) 1618
getsystemmetrics (62) 884
getsystemmetrics (63) 3
getsystemmetrics (64) 0
getsystemmetrics (65) 0
getsystemmetrics (66) 0
getsystemmetrics (67) 0
getsystemmetrics (68) 4
getsystemmetrics (69) 4
getsystemmetrics (70) 0
getsystemmetrics (71) 19
getsystemmetrics (72) 19
getsystemmetrics (73) 0
getsystemmetrics (74) 0
getsystemmetrics (75) 1
getsystemmetrics (76) 0
getsystemmetrics (77) 0
getsystemmetrics (78) 1600
getsystemmetrics (79) 900
getsystemmetrics (80) 1
getsystemmetrics (81) 1
getsystemmetrics (82) 1
getsystemmetrics (83) 1
getsystemmetrics (84) 1
getsystemmetrics (85) 4
getsystemmetrics (86) 0
getsystemmetrics (87) 1
getsystemmetrics (88) 0
getsystemmetrics (89) 0
getsystemmetrics (90) 0
getsystemmetrics (91) 0
getsystemmetrics (92) 0
getsystemmetrics (93) 640
getsystemmetrics (94) 0
getsystemmetrics (95) 1
getsystemmetrics (96) 0
getsystemmetrics (97) 0
getsystemmetrics (98) 0
getsystemmetrics (99) 0
getsystemmetrics (100) 0
quelque chose me dit qu'il y a a faire avec caCitation:
getsystemmetrics (0) 1280
getsystemmetrics (1) 720
getsystemmetrics (2) 21
getsystemmetrics (3) 21
getsystemmetrics (4) 27
getsystemmetrics (5) 1
getsystemmetrics (6) 1
getsystemmetrics (7) 3
getsystemmetrics (8) 3
getsystemmetrics (9) 21
getsystemmetrics (10) 21
getsystemmetrics (11) 40
getsystemmetrics (12) 40
getsystemmetrics (13) 32
getsystemmetrics (14) 32
getsystemmetrics (15) 25
getsystemmetrics (16) 1280
getsystemmetrics (17) 659
getsystemmetrics (18) 0
getsystemmetrics (19) 1
getsystemmetrics (20) 21
getsystemmetrics (21) 21
getsystemmetrics (22) 0
getsystemmetrics (23) 0
getsystemmetrics (24) 0
getsystemmetrics (25) 0
getsystemmetrics (26) 0
getsystemmetrics (27) 0
getsystemmetrics (28) 158
getsystemmetrics (29) 45
getsystemmetrics (30) 43
getsystemmetrics (31) 26
getsystemmetrics (32) 9
getsystemmetrics (33) 9
getsystemmetrics (34) 158
getsystemmetrics (35) 45
getsystemmetrics (36) 4
getsystemmetrics (37) 4
getsystemmetrics (38) 116
getsystemmetrics (39) 94
getsystemmetrics (40) 0
getsystemmetrics (41) 0
getsystemmetrics (42) 0
getsystemmetrics (43) 5
getsystemmetrics (44) 0
getsystemmetrics (45) 2
getsystemmetrics (46) 2
getsystemmetrics (47) 160
getsystemmetrics (48) 32
getsystemmetrics (49) 20
getsystemmetrics (50) 20
getsystemmetrics (51) 22
getsystemmetrics (52) 21
getsystemmetrics (53) 21
getsystemmetrics (54) 24
getsystemmetrics (55) 24
getsystemmetrics (56) 8
getsystemmetrics (57) 160
getsystemmetrics (58) 32
getsystemmetrics (59) 1292
getsystemmetrics (60) 732
getsystemmetrics (61) 1298
getsystemmetrics (62) 704
getsystemmetrics (63) 3
getsystemmetrics (64) 0
getsystemmetrics (65) 0
getsystemmetrics (66) 0
getsystemmetrics (67) 0
getsystemmetrics (68) 4
getsystemmetrics (69) 4
getsystemmetrics (70) 0
getsystemmetrics (71) 19
getsystemmetrics (72) 19
getsystemmetrics (73) 0
getsystemmetrics (74) 0
getsystemmetrics (75) 1
getsystemmetrics (76) 0
getsystemmetrics (77) 0
getsystemmetrics (78) 1280
getsystemmetrics (79) 720
getsystemmetrics (80) 1
getsystemmetrics (81) 1
getsystemmetrics (82) 1
getsystemmetrics (83) 1
getsystemmetrics (84) 1
getsystemmetrics (85) 4
getsystemmetrics (86) 0
getsystemmetrics (87) 1
getsystemmetrics (88) 0
getsystemmetrics (89) 0
getsystemmetrics (90) 0
getsystemmetrics (91) 0
getsystemmetrics (92) 0
getsystemmetrics (93) 640
getsystemmetrics (94) 0
getsystemmetrics (95) 1
getsystemmetrics (96) 0
getsystemmetrics (97) 0
getsystemmetrics (98) 0
getsystemmetrics (99) 0
getsystemmetrics (100) 0
je suis curieux de voir ce que ca donne sur ton pc
Code:
1
2
3
4
5
6 Sub testmetrics() For i = 0 To 100 Debug.Print "getsystemmetrics (" & i & ") " & GetSystemMetrics(i) Next End Sub
Alors oublie cette coincidence.
pas tout a fait mille excuses c'est 12 dans la 2 eme
Je vais te faire une confession, ami Patrick.
Il y a des décennies (hélas) un TRES ancien amour de jeunesse ne cessait de me dire qu'il était troublant qu'elle trouvât toujours sur la plage une quantité impressionnante de galets en forme de coeur, alors que tel n'était pas le cas des autres ...
Je n'ai jamais osé lui dire que ce qui était troublant et la cause de ces trouvailles était qu'elle s'efforçait avec acharnement de trouver ces galets-là, tandis que les autres s'y intéressaient moins qu'elle.
A chercher avec acharnement des "causes" et des "choses", on fini toujours par trouver "troublantes" une infinité d'apparences diverses. ;)
En toute amitié. Et ne divulgue pas cette confession ... :frenchy:
oui c'est certain mais il y a une raison ca c'est sur et je trouverais
petit a petit a force d'éliminer les coïncidences et calcul foireux
Bon.
Je reviens avec la lueur (une toute petite lueur) d'espoir dont j'ai parlé dans mon message #769
En faisant divers essais (mais avec XP et Office 2007) j'ai découvert que l'arrondi des angles d'une fenêtre (celle de l'userform) pouvait être responsable de résultats faussés.
Pour être clair, lorsque l'on place le curseur au top et left de la fenêtre (XP et donc sans aero), WindowFromPoint ne relève pas le hwnd de la fenêtre, mais celle du conteneur (quel qu'il soit) de cette fenêtre (il "tape" donc ailleurs que sur la barre de titre).
L'essai suivant a été fructueux et probant avec XP et Office 2007.
Je me demande ce qu'il en est avec une configuration aero (et c'est là mon dernier espoir).
Quelqu'un doté de aero (activé) peut-il :
1) faire ce test :
sur une feuille : un bouton de commande commandbutton1 et une textbox textbox1 (sur la feuille, hein ..)
un userform userform2 avec sa propriété StartupPosition = 0 (manual)
ce code sur le module de la feuille :
2) faire un copier collé du texte qui s'affiche in fine dans la textbox et me le montrer ici.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 Option Explicit Private Declare Function WindowFromPoint Lib "user32" (ByVal xpoint As Long, ByVal ypoint As Long) As Long Private Declare Function SetCursorPos Lib "user32" (ByVal X As Long, ByVal Y As Long) As Long Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Private Sub CommandButton1_Click() Dim pixelstopoints As Double, objWSH As Object, affiche As String, mhwnd As Long, pointstopixels As Double Set objWSH = CreateObject("WScript.Shell") pointstopixels = objWSH.RegRead("HKEY_CURRENT_USER\Control Panel\Desktop\WindowMetrics\AppliedDPI") / 72 With UserForm2 .Show .Move 200, 200, 300, 200 affiche = "" mhwnd = FindWindow(vbNullString, .Caption) affiche = "0 : " & WindowFromPoint(.Left * pointstopixels, .Top * pointstopixels) SetCursorPos .Left * pointstopixels, .Top * pointstopixels MsgBox "le curseur ""tape"" dans le vide du fait de l'arrondi de la forme" affiche = affiche & vbCrLf & "1 : " & WindowFromPoint((.Left + 1) * pointstopixels, (.Top + 1) * pointstopixels) SetCursorPos (.Left + 1) * pointstopixels, (.Top + 1) * pointstopixels MsgBox "le curseur n'est toujours pas vraiment dans la barre de titre" affiche = affiche & vbCrLf & "6 : " & WindowFromPoint((.Left + 6) * pointstopixels, (.Top + 6) * pointstopixels) SetCursorPos (.Left + 6) * pointstopixels, (.Top + 6) * pointstopixels MsgBox "Ah, là, on est maintenant certain qu'il est dans la barre de titre et que windowfrompoint traitera un point adéquat" affiche = affiche & vbCrLf & "le hwnd du userform lui-même est quant à lui " & mhwnd End With With TextBox1 .Top = 0 .Left = 500 .Width = 300 .Height = 100 .MultiLine = True .Text = affiche End With End Sub
Ces résultats m'en diront beaucoup.
Merci à ceux qui m'en communiqueront le résultat
bon, je me suis pas planté cette fois mais j'ai une erreur sur le move
Pièce jointe 293969
Si ton erreur est sur le .move, c'est peut-être que ta version n'est pas (XP l'est) capable de l'exécuter directement.
Décompose-le alors ainsi :
remplace
parCode:.Move 200, 200, 300, 200
par ailleurs : en combien de bits est ta version Office ?Code:
1
2
3
4 .left = 200 .top = 200 .width = 300 .height = 200
Si en 64 bits les déclarations des fonctions de l'Api sont peut-être à faire en utilisant ptrsafe (tu devrais trouver des exemple de ce type de déclaration sur ce forum)
Si en 32 bits, elles sont correctes telles quelles
EDIT : lecture --->>
https://msdn.microsoft.com/fr-fr/lib.../gg278832.aspx
c'est bien w10 64 bits excel 2016 32 bits
Citation:
0 : 1379800
1 : 1379800
6 : 1379800
le hwnd du userform lui-même est quant à lui 1184086
et la sur w10 64 bits excel 2013 64 bits
Citation:
0 : 4457078
1 : 198064
6 : 198064
le hwnd du userform lui-même est quant à lui 787662
Merci Nicolas
Les résultats que tu as eus augmentent mon espoir, dont la lueur est maintenant moins faible.
Je vais revenir dans la matinée avec un petit rajout : voir ce qui se passe si l'on veut déplacer par code.
Si le déplacement se fait, on est sorti de l'auberge. Dans le cas contraire, c'est définitivement fichu
A plus
Bonjour unparia
le problème avec le retour de Nicolas c'est que la config "image" est très proche de XP en terme de bordure etc....sans les coins arrondis . a la différence de W 7
voici une capture de ton code post 783 testé tel quel
les messages donnent des réponses fausses du début a la fin en fait on est toujours dans la caption
Pièce jointe 294024
Bonjour Patrick
Ton retour diminue en effet la lueur d'espoir, à moins que ....
A moins que quoi ?
- que d'une part sur ta machine, le userform lui-même soit, hors aero et rendu "plat", sans arrondis
- et que d'autre part la bordure de l' "image" aero de la barre de titre corresponde à celle de la bordure réelle de l'userform.
Mais on en aura le coeur net lorsque j'aurai complété le code par une tentative de positionnement sur la base systématiquement prise et seule prise du résultat "6", sans jamais considérer les autres résultats, qu'ils soient ou non identiques.
Si ce dernier code parvient aux fins souhaités : -->> bingo. S'il n'y parvient pas : ce sera définitivement fichu
Le code ne pourra en effet y parvenir que si l' "image" aero est bien une fenêtre windows à part entière et échouera par contre s'il ne s'agit que d'une image graphique sans fenêtre windows attribuée.
A plus
re
j'ai testé ton code sans rien changer avec aero
personnellement je suis de plus en plus convaincu qu'il n'y a pas d'autre solution que le déplacement par ajustement
alors oui c'est compliqué au vue des résultat d'affichage différents selon les combinaison de versions(Windows/office)
néanmoins j'ai tenter quelque chose dans ce sens
ensuite, et c'est juste une parenthèse, je suis retourné dans les premiers essais avec pointstoscreenpixelsCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Private Declare Function WindowFromPoint Lib "user32" (ByVal xpoint As Long, ByVal ypoint As Long) As Long Sub test_userform_replace() 'récuperation du coefficient ppx(pixel to point) With CreateObject("WScript.Shell"): ppx = .RegRead("HKEY_CURRENT_USER\Control Panel\Desktop\WindowMetrics\AppliedDPI") / 72: End With With ActiveWindow 'récupération des point X/Y avec pointstoscreenpixels x = (.ActivePane.PointsToScreenPixelsX([d3].Left)) / ppx: Y = (.ActivePane.PointsToScreenPixelsY([d3].Top)) / ppx With UserForm1: .Show 0: handle1 = FindWindow(vbNullString, UserForm1.Caption) 'hwnd de l'userform(caption) .Left = x: .Top = Y: 'positionnement selon pointstoscreenpixels handlex = WindowFromPoint((x * ppx), (Y * ppx)) 'récupération du handle vraiment présent sous les points de pointstoscreenpixel ' si on est dessus le userform alors on est soit trop court soit pilepoil sinon on est plus loin que les points c = IIf(handlex = handle1, 1, -1): a = 0 'donc on ajoutera (1) si dessus on enlèvera(-1) si on est en dehors incrémenté dans un do loop 'do loop pour le left: on limite la boucle a 20 iteration en cas de raté pour eviter de boucler infiniment Do: a = a + 1: .Left = .Left + c: Loop Until WindowFromPoint((x * ppx), (Y * ppx)) <> handlex Or a = 20 ' on a donc le x(left exact)maintenant on fait exactement pareil pour le top(Y) x = .Left * ppx: handlex = WindowFromPoint((x * ppx), (Y * ppx)) 'on reprend donc le handlex avec le x exact du userform et le y de pointstoscreenpixel c = IIf(handlex = handle1, 1, -1): a = 0 ' on fait pareil que pour le x si dessus 1 sinon -1 ici on limitera aussi la boucle a 20 itérations Do: a = a + 1: .Top = .Top + c: Loop Until WindowFromPoint((x * ppx), (Y * ppx)) <> handlex Or a = 20 End With End With End Sub
il se trouve que le coefficient est beaucoup plus proche qu'avec ppx réel :et ca!!!! on l'a perdu de vue au fil des pages
alors oui ppx2 n'a rien avoir avec le coefficient point to pixel bien évidemment c'est un coefficient d'affichage
qui utilise le meme principe finalement que ppx
a savoir la dimention en pixel de tout - la partie equivalente a la position 0 grille / par la dimension en point le tout / par le zoom
et la legere erreur viens justement du fait que la hauteur et la largeur en terme d'image (ce que l'on voit sur l'ecran) n'est pas agrandi de la même manière
chose que nous savons toujours pas résoudre ( peut être le sera -t-il jamais)
et c'est normal vu que pointstoscreenpixels ramène une cote plus réelleCode:ppx2 = (.ActivePane.PointsToScreenPixelsX([d3].Width) - .ActivePane.PointsToScreenPixelsX(0)) / [d3].Width / (.Zoom / 100)
du genre cela qui chez moi donne un léger défaut a partir de zoom 300
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14 Sub test_userform_replace222() 'récuperation du coefficient ppx(pixel to point) With CreateObject("WScript.Shell"): ppx = .RegRead("HKEY_CURRENT_USER\Control Panel\Desktop\WindowMetrics\AppliedDPI") / 72: End With With ActiveWindow 'recuperation des point X/Y avec pointstoscreenpixels Z = .Zoom / 100 ppx2 = (.ActivePane.PointsToScreenPixelsX([d3].Width) - .ActivePane.PointsToScreenPixelsX(0)) / [d3].Width / (.Zoom / 100) x = (.ActivePane.PointsToScreenPixelsX([d3].Left)): Y = (.ActivePane.PointsToScreenPixelsY([d3].Top)) With UserForm1: .Show 0: .Left = x / ppx2 + (1 / Z): .Top = Y / ppx2 + (1 / Z): 'positionnement selon pointstoscreenpixels End With End With MsgBox ppx & vbCrLf & ppx2 End Sub
nous allons aller tous en cœur au magasin de déguisement et nous allons demander un prix de gros pour des bonnets d'âne
il va nous en falloir (voir avec groupon si le prix est intéressant)
avant d'aller plus loin
en mettant le curseur a la limite de la colonne suivante dans le header (comme si on voulais élargir une colonne) on a 2 dimensions (en caractères et en pixels) on est OK?
nous savons que l'affichage (ce que l'on voit a l'écran) n'est pas représentatif de ce qui réel on est OK?
nous savons que pointstoscreenpixels nous donne ce qui est affiché on est OK?
nous savons que userform s'affiche comme il devrait être selon le calcul (et non ce qui est affiché) je sais pas si c'est clair pour tout le monde car la est le problème
voyons voir
faites simplement ce test
et contrôlez avec la souris dans le header comme je l'ai dis plus hautCode:
1
2
3
4
5
6
7
8
9 With CreateObject("WScript.Shell"): ppx = .RegRead("HKEY_CURRENT_USER\Control Panel\Desktop\WindowMetrics\AppliedDPI") / 72: End With With ActiveWindow 'recuperation des point X/Y avec pointstoscreenpixels .Zoom= 100 MsgBox (.ActivePane.PointsToScreenPixelsX([d3].Width) - .ActivePane.PointsToScreenPixelsX(0)) end with
normalement vous devriez avoir la dimension +1 par rapport a pointtoscreenpixel
j'ai fait le test chez moi en m'adaptant a ce +1
j'ai un résultât absolument parfait
attention dans toute les opération en adaptant ce 1 il faut lui adapter le zoom
je vous laisse réfléchir
edit :j'ai mis ppx je l'avais oublié
de toute facon il faut faire ce simple test pour comprendre ces ecart irregulier selon les zooms
je vous montre une partie du résultatCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 Sub testzoom() With CreateObject("WScript.Shell"): ppx = .RegRead("HKEY_CURRENT_USER\Control Panel\Desktop\WindowMetrics\AppliedDPI") / 72: End With With ActiveWindow For i = 100 To 200 .Zoom = i Z = .Zoom / 100 ' width par pointstoscreenpixel Wpotpix = (.ActivePane.PointsToScreenPixelsX([d3].Width) - .ActivePane.PointsToScreenPixelsX(0)) / Z 'coefficient difference width par base en point par ppx divisé par base avec pointstoscreenpixels wppix = [d3].Width * ppx / Wpotpix Debug.Print [d3].Width & " en point a zoom 100 --- " & [d3].Width * ppx & " pixels en zoom 100 --- " & Wpotpix & " pixels en zoom " & i & " /par le coeff zoom --- coefficient " & wppix Next End With End Sub
autrement dit un simple calcul de la différence entre le reel et ce qu'affiche l'écran faire le prorata (voir coeeficient en bout de chaque ligne )
na nous permet de récupérer l'erreur que l'agrandissement (par le zoom ou autre)provoque
Citation:
62,4 en point a zoom 100 --- 104 pixels en zoom 100 --- 103 pixels en zoom 100 /par le coeff zoom --- coefficient 1,00970873786408
62,4 en point a zoom 100 --- 104 pixels en zoom 100 --- 102,970297029703 pixels en zoom 101 /par le coeff zoom --- coefficient 1,01
62,4 en point a zoom 100 --- 104 pixels en zoom 100 --- 102,941176470588 pixels en zoom 102 /par le coeff zoom --- coefficient 1,01028571428571
62,4 en point a zoom 100 --- 104 pixels en zoom 100 --- 102,912621359223 pixels en zoom 103 /par le coeff zoom --- coefficient 1,01056603773585
62,4 en point a zoom 100 --- 104 pixels en zoom 100 --- 102,884615384615 pixels en zoom 104 /par le coeff zoom --- coefficient 1,01084112149533
62,4 en point a zoom 100 --- 104 pixels en zoom 100 --- 102,857142857143 pixels en zoom 105 /par le coeff zoom --- coefficient 1,01111111111111
62,4 en point a zoom 100 --- 104 pixels en zoom 100 --- 102,830188679245 pixels en zoom 106 /par le coeff zoom --- coefficient 1,01137614678899
62,4 en point a zoom 100 --- 104 pixels en zoom 100 --- 102,803738317757 pixels en zoom 107 /par le coeff zoom --- coefficient 1,01163636363636
62,4 en point a zoom 100 --- 104 pixels en zoom 100 --- 102,777777777778 pixels en zoom 108 /par le coeff zoom --- coefficient 1,01189189189189
62,4 en point a zoom 100 --- 104 pixels en zoom 100 --- 102,752293577982 pixels en zoom 109 /par le coeff zoom --- coefficient 1,01214285714286
62,4 en point a zoom 100 --- 104 pixels en zoom 100 --- 102,727272727273 pixels en zoom 110 /par le coeff zoom --- coefficient 1,01238938053097
62,4 en point a zoom 100 --- 104 pixels en zoom 100 --- 102,702702702703 pixels en zoom 111 /par le coeff zoom --- coefficient 1,01263157894737
62,4 en point a zoom 100 --- 104 pixels en zoom 100 --- 102,678571428571 pixels en zoom 112 /par le coeff zoom --- coefficient 1,01286956521739
62,4 en point a zoom 100 --- 104 pixels en zoom 100 --- 102,654867256637 pixels en zoom 113 /par le coeff zoom --- coefficient 1,01310344827586
62,4 en point a zoom 100 --- 104 pixels en zoom 100 --- 102,631578947368 pixels en zoom 114 /par le coeff zoom --- coefficient 1,01333333333333
62,4 en point a zoom 100 --- 104 pixels en zoom 100 --- 102,608695652174 pixels en zoom 115 /par le coeff zoom --- coefficient 1,0135593220339
62,4 en point a zoom 100 --- 104 pixels en zoom 100 --- 102,586206896552 pixels en zoom 116 /par le coeff zoom --- coefficient 1,01378151260504
62,4 en point a zoom 100 --- 104 pixels en zoom 100 --- 103,418803418803 pixels en zoom 117 /par le coeff zoom --- coefficient 1,00561983471074
62,4 en point a zoom 100 --- 104 pixels en zoom 100 --- 103,389830508475 pixels en zoom 118 /par le coeff zoom --- coefficient 1,00590163934426
62,4 en point a zoom 100 --- 104 pixels en zoom 100 --- 103,361344537815 pixels en zoom 119 /par le coeff zoom --- coefficient 1,00617886178862
62,4 en point a zoom 100 --- 104 pixels en zoom 100 --- 103,333333333333 pixels en zoom 120 /par le coeff zoom --- coefficient 1,00645161290323
62,4 en point a zoom 100 --- 104 pixels en zoom 100 --- 103,305785123967 pixels en zoom 121 /par le coeff zoom --- coefficient 1,00672
62,4 en point a zoom 100 --- 104 pixels en zoom 100 --- 103,27868852459 pixels en zoom 122 /par le coeff zoom --- coefficient 1,00698412698413
62,4 en point a zoom 100 --- 104 pixels en zoom 100 --- 103,252032520325 pixels en zoom 123 /par le coeff zoom --- coefficient 1,00724409448819
62,4 en point a zoom 100 --- 104 pixels en zoom 100 --- 103,225806451613 pixels en zoom 124 /par le coeff zoom --- coefficient 1,0075
62,4 en point a zoom 100 --- 104 pixels en zoom 100 --- 103,2 pixels en zoom 125 /par le coeff zoom --- coefficient 1,0077519379845
62,4 en point a zoom 100 --- 104 pixels en zoom 100 --- 103,174603174603 pixels en zoom 126 /par le coeff zoom --- coefficient 1,008
62,4 en point a zoom 100 --- 104 pixels en zoom 100 --- 103,149606299213 pixels en zoom 127 /par le coeff zoom --- coefficient 1,00824427480916
62,4 en point a zoom 100 --- 104 pixels en zoom 100 --- 103,125 pixels en zoom 128 /par le coeff zoom --- coefficient 1,00848484848485
62,4 en point a zoom 100 --- 104 pixels en zoom 100 --- 103,100775193798 pixels en zoom 129 /par le coeff zoom --- coefficient 1,00872180451128
62,4 en point a zoom 100 --- 104 pixels en zoom 100 --- 103,076923076923 pixels en zoom 130 /par le coeff zoom --- coefficient 1,0089552238806
62,4 en point a zoom 100 --- 104 pixels en zoom 100 --- 103,053435114504 pixels en zoom 131 /par le coeff zoom --- coefficient 1,00918518518519
62,4 en point a zoom 100 --- 104 pixels en zoom 100 --- 103,030303030303 pixels en zoom 132 /par le coeff zoom --- coefficient 1,00941176470588
62,4 en point a zoom 100 --- 104 pixels en zoom 100 --- 103,007518796992 pixels en zoom 133 /par le coeff zoom --- coefficient 1,00963503649635
62,4 en point a zoom 100 --- 104 pixels en zoom 100 --- 102,985074626866 pixels en zoom 134 /par le coeff zoom --- coefficient 1,00985507246377
62,4 en point a zoom 100 --- 104 pixels en zoom 100 --- 102,962962962963 pixels en zoom 135 /par le coeff zoom --- coefficient 1,01007194244604
62,4 en point a zoom 100 --- 104 pixels en zoom 100 --- 102,941176470588 pixels en zoom 136 /par le coeff zoom --- coefficient 1,01028571428571
62,4 en point a zoom 100 --- 104 pixels en zoom 100 --- 102,919708029197 pixels en zoom 137 /par le coeff zoom --- coefficient 1,01049645390071
62,4 en point a zoom 100 --- 104 pixels en zoom 100 --- 102,898550724638 pixels en zoom 138 /par le coeff zoom --- coefficient 1,01070422535211
62,4 en point a zoom 100 --- 104 pixels en zoom 100 --- 102,877697841727 pixels en zoom 139 /par le coeff zoom --- coefficient 1,01090909090909
62,4 en point a zoom 100 --- 104 pixels en zoom 100 --- 102,857142857143 pixels en zoom 140 /par le coeff zoom --- coefficient 1,01111111111111
62,4 en point a zoom 100 --- 104 pixels en zoom 100 --- 102,836879432624 pixels en zoom 141 /par le coeff zoom --- coefficient 1,01131034482759
62,4 en point a zoom 100 --- 104 pixels en zoom 100 --- 102,816901408451 pixels en zoom 142 /par le coeff zoom --- coefficient 1,01150684931507
62,4 en point a zoom 100 --- 104 pixels en zoom 100 --- 102,797202797203 pixels en zoom 143 /par le coeff zoom --- coefficient 1,01170068027211
62,4 en point a zoom 100 --- 104 pixels en zoom 100 --- 102,777777777778 pixels en zoom 144 /par le coeff zoom --- coefficient 1,01189189189189
62,4 en point a zoom 100 --- 104 pixels en zoom 100 --- 102,758620689655 pixels en zoom 145 /par le coeff zoom --- coefficient 1,01208053691275
62,4 en point a zoom 100 --- 104 pixels en zoom 100 --- 102,739726027397 pixels en zoom 146 /par le coeff zoom --- coefficient 1,01226666666667
62,4 en point a zoom 100 --- 104 pixels en zoom 100 --- 102,721088435374 pixels en zoom 147 /par le coeff zoom --- coefficient 1,01245033112583
62,4 en point a zoom 100 --- 104 pixels en zoom 100 --- 102,702702702703 pixels en zoom 148 /par le coeff zoom --- coefficient 1,01263157894737
62,4 en point a zoom 100 --- 104 pixels en zoom 100 --- 102,684563758389 pixels en zoom 149 /par le coeff zoom --- coefficient 1,01281045751634
62,4 en point a zoom 100 --- 104 pixels en zoom 100 --- 103,333333333333 pixels en zoom 150 /par le coeff zoom --- coefficient 1,00645161290323
62,4 en point a zoom 100 --- 104 pixels en zoom 100 --- 103,311258278146 pixels en zoom 151 /par le coeff zoom --- coefficient 1,00666666666667
62,4 en point a zoom 100 --- 104 pixels en zoom 100 --- 103,289473684211 pixels en zoom 152 /par le coeff zoom --- coefficient 1,00687898089172
62,4 en point a zoom 100 --- 104 pixels en zoom 100 --- 103,267973856209 pixels en zoom 153 /par le coeff zoom --- coefficient 1,00708860759494
62,4 en point a zoom 100 --- 104 pixels en zoom 100 --- 103,246753246753 pixels en zoom 154 /par le coeff zoom --- coefficient 1,00729559748428
62,4 en point a zoom 100 --- 104 pixels en zoom 100 --- 103,225806451613 pixels en zoom 155 /par le coeff zoom --- coefficient 1,0075
62,4 en point a zoom 100 --- 104 pixels en zoom 100 --- 103,205128205128 pixels en zoom 156 /par le coeff zoom --- coefficient 1,00770186335404
62,4 en point a zoom 100 --- 104 pixels en zoom 100 --- 103,184713375796 pixels en zoom 157 /par le coeff zoom --- coefficient 1,0079012345679
62,4 en point a zoom 100 --- 104 pixels en zoom 100 --- 103,164556962025 pixels en zoom 158 /par le coeff zoom --- coefficient 1,0080981595092
62,4 en point a zoom 100 --- 104 pixels en zoom 100 --- 103,14465408805 pixels en zoom 159 /par le coeff zoom --- coefficient 1,00829268292683
62,4 en point a zoom 100 --- 104 pixels en zoom 100 --- 103,125 pixels en zoom 160 /par le coeff zoom --- coefficient 1,00848484848485
62,4 en point a
Citation:
60 en point a zoom 100 --- 80 pixels en zoom 100 --- 80 pixels en zoom 100 /par le coeff zoom --- coefficient 1
60 en point a zoom 100 --- 80 pixels en zoom 100 --- 80,1980198019802 pixels en zoom 101 /par le coeff zoom --- coefficient 0,997530864197531
60 en point a zoom 100 --- 80 pixels en zoom 100 --- 80,3921568627451 pixels en zoom 102 /par le coeff zoom --- coefficient 0,995121951219512
60 en point a zoom 100 --- 80 pixels en zoom 100 --- 79,6116504854369 pixels en zoom 103 /par le coeff zoom --- coefficient 1,00487804878049
60 en point a zoom 100 --- 80 pixels en zoom 100 --- 79,8076923076923 pixels en zoom 104 /par le coeff zoom --- coefficient 1,00240963855422
60 en point a zoom 100 --- 80 pixels en zoom 100 --- 80 pixels en zoom 105 /par le coeff zoom --- coefficient 1
60 en point a zoom 100 --- 80 pixels en zoom 100 --- 80,188679245283 pixels en zoom 106 /par le coeff zoom --- coefficient 0,997647058823529
60 en point a zoom 100 --- 80 pixels en zoom 100 --- 80,3738317757009 pixels en zoom 107 /par le coeff zoom --- coefficient 0,995348837209302
60 en point a zoom 100 --- 80 pixels en zoom 100 --- 79,6296296296296 pixels en zoom 108 /par le coeff zoom --- coefficient 1,0046511627907
60 en point a zoom 100 --- 80 pixels en zoom 100 --- 79,8165137614679 pixels en zoom 109 /par le coeff zoom --- coefficient 1,00229885057471
60 en point a zoom 100 --- 80 pixels en zoom 100 --- 80 pixels en zoom 110 /par le coeff zoom --- coefficient 1
60 en point a zoom 100 --- 80 pixels en zoom 100 --- 80,1801801801802 pixels en zoom 111 /par le coeff zoom --- coefficient 0,997752808988764
60 en point a zoom 100 --- 80 pixels en zoom 100 --- 80,3571428571428 pixels en zoom 112 /par le coeff zoom --- coefficient 0,995555555555556
60 en point a zoom 100 --- 80 pixels en zoom 100 --- 79,646017699115 pixels en zoom 113 /par le coeff zoom --- coefficient 1,00444444444444
60 en point a zoom 100 --- 80 pixels en zoom 100 --- 79,8245614035088 pixels en zoom 114 /par le coeff zoom --- coefficient 1,0021978021978
60 en point a zoom 100 --- 80 pixels en zoom 100 --- 80 pixels en zoom 115 /par le coeff zoom --- coefficient 1
60 en point a zoom 100 --- 80 pixels en zoom 100 --- 80,1724137931035 pixels en zoom 116 /par le coeff zoom --- coefficient 0,997849462365591
60 en point a zoom 100 --- 80 pixels en zoom 100 --- 80,3418803418803 pixels en zoom 117 /par le coeff zoom --- coefficient 0,995744680851064
60 en point a zoom 100 --- 80 pixels en zoom 100 --- 79,6610169491525 pixels en zoom 118 /par le coeff zoom --- coefficient 1,00425531914894
60 en point a zoom 100 --- 80 pixels en zoom 100 --- 79,8319327731092 pixels en zoom 119 /par le coeff zoom --- coefficient 1,00210526315789
60 en point a zoom 100 --- 80 pixels en zoom 100 --- 80 pixels en zoom 120 /par le coeff zoom --- coefficient 1
60 en point a zoom 100 --- 80 pixels en zoom 100 --- 80,1652892561983 pixels en zoom 121 /par le coeff zoom --- coefficient 0,997938144329897
60 en point a zoom 100 --- 80 pixels en zoom 100 --- 80,327868852459 pixels en zoom 122 /par le coeff zoom --- coefficient 0,995918367346939
60 en point a zoom 100 --- 80 pixels en zoom 100 --- 79,6747967479675 pixels en zoom 123 /par le coeff zoom --- coefficient 1,00408163265306
60 en point a zoom 100 --- 80 pixels en zoom 100 --- 79,8387096774194 pixels en zoom 124 /par le coeff zoom --- coefficient 1,0020202020202
60 en point a zoom 100 --- 80 pixels en zoom 100 --- 80 pixels en zoom 125 /par le coeff zoom --- coefficient 1
60 en point a zoom 100 --- 80 pixels en zoom 100 --- 80,1587301587302 pixels en zoom 126 /par le coeff zoom --- coefficient 0,998019801980198
60 en point a zoom 100 --- 80 pixels en zoom 100 --- 80,3149606299213 pixels en zoom 127 /par le coeff zoom --- coefficient 0,996078431372549
60 en point a zoom 100 --- 80 pixels en zoom 100 --- 79,6875 pixels en zoom 128 /par le coeff zoom --- coefficient 1,00392156862745
60 en point a zoom 100 --- 80 pixels en zoom 100 --- 79,8449612403101 pixels en zoom 129 /par le coeff zoom --- coefficient 1,00194174757282
60 en point a zoom 100 --- 80 pixels en zoom 100 --- 80 pixels en zoom 130 /par le coeff zoom --- coefficient 1
60 en point a zoom 100 --- 80 pixels en zoom 100 --- 80,1526717557252 pixels en zoom 131 /par le coeff zoom --- coefficient 0,998095238095238
60 en point a zoom 100 --- 80 pixels en zoom 100 --- 80,3030303030303 pixels en zoom 132 /par le coeff zoom --- coefficient 0,99622641509434
60 en point a zoom 100 --- 80 pixels en zoom 100 --- 79,6992481203008 pixels en zoom 133 /par le coeff zoom --- coefficient 1,00377358490566
60 en point a zoom 100 --- 80 pixels en zoom 100 --- 79,8507462686567 pixels en zoom 134 /par le coeff zoom --- coefficient 1,0018691588785
60 en point a zoom 100 --- 80 pixels en zoom 100 --- 80 pixels en zoom 135 /par le coeff zoom --- coefficient 1
60 en point a zoom 100 --- 80 pixels en zoom 100 --- 80,1470588235294 pixels en zoom 136 /par le coeff zoom --- coefficient 0,998165137614679
60 en point a zoom 100 --- 80 pixels en zoom 100 --- 80,2919708029197 pixels en zoom 137 /par le coeff zoom --- coefficient 0,996363636363636
60 en point a zoom 100 --- 80 pixels en zoom 100 --- 79,7101449275362 pixels en zoom 138 /par le coeff zoom --- coefficient 1,00363636363636
60 en point a zoom 100 --- 80 pixels en zoom 100 --- 79,8561151079137 pixels en zoom 139 /par le coeff zoom --- coefficient 1,0018018018018
60 en point a zoom 100 --- 80 pixels en zoom 100 --- 80 pixels en zoom 140 /par le coeff zoom --- coefficient 1
60 en point a zoom 100 --- 80 pixels en zoom 100 --- 80,1418439716312 pixels en zoom 141 /par le coeff zoom --- coefficient 0,998230088495575
60 en point a zoom 100 --- 80 pixels en zoom 100 --- 80,2816901408451 pixels en zoom 142 /par le coeff zoom --- coefficient 0,996491228070175
60 en point a zoom 100 --- 80 pixels en zoom 100 --- 79,7202797202797 pixels en zoom 143 /par le coeff zoom --- coefficient 1,00350877192982
60 en point a zoom 100 --- 80 pixels en zoom 100 --- 79,8611111111111 pixels en zoom 144 /par le coeff zoom --- coefficient 1,00173913043478
60 en point a zoom 100 --- 80 pixels en zoom 100 --- 80 pixels en zoom 145 /par le coeff zoom --- coefficient 1
w10 64 bits excel 2013 64 bits ;) (nico)
Citation:
62,4 en point a zoom 100 --- 104 pixels en zoom 100 --- 103 pixels en zoom 100 /par le coeff zoom --- coefficient 1,00970873786408
62,4 en point a zoom 100 --- 104 pixels en zoom 100 --- 102,970297029703 pixels en zoom 101 /par le coeff zoom --- coefficient 1,01
62,4 en point a zoom 100 --- 104 pixels en zoom 100 --- 102,941176470588 pixels en zoom 102 /par le coeff zoom --- coefficient 1,01028571428571
62,4 en point a zoom 100 --- 104 pixels en zoom 100 --- 102,912621359223 pixels en zoom 103 /par le coeff zoom --- coefficient 1,01056603773585
62,4 en point a zoom 100 --- 104 pixels en zoom 100 --- 102,884615384615 pixels en zoom 104 /par le coeff zoom --- coefficient 1,01084112149533
62,4 en point a zoom 100 --- 104 pixels en zoom 100 --- 102,857142857143 pixels en zoom 105 /par le coeff zoom --- coefficient 1,01111111111111
62,4 en point a zoom 100 --- 104 pixels en zoom 100 --- 102,830188679245 pixels en zoom 106 /par le coeff zoom --- coefficient 1,01137614678899
62,4 en point a zoom 100 --- 104 pixels en zoom 100 --- 102,803738317757 pixels en zoom 107 /par le coeff zoom --- coefficient 1,01163636363636
62,4 en point a zoom 100 --- 104 pixels en zoom 100 --- 102,777777777778 pixels en zoom 108 /par le coeff zoom --- coefficient 1,01189189189189
62,4 en point a zoom 100 --- 104 pixels en zoom 100 --- 102,752293577982 pixels en zoom 109 /par le coeff zoom --- coefficient 1,01214285714286
62,4 en point a zoom 100 --- 104 pixels en zoom 100 --- 102,727272727273 pixels en zoom 110 /par le coeff zoom --- coefficient 1,01238938053097
62,4 en point a zoom 100 --- 104 pixels en zoom 100 --- 102,702702702703 pixels en zoom 111 /par le coeff zoom --- coefficient 1,01263157894737
62,4 en point a zoom 100 --- 104 pixels en zoom 100 --- 102,678571428571 pixels en zoom 112 /par le coeff zoom --- coefficient 1,01286956521739
62,4 en point a zoom 100 --- 104 pixels en zoom 100 --- 102,654867256637 pixels en zoom 113 /par le coeff zoom --- coefficient 1,01310344827586
62,4 en point a zoom 100 --- 104 pixels en zoom 100 --- 102,631578947368 pixels en zoom 114 /par le coeff zoom --- coefficient 1,01333333333333
62,4 en point a zoom 100 --- 104 pixels en zoom 100 --- 102,608695652174 pixels en zoom 115 /par le coeff zoom --- coefficient 1,0135593220339
62,4 en point a zoom 100 --- 104 pixels en zoom 100 --- 102,586206896552 pixels en zoom 116 /par le coeff zoom --- coefficient 1,01378151260504
62,4 en point a zoom 100 --- 104 pixels en zoom 100 --- 103,418803418803 pixels en zoom 117 /par le coeff zoom --- coefficient 1,00561983471074
62,4 en point a zoom 100 --- 104 pixels en zoom 100 --- 103,389830508475 pixels en zoom 118 /par le coeff zoom --- coefficient 1,00590163934426
62,4 en point a zoom 100 --- 104 pixels en zoom 100 --- 103,361344537815 pixels en zoom 119 /par le coeff zoom --- coefficient 1,00617886178862
62,4 en point a zoom 100 --- 104 pixels en zoom 100 --- 103,333333333333 pixels en zoom 120 /par le coeff zoom --- coefficient 1,00645161290323
62,4 en point a zoom 100 --- 104 pixels en zoom 100 --- 103,305785123967 pixels en zoom 121 /par le coeff zoom --- coefficient 1,00672
62,4 en point a zoom 100 --- 104 pixels en zoom 100 --- 103,27868852459 pixels en zoom 122 /par le coeff zoom --- coefficient 1,00698412698413
62,4 en point a zoom 100 --- 104 pixels en zoom 100 --- 103,252032520325 pixels en zoom 123 /par le coeff zoom --- coefficient 1,00724409448819
62,4 en point a zoom 100 --- 104 pixels en zoom 100 --- 103,225806451613 pixels en zoom 124 /par le coeff zoom --- coefficient 1,0075
62,4 en point a zoom 100 --- 104 pixels en zoom 100 --- 103,2 pixels en zoom 125 /par le coeff zoom --- coefficient 1,0077519379845
62,4 en point a zoom 100 --- 104 pixels en zoom 100 --- 103,174603174603 pixels en zoom 126 /par le coeff zoom --- coefficient 1,008
62,4 en point a zoom 100 --- 104 pixels en zoom 100 --- 103,149606299213 pixels en zoom 127 /par le coeff zoom --- coefficient 1,00824427480916
62,4 en point a zoom 100 --- 104 pixels en zoom 100 --- 103,125 pixels en zoom 128 /par le coeff zoom --- coefficient 1,00848484848485
62,4 en point a zoom 100 --- 104 pixels en zoom 100 --- 103,100775193798 pixels en zoom 129 /par le coeff zoom --- coefficient 1,00872180451128
62,4 en point a zoom 100 --- 104 pixels en zoom 100 --- 103,076923076923 pixels en zoom 130 /par le coeff zoom --- coefficient 1,0089552238806
62,4 en point a zoom 100 --- 104 pixels en zoom 100 --- 103,053435114504 pixels en zoom 131 /par le coeff zoom --- coefficient 1,00918518518519
62,4 en point a zoom 100 --- 104 pixels en zoom 100 --- 103,030303030303 pixels en zoom 132 /par le coeff zoom --- coefficient 1,00941176470588
62,4 en point a zoom 100 --- 104 pixels en zoom 100 --- 103,007518796992 pixels en zoom 133 /par le coeff zoom --- coefficient 1,00963503649635
62,4 en point a zoom 100 --- 104 pixels en zoom 100 --- 102,985074626866 pixels en zoom 134 /par le coeff zoom --- coefficient 1,00985507246377
62,4 en point a zoom 100 --- 104 pixels en zoom 100 --- 102,962962962963 pixels en zoom 135 /par le coeff zoom --- coefficient 1,01007194244604
62,4 en point a zoom 100 --- 104 pixels en zoom 100 --- 102,941176470588 pixels en zoom 136 /par le coeff zoom --- coefficient 1,01028571428571
62,4 en point a zoom 100 --- 104 pixels en zoom 100 --- 102,919708029197 pixels en zoom 137 /par le coeff zoom --- coefficient 1,01049645390071
62,4 en point a zoom 100 --- 104 pixels en zoom 100 --- 102,898550724638 pixels en zoom 138 /par le coeff zoom --- coefficient 1,01070422535211
62,4 en point a zoom 100 --- 104 pixels en zoom 100 --- 102,877697841727 pixels en zoom 139 /par le coeff zoom --- coefficient 1,01090909090909
62,4 en point a zoom 100 --- 104 pixels en zoom 100 --- 102,857142857143 pixels en zoom 140 /par le coeff zoom --- coefficient 1,01111111111111
62,4 en point a zoom 100 --- 104 pixels en zoom 100 --- 102,836879432624 pixels en zoom 141 /par le coeff zoom --- coefficient 1,01131034482759
62,4 en point a zoom 100 --- 104 pixels en zoom 100 --- 102,816901408451 pixels en zoom 142 /par le coeff zoom --- coefficient 1,01150684931507
62,4 en point a zoom 100 --- 104 pixels en zoom 100 --- 102,797202797203 pixels en zoom 143 /par le coeff zoom --- coefficient 1,01170068027211
62,4 en point a zoom 100 --- 104 pixels en zoom 100 --- 102,777777777778 pixels en zoom 144 /par le coeff zoom --- coefficient 1,01189189189189
62,4 en point a zoom 100 --- 104 pixels en zoom 100 --- 102,758620689655 pixels en zoom 145 /par le coeff zoom --- coefficient 1,01208053691275
et ben voila !!!
Nicolas je t'envoie les deux versions a tester selon ce procédé
Nath des que ce sera ok tu aura la version finale de ce procédé
merci pour les retours
ok ça marche, mais arrête de lire en diagonale comme dit Jacques, :ptdr::ptdr:
je rigole, ça sera plus facile que de tout transférer à chaque foisCitation:
2013 64 bits (nico)
t' inquiet je ne lis pas en diagonal
mais je sais que pour ses tests je connais déjà le résultat et donc ca ne correspond pas a ces déductions chez moi
j'attend son dernier test sur le "6" on va voir
en attendant tu en a deux a tester
et j'expliquerais pourquoi on ne peut aller plus loin tout du moins sans faire les calcul 2 fois et la j'ai tout dis
je donne un indice
une des opérandes est faussé a la base il faut refaire le même calcul en y ajoutant le prorata du même calcul
j'attend tes retours par mails
Merci Nicolas
A Patrick
Tu es alors un devin.Citation:
mais je sais que pour ses tests je connais déjà le résultat et donc ca ne correspond pas a ces déductions chez moi
j'attend son dernier test sur le "6" on va voir
Moi, je n'en sais encore rien et pour cause :
- le fait que la hwnd de l'userform retourné par FindWindows est le même que celui du 6 ne signifie pas nécessairement que celui du 6 n'est pas celui d'une autre fenêtre. Et j'espère que tu sais pourquoi ce n'est pas une preuve, dès lors que le findWindow utilise ... le caption (qui est ... le même)!
Je réitère par contre sans le moindre doute ce que j'ai dit :
- ou l' "image" qui est superposée à la fenêtre du UserForm est une fenêtre Windows à part entière et nous aurons alors la solution
- ou ce n'est qu'une "image" (graphique) sans être une fenêtre à part entière (dotée d'un hwnd) et c'est fichu.
Une chose est déjà certaine, pour moi : les recherches que j'ai faites sur internet en ce qui concerne ce qui résulte de l'application de aero à une fenêtre sont claires : il y a bel et bien superposition (l'image de l'effet vient se placer au premier plan et par dessus la fenêtre de la fenêtre à laquelle est appliqué l'effet aero). Je n'ai par contre encore trouvé aucune page qui précise si cet "effet" est uniquement graphique ou s'il est lui-même également une fenêtre windows à part entière.
Je continue à chercher avant de proposer le test avec le hwnd du résultat 6.