Nicolas je vais t'en faire un avec des boutons de déplacement et un bouton valider tu va l'essayer sur tout les zoom et me donner le rapport OK
tu n'aura qu' cliquer sur les boutons et rien d'autre
laisse moi 20 bonnes minutes
Version imprimable
Nicolas je vais t'en faire un avec des boutons de déplacement et un bouton valider tu va l'essayer sur tout les zoom et me donner le rapport OK
tu n'aura qu' cliquer sur les boutons et rien d'autre
laisse moi 20 bonnes minutes
oki
teste ca
ça donne les mêmes résultats que hier et la forme reste figé pour les 20 40 60 80 etc.......
et il y a un bug aussi sur 110 maintenant
Pièce jointe 288855
Pièce jointe 288858
ok je commence a entrevoir le soucis
fait moi ce test et dis moi l'adress que tu obtient
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13 Sub test1() Dim X As Double, Y As Double, Z As Double, versio, ppx As Double With ActiveWindow Z = (.Zoom) / 100 ppx = (.ActivePane.PointsToScreenPixelsY(3) - .ActivePane.PointsToScreenPixelsY(0)) / 3 X = .ActivePane.PointsToScreenPixelsX([d6].Left) Y = .ActivePane.PointsToScreenPixelsY([d6].Top) End With Version = Round(Val(Split(Application.OperatingSystem, " ")(3))) suppleft = IIf(Version > 6.01 Or Version = 0, -5, 4.4) supptop = IIf(Version > 6.01 Or Version = 0, 0, 4.4) MsgBox ActiveWindow.RangeFromPoint((X * Z) - 1, (Y * Z) - 1).Address End Sub
ok donc pointstoscreenpixels et zoom de donne pas de données erronées
c'est donc bien le userform le problème
voila coment est un userform réellement
Pièce jointe 288883
et voila comment le shell windows l'affiche a l'écran
Pièce jointe 288885
il faut trouver la formule qui rectifie cela
Effectivement, en utilisant ça
Je suis pas obligé de mettre mon correctif de -5, j'ai essayé avec mon code de baseCode:
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56 Option Explicit 'Pour enlever la barre de titre du UF Public Type RECT Left As Long Top As Long Right As Long Bottom As Long End Type Public Const GWL_STYLE = (-16) Public Const WS_CAPTION = &HC00000 Public Const SWP_FRAMECHANGED = &H20 Public Declare Function FindWindowA Lib "user32" _ (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Public Declare Function GetWindowRect Lib "user32" _ (ByVal hWnd As Long, lpRect As RECT) As Long Public Declare Function GetWindowLong Lib "user32" Alias _ "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long Public Declare Function SetWindowLong Lib "user32" Alias _ "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, _ ByVal dwNewLong As Long) As Long Public Declare Function SetWindowPos Lib "user32" _ (ByVal hWnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, _ ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, _ ByVal wFlags As Long) As Long Sub OteTitleBarre(stCaption As String, pbVisible As Boolean) Dim vrWin As RECT Dim style As Long Dim lHwnd As Long '- Recherche du handle de la fenêtre par son Caption lHwnd = FindWindowA(vbNullString, stCaption) If lHwnd = 0 Then MsgBox "Handle de " & stCaption & " Introuvable", vbCritical Exit Sub End If GetWindowRect lHwnd, vrWin style = GetWindowLong(lHwnd, GWL_STYLE) If pbVisible Then SetWindowLong lHwnd, GWL_STYLE, style Or WS_CAPTION Else SetWindowLong lHwnd, GWL_STYLE, style And Not WS_CAPTION End If SetWindowPos lHwnd, 0, vrWin.Left, vrWin.Top, vrWin.Right - vrWin.Left, _ vrWin.Bottom - vrWin.Top, SWP_FRAMECHANGED End Sub Private Sub UserForm_Initialize() 'Enlever le cadre de l'UF OteTitleBarre Me.Caption, False 'True pour le remettre End Sub
Sans le correctif, mais parcontre moins pratic
Pièce jointe 288895
Désolé de la perte de temps que je vous fais prendre à tous
en reprenant ton code du 24/05, voila ce que ça donne
Pièce jointe 288910
c'est pas grave on passe
je viens de mettre le doigt sur le problème
pointstoscreenpixels sur une cellule donne toujours la même chose avec n'importe quel zoom ca nous le savons c'est pour cela que nous utilisons la formule zoom/100 pour le coefficient
tout a l'heure je t'ai dis que le problème venait du userform
je vais être plus précis
en fait il viens du userform par rapport au zoom
en effet
il semblerait que celui ci subisse aussi une modification sans qu'elle soit affiché a l'écran ( la y a unparia qui va me dire que je suppute )
alors je t'en donne la preuve
ppx donne le coefficient sans le zoom point to pixel on est d'accord
et bien regarde la valeur de la bordure du userform selon le zoom dans le debug
tu constatera que je n'ai appliqué aucun coefficient zoom a la formule de calcul de la bordure
pourtant elle change bel et bien par contre dans l'affichage NON!
on constate aussi par la même occasion que les valeurs changent que par tranche de dizaine
voila pourquoi nos anciennes formule ne fonctionnaient pas pour tous les zooms
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 Sub testbord() For i = 50 To 400 With ActiveWindow .Zoom = i ppx = (.ActivePane.PointsToScreenPixelsY(3) - .ActivePane.PointsToScreenPixelsY(0)) / 3 End With With UserForm1 .Show 0 '.Left = (X / ppx) * Z + suppleft '.Top = (Y / ppx) * Z + supptop Debug.Print "zoom à " & ActiveWindow.Zoom & ": bord userform = "; ((.Width - .InsideWidth) / 2) / ppx End With Next ActiveWindow.Zoom = 100 End Sub
je vois bien la forme défiler, mais je n'ai aucune valeur
ok, je viens d'apprendre un nouveau truc "Débug.print", oui marré vous
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352 zoom à 50: bord userform = 9 zoom à 51: bord userform = 9 zoom à 52: bord userform = 9 zoom à 53: bord userform = 9 zoom à 54: bord userform = 9 zoom à 55: bord userform = 9 zoom à 56: bord userform = 9 zoom à 57: bord userform = 9 zoom à 58: bord userform = 9 zoom à 59: bord userform = 9 zoom à 60: bord userform = 9 zoom à 61: bord userform = 9 zoom à 62: bord userform = 9 zoom à 63: bord userform = 6 zoom à 64: bord userform = 6 zoom à 65: bord userform = 6 zoom à 66: bord userform = 6 zoom à 67: bord userform = 6 zoom à 68: bord userform = 6 zoom à 69: bord userform = 6 zoom à 70: bord userform = 6 zoom à 71: bord userform = 6 zoom à 72: bord userform = 6 zoom à 73: bord userform = 6 zoom à 74: bord userform = 6 zoom à 75: bord userform = 6 zoom à 76: bord userform = 6 zoom à 77: bord userform = 6 zoom à 78: bord userform = 6 zoom à 79: bord userform = 6 zoom à 80: bord userform = 6 zoom à 81: bord userform = 6 zoom à 82: bord userform = 6 zoom à 83: bord userform = 6 zoom à 84: bord userform = 6 zoom à 85: bord userform = 6 zoom à 86: bord userform = 6 zoom à 87: bord userform = 6 zoom à 88: bord userform = 4,5 zoom à 89: bord userform = 4,5 zoom à 90: bord userform = 4,5 zoom à 91: bord userform = 4,5 zoom à 92: bord userform = 4,5 zoom à 93: bord userform = 4,5 zoom à 94: bord userform = 4,5 zoom à 95: bord userform = 4,5 zoom à 96: bord userform = 4,5 zoom à 97: bord userform = 4,5 zoom à 98: bord userform = 4,5 zoom à 99: bord userform = 4,5 zoom à 100: bord userform = 4,5 zoom à 101: bord userform = 4,5 zoom à 102: bord userform = 4,5 zoom à 103: bord userform = 4,5 zoom à 104: bord userform = 4,5 zoom à 105: bord userform = 4,5 zoom à 106: bord userform = 4,5 zoom à 107: bord userform = 4,5 zoom à 108: bord userform = 4,5 zoom à 109: bord userform = 4,5 zoom à 110: bord userform = 4,5 zoom à 111: bord userform = 4,5 zoom à 112: bord userform = 4,5 zoom à 113: bord userform = 3,6 zoom à 114: bord userform = 3,6 zoom à 115: bord userform = 3,6 zoom à 116: bord userform = 3,6 zoom à 117: bord userform = 3,6 zoom à 118: bord userform = 3,6 zoom à 119: bord userform = 3,6 zoom à 120: bord userform = 3,6 zoom à 121: bord userform = 3,6 zoom à 122: bord userform = 3,6 zoom à 123: bord userform = 3,6 zoom à 124: bord userform = 3,6 zoom à 125: bord userform = 3,6 zoom à 126: bord userform = 3,6 zoom à 127: bord userform = 3,6 zoom à 128: bord userform = 3,6 zoom à 129: bord userform = 3,6 zoom à 130: bord userform = 3,6 zoom à 131: bord userform = 3,6 zoom à 132: bord userform = 3,6 zoom à 133: bord userform = 3,6 zoom à 134: bord userform = 3,6 zoom à 135: bord userform = 3,6 zoom à 136: bord userform = 3,6 zoom à 137: bord userform = 3,6 zoom à 138: bord userform = 3 zoom à 139: bord userform = 3 zoom à 140: bord userform = 3 zoom à 141: bord userform = 3 zoom à 142: bord userform = 3 zoom à 143: bord userform = 3 zoom à 144: bord userform = 3 zoom à 145: bord userform = 3 zoom à 146: bord userform = 3 zoom à 147: bord userform = 3 zoom à 148: bord userform = 3 zoom à 149: bord userform = 3 zoom à 150: bord userform = 3 zoom à 151: bord userform = 3 zoom à 152: bord userform = 3 zoom à 153: bord userform = 3 zoom à 154: bord userform = 3 zoom à 155: bord userform = 3 zoom à 156: bord userform = 3 zoom à 157: bord userform = 3 zoom à 158: bord userform = 3 zoom à 159: bord userform = 3 zoom à 160: bord userform = 3 zoom à 161: bord userform = 3 zoom à 162: bord userform = 3 zoom à 163: bord userform = 2,57142857142857 zoom à 164: bord userform = 2,57142857142857 zoom à 165: bord userform = 2,57142857142857 zoom à 166: bord userform = 2,57142857142857 zoom à 167: bord userform = 2,57142857142857 zoom à 168: bord userform = 2,57142857142857 zoom à 169: bord userform = 2,57142857142857 zoom à 170: bord userform = 2,57142857142857 zoom à 171: bord userform = 2,57142857142857 zoom à 172: bord userform = 2,57142857142857 zoom à 173: bord userform = 2,57142857142857 zoom à 174: bord userform = 2,57142857142857 zoom à 175: bord userform = 2,57142857142857 zoom à 176: bord userform = 2,57142857142857 zoom à 177: bord userform = 2,57142857142857 zoom à 178: bord userform = 2,57142857142857 zoom à 179: bord userform = 2,57142857142857 zoom à 180: bord userform = 2,57142857142857 zoom à 181: bord userform = 2,57142857142857 zoom à 182: bord userform = 2,57142857142857 zoom à 183: bord userform = 2,57142857142857 zoom à 184: bord userform = 2,57142857142857 zoom à 185: bord userform = 2,57142857142857 zoom à 186: bord userform = 2,57142857142857 zoom à 187: bord userform = 2,57142857142857 zoom à 188: bord userform = 2,25 zoom à 189: bord userform = 2,25 zoom à 190: bord userform = 2,25 zoom à 191: bord userform = 2,25 zoom à 192: bord userform = 2,25 zoom à 193: bord userform = 2,25 zoom à 194: bord userform = 2,25 zoom à 195: bord userform = 2,25 zoom à 196: bord userform = 2,25 zoom à 197: bord userform = 2,25 zoom à 198: bord userform = 2,25 zoom à 199: bord userform = 2,25 zoom à 200: bord userform = 2,25 zoom à 201: bord userform = 2,25 zoom à 202: bord userform = 2,25 zoom à 203: bord userform = 2,25 zoom à 204: bord userform = 2,25 zoom à 205: bord userform = 2,25 zoom à 206: bord userform = 2,25 zoom à 207: bord userform = 2,25 zoom à 208: bord userform = 2,25 zoom à 209: bord userform = 2,25 zoom à 210: bord userform = 2,25 zoom à 211: bord userform = 2,25 zoom à 212: bord userform = 2,25 zoom à 213: bord userform = 2 zoom à 214: bord userform = 2 zoom à 215: bord userform = 2 zoom à 216: bord userform = 2 zoom à 217: bord userform = 2 zoom à 218: bord userform = 2 zoom à 219: bord userform = 2 zoom à 220: bord userform = 2 zoom à 221: bord userform = 2 zoom à 222: bord userform = 2 zoom à 223: bord userform = 2 zoom à 224: bord userform = 2 zoom à 225: bord userform = 2 zoom à 226: bord userform = 2 zoom à 227: bord userform = 2 zoom à 228: bord userform = 2 zoom à 229: bord userform = 2 zoom à 230: bord userform = 2 zoom à 231: bord userform = 2 zoom à 232: bord userform = 2 zoom à 233: bord userform = 2 zoom à 234: bord userform = 2 zoom à 235: bord userform = 2 zoom à 236: bord userform = 2 zoom à 237: bord userform = 2 zoom à 238: bord userform = 1,8 zoom à 239: bord userform = 1,8 zoom à 240: bord userform = 1,8 zoom à 241: bord userform = 1,8 zoom à 242: bord userform = 1,8 zoom à 243: bord userform = 1,8 zoom à 244: bord userform = 1,8 zoom à 245: bord userform = 1,8 zoom à 246: bord userform = 1,8 zoom à 247: bord userform = 1,8 zoom à 248: bord userform = 1,8 zoom à 249: bord userform = 1,8 zoom à 250: bord userform = 1,8 zoom à 251: bord userform = 1,8 zoom à 252: bord userform = 1,8 zoom à 253: bord userform = 1,8 zoom à 254: bord userform = 1,8 zoom à 255: bord userform = 1,8 zoom à 256: bord userform = 1,8 zoom à 257: bord userform = 1,8 zoom à 258: bord userform = 1,8 zoom à 259: bord userform = 1,8 zoom à 260: bord userform = 1,8 zoom à 261: bord userform = 1,8 zoom à 262: bord userform = 1,8 zoom à 263: bord userform = 1,63636363636364 zoom à 264: bord userform = 1,63636363636364 zoom à 265: bord userform = 1,63636363636364 zoom à 266: bord userform = 1,63636363636364 zoom à 267: bord userform = 1,63636363636364 zoom à 268: bord userform = 1,63636363636364 zoom à 269: bord userform = 1,63636363636364 zoom à 270: bord userform = 1,63636363636364 zoom à 271: bord userform = 1,63636363636364 zoom à 272: bord userform = 1,63636363636364 zoom à 273: bord userform = 1,63636363636364 zoom à 274: bord userform = 1,63636363636364 zoom à 275: bord userform = 1,63636363636364 zoom à 276: bord userform = 1,63636363636364 zoom à 277: bord userform = 1,63636363636364 zoom à 278: bord userform = 1,63636363636364 zoom à 279: bord userform = 1,63636363636364 zoom à 280: bord userform = 1,63636363636364 zoom à 281: bord userform = 1,63636363636364 zoom à 282: bord userform = 1,63636363636364 zoom à 283: bord userform = 1,63636363636364 zoom à 284: bord userform = 1,63636363636364 zoom à 285: bord userform = 1,63636363636364 zoom à 286: bord userform = 1,63636363636364 zoom à 287: bord userform = 1,63636363636364 zoom à 288: bord userform = 1,5 zoom à 289: bord userform = 1,5 zoom à 290: bord userform = 1,5 zoom à 291: bord userform = 1,5 zoom à 292: bord userform = 1,5 zoom à 293: bord userform = 1,5 zoom à 294: bord userform = 1,5 zoom à 295: bord userform = 1,5 zoom à 296: bord userform = 1,5 zoom à 297: bord userform = 1,5 zoom à 298: bord userform = 1,5 zoom à 299: bord userform = 1,5 zoom à 300: bord userform = 1,5 zoom à 301: bord userform = 1,5 zoom à 302: bord userform = 1,5 zoom à 303: bord userform = 1,5 zoom à 304: bord userform = 1,5 zoom à 305: bord userform = 1,5 zoom à 306: bord userform = 1,5 zoom à 307: bord userform = 1,5 zoom à 308: bord userform = 1,5 zoom à 309: bord userform = 1,5 zoom à 310: bord userform = 1,5 zoom à 311: bord userform = 1,5 zoom à 312: bord userform = 1,5 zoom à 313: bord userform = 1,38461538461538 zoom à 314: bord userform = 1,38461538461538 zoom à 315: bord userform = 1,38461538461538 zoom à 316: bord userform = 1,38461538461538 zoom à 317: bord userform = 1,38461538461538 zoom à 318: bord userform = 1,38461538461538 zoom à 319: bord userform = 1,38461538461538 zoom à 320: bord userform = 1,38461538461538 zoom à 321: bord userform = 1,38461538461538 zoom à 322: bord userform = 1,38461538461538 zoom à 323: bord userform = 1,38461538461538 zoom à 324: bord userform = 1,38461538461538 zoom à 325: bord userform = 1,38461538461538 zoom à 326: bord userform = 1,38461538461538 zoom à 327: bord userform = 1,38461538461538 zoom à 328: bord userform = 1,38461538461538 zoom à 329: bord userform = 1,38461538461538 zoom à 330: bord userform = 1,38461538461538 zoom à 331: bord userform = 1,38461538461538 zoom à 332: bord userform = 1,38461538461538 zoom à 333: bord userform = 1,38461538461538 zoom à 334: bord userform = 1,38461538461538 zoom à 335: bord userform = 1,38461538461538 zoom à 336: bord userform = 1,38461538461538 zoom à 337: bord userform = 1,38461538461538 zoom à 338: bord userform = 1,28571428571429 zoom à 339: bord userform = 1,28571428571429 zoom à 340: bord userform = 1,28571428571429 zoom à 341: bord userform = 1,28571428571429 zoom à 342: bord userform = 1,28571428571429 zoom à 343: bord userform = 1,28571428571429 zoom à 344: bord userform = 1,28571428571429 zoom à 345: bord userform = 1,28571428571429 zoom à 346: bord userform = 1,28571428571429 zoom à 347: bord userform = 1,28571428571429 zoom à 348: bord userform = 1,28571428571429 zoom à 349: bord userform = 1,28571428571429 zoom à 350: bord userform = 1,28571428571429 zoom à 351: bord userform = 1,28571428571429 zoom à 352: bord userform = 1,28571428571429 zoom à 353: bord userform = 1,28571428571429 zoom à 354: bord userform = 1,28571428571429 zoom à 355: bord userform = 1,28571428571429 zoom à 356: bord userform = 1,28571428571429 zoom à 357: bord userform = 1,28571428571429 zoom à 358: bord userform = 1,28571428571429 zoom à 359: bord userform = 1,28571428571429 zoom à 360: bord userform = 1,28571428571429 zoom à 361: bord userform = 1,28571428571429 zoom à 362: bord userform = 1,28571428571429 zoom à 363: bord userform = 1,2 zoom à 364: bord userform = 1,2 zoom à 365: bord userform = 1,2 zoom à 366: bord userform = 1,2 zoom à 367: bord userform = 1,2 zoom à 368: bord userform = 1,2 zoom à 369: bord userform = 1,2 zoom à 370: bord userform = 1,2 zoom à 371: bord userform = 1,2 zoom à 372: bord userform = 1,2 zoom à 373: bord userform = 1,2 zoom à 374: bord userform = 1,2 zoom à 375: bord userform = 1,2 zoom à 376: bord userform = 1,2 zoom à 377: bord userform = 1,2 zoom à 378: bord userform = 1,2 zoom à 379: bord userform = 1,2 zoom à 380: bord userform = 1,2 zoom à 381: bord userform = 1,2 zoom à 382: bord userform = 1,2 zoom à 383: bord userform = 1,2 zoom à 384: bord userform = 1,2 zoom à 385: bord userform = 1,2 zoom à 386: bord userform = 1,2 zoom à 387: bord userform = 1,2 zoom à 388: bord userform = 1,125 zoom à 389: bord userform = 1,125 zoom à 390: bord userform = 1,125 zoom à 391: bord userform = 1,125 zoom à 392: bord userform = 1,125 zoom à 393: bord userform = 1,125 zoom à 394: bord userform = 1,125 zoom à 395: bord userform = 1,125 zoom à 396: bord userform = 1,125 zoom à 397: bord userform = 1,125 zoom à 398: bord userform = 1,125 zoom à 399: bord userform = 1,125 zoom à 400: bord userform = 1,125
bon ben alors j'avais raison si chez toi c'est 9 ou 6
9/3 =3 d'où mes 0.3
si avec les sous multiple ca ne prends pas alors fait la même opération avec les entiers
z=.zoom/100+0.3
ou z=(.zoom+(9 ou6)) /100 en fonction du mod
mais c'est tordu c'est quand même une belle erreur dans le system
Bonjour !
Nicolas, Patrick,
c'est quoi exactement le but du jeu ?‼ Car depuis la page 3 - ici c'est la 25 ‼ 8O - je ne vois pas de progrès …
D'après vos captures d'écran, il s'agirait juste de placer le coin supérieur gauche d'un UserForm avec celui de la cellule D3 ?
Pour cela il faut deux lignes de code … Sinon j'aimerais bien comprendre votre chasse au dahu !
Bonjour Marc
ah!! oui!! 2 lignes !!?????
et bien donne moi les deux lignes qui fonctionneraient de 2007 a 2016
tu devrait y aller toi a la chasse au dahu (courir pour rien c'est toujours du sport )c'est bon pour la santé :ptdr:
Déjà d'après les captures d'écran j'aimerais savoir précisément ce qui doit être réalisé ?
ben c'est simple
une fonction qui me placerait le userform en topleftcell d'une cellule en paramètre
on trouve d'innombrables exemple mais aucunes n'est valable les pour toute versions Window/office
aucune n'est valables pour tout les zoom
sauf celle si pour 2007
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 Sub test_sans_api() Dim X As Double, Y As Double, Z As Double, versio, ppx As Double With ActiveWindow Z = (.Zoom) / 100 If Val(Right(Z, 1)) Mod 2 <> 0 And Z <> 1 And Z <> 3 Then ssupp = 0.1: Z = Z + ssupp Debug.Print "zoom rel=" & .Zoom & " : ajustement= " & ssupp & " : coefficiant Z= " & Z & ": zoom appliqué = " & Z * 100 ppx = (.ActivePane.PointsToScreenPixelsY(3) - .ActivePane.PointsToScreenPixelsY(0)) / 3 X = .ActivePane.PointsToScreenPixelsX([d3].Left) Y = .ActivePane.PointsToScreenPixelsY([d3].Top) End With Version = Round(Val(Split(Application.OperatingSystem, " ")(3))) suppleft = IIf(Version > 6.01 Or Version = 0, -5, 4.4) supptop = IIf(Version > 6.01 Or Version = 0, 0, 4.4) With UserForm1 .Show 0 .Left = (X / ppx) * Z + suppleft .Top = (Y / ppx) * Z + supptop End With End Sub
J'en ai une fonctionnant depuis longtemps avec Excel versions 2003, 2007 & 2010,
certainement la même que tu as utilisé …
Comme sur MAC un point est égal à un pixel, le problème ne se pose que sur Windows
pour lequel alors j'utilise une dll comme par exemple gdi32 et sa fonction GetDeviceCaps (zoom à 100%).
Je devrait alors relire le début de cette discussion pour voir si un message d'Unparia m'illumine une paire de neurones …
Enfin quand il fera moins chaud !
je veux bien cette version pour la tester de zoom 50 a zoom 400 même avec les apis
oui celle que tout le monde utilise depuis des lustres sauf qu'elle donne pas un résultat exact pour tout les zoomCitation:
certainement la même que tu as utilisé …
sauf que la dernière que j'ai écrite et n'utilise pas d'apis c'est d'ailleurs le chalenge
bonjour,
Ha..Ha..Ha...
:mouarf: ...no coment.. ;)
Pièce jointe 288930
:mouarf: ...no coment.. ;)
si on devait retenir quelque chose de mon post :Citation:
perso,...j'aime bien ce genre de discution
pourquoi ?,..."parce qu'il y a "à boire et à manger"
...
c'est comme un vide grenier sur le thème de l'affichage,...
...
et...
il y a moi,...qui vient flâner, chaparder, ... ;)
en ce qui concerne les FORMCitation:
Tout est RELATIF... ;)
FORM.Left=[F4].Left
FORM.Top=[F4].Top
FORM.Width=[F4:X4].Width
FORM.Height=[F4:F14].Height
@+JP
a tu seulement testé mjpmjp :ptdr:Citation:
FORM.Left=[F4].Left
FORM.Top=[F4].Top
FORM.Width=[F4:X4].Width
FORM.Height=[F4:K4].Height
bonjour,
oui j'ai testé avec FORM.Height=[F4:F14].Height ;)
@+JP
marc oui zoom a 100 avec un autre zoom c'est la bérézina
mjpmjp tu dois bien etre le seul alors
bonjour,
rectification, çà ne marche plus ???
en fait çà le redimensionne correctement, çà le place aux bonnes coordonnées (proportion de l'onglet) mais sur l'écran ???
j'ai utilisé le même code avec des contrôles activex et çà fonctionne !!!
@+JP
Le calcul de positionnement de contrôles activex est fait par VBA en points et par rapport à la fenêtre active. Tel n'est pas le cas de celui d'un userform (je te l'ai dit plus haut).Citation:
j'ai utilisé le même code avec des contrôles activex et çà fonctionne !!!
reca n'a jamais marché :ptdr::ptdr:Citation:
rectification, çà ne marche plus ???
tout est relatif :mouarf::mouarf:
re
Bon j'ai réussi en mettant cela dans le test
et ça donne çaCode:Z = (.Zoom + (9)) / 100
Pièce jointe 288990
Je n'aime en général pas faire ce que je vais faire ici :
Montrer comment les choses sont traitées et sériées au sein d'un cercle sérieux.
Un exemple de test (parmi de très nombreux, chacun d'entre eux ne concernant qu'un seul aspect à la fois)
Sur une feuille neuve d'un classeur neuf : un bouton de commande et ce code :
regarder ce qui se passe en colonne D et comparer avec colonne C (des écarts différents peuvent être constater en colonne D pour des écarts identiques en colonne C)Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 Private Sub CommandButton1_Click() Cells.Font.Size = 10 For i = 1 To 4 Columns(i).ColumnWidth = 60 Next Range("A1").Value = "POINTS sur fenêtre active" Range("B1").Value = "Correspondance méthode PointsToScreenPixelsX" Range("C1").Value = "écart points/donnée précédente/fenêtre active" Range("D1").Value = "écart PointsToScreenPixelsX/donnée précédente" Range("C2:C100").Formula = "=A3-A2" Range("D2:D100").Formula = "=B3-B2" With ActiveWindow.ActivePane For i = 2 To 100 Range("A" & i).Value = i - 1 Range("B" & i).Value = .PointsToScreenPixelsX(i) Next End With End Sub
Faire cette expérience avec plusieurs facteurs de zoom et regarder à nouveau les résultats.
C 'est là l'UNE des démarches que nous faisons. Toutes sont faites avec la même rigueur.
Aucune n'a pour finalité d'apporter une "soluce" (un cataplasme). Chacune d'entre elles à pour seule finalité de montrer du doigt un bug.
Aucun éparpillement. Aucune supputation, etc, etc ...
Voilà voilà ;)
bonjour à tous,
patrick, j'aime bien ton humour :mouarf:
à part çà j'ai une question (sérieuse ;))
les contrôles et les forms naviguent dans des espaces client différents
quand j'écris :
FORM.Left=[F4].Left
FORM.Top=[F4].Top
FORM.Width=[F4:X4].Width
FORM.Height=[F4:F14].Height
tout fonctionne MAIS dans le ScreenToClient de Windows...donc
FORM.Left et [F4].Left ne cible pas le même espace...
question :
peut on indiquer/cibler/qualifier cet espace -> FORM.Left.sheets() -> FORM.Sheets().Left ...
@+JP
Rien, NICOLAS, ne doit t'impressionner dans ce test.
Regarde-le bien. Il n'est que purement logique et a pour seul but de montrer que les écarts de transpositions ne sont pas ce qu'ils devraient être et que l'on obtient dans certains cas des correspondances différentes pour des valeurs identiques.
Ce test ne cherche à aucun moment de deviner, de dire, de supposer, etc ... que la cause en est ceci ou cela. Il MONTRE l'incohérence et se garde bien de proposer un "remède" alors même que ne sont pas connus les éléments des calculs faits par Microsoft.
Ce qui évitera, déjà, de "présenter" des "soluces" plus fantaisistes les unes que les autres, en affirmant de surcroît ici et là des "Ah ! voilà ! Cette fois-ci "j'ai bon" !)
Combien de "cette fois-ci ?" différentes et pourtant annoncées comme "la soluce" dans cette discussion (puis abandonnées au profit d'une autre "ah ! Cette fois-ci j'ai bon".
Tu comprendras mes réticences réitérées à participer à ce genre de "jeu" ;)
oui on peu plus ou moins y arriver je dis plus ou moins parce que justement le problème ici c'est que d'une version a l'autre c'est géré différemment dans le sens ou par exemple la détermination du point top est compliqué car ne réponds pas pareil sur les version supérieurs de 2007 c'est bien pour ca que ce post perdure
unparia non seulement il y a un bug mais il est différent d'une version a l'autre ca on l'avait compris
alors on dit bug mais ca n'en est peut être pas un c'est peut être un étalonnage pour le quel il nous manque ca logique pour le comprendre
je parle de logique par ce que les résultat même faux sont des suite assez particulière comme tu le démontre chez moi le résultat de ton test (+1,+2,+2,+1,+2,+2,+1,etc....)d'ou l'histoire de mon mod2 et 3 dans ma dernière formule qui fonctionne sur 2007 a 100%
chez Nicolas par exemple se sera diffèrent on la vu
ce qui laisse supposer que pointstoscreenpixels ne fait pas les choses tout seul cette fonction utilise certainement d'autre fonctions/données peu être même matérielles
ca m'étonnerait qu'il l'ai réécrite cette fonction pour chaque versions
parti de la ce n'est pas des cataplasme mais une suite logique selon la versions de window
bien que je te l'accorde c'est assez tordu ils auraient pu faire les choses plus simple
la preuve que la fonction ne donne pas d'erreur malgré tout ce que tu a pu dire et ce que j'ai pu constater c'est que quand on utilise les setcursorpos le curseur est bien placé a tout les coups
ca veut bien dire que cet étalonnage doit subir le calcul pixel to point différemment que ce que l'on croit non (mathématiquement seulement ) mais avec une certaine logique que visiblement ni toi ni moi n'avons compris c'est justement ce nous cherchons ici afin justement d'éviter de faire des paragraphes de code patch ou cataplasme
en tout cas il y a une logique c'est sur
ce qui me renforce sur ce point c'est bien le test cursorposition avec pointstoscreenpixels sans adjuvent de code ou autre , qui lui est toujours bon dans n'importe quelle conditions (zoom,fenetrée,maximisé,etc...)
on pourrait aussi parler du bug du zoom alors qui par la seul opération de multiplication du pointstoscreenpixels par le zoom donne des résultats mathématiquement faux pour la simple et bonne raison que visiblement dans le calcul les donnée sont arrondi a moins de chiffre après la virgule se qui a pour conséquence forcement des résultats mathématiquement faux juste approximatifs
je pense sincèrement en toute humilité que c'est nous qui ne savons pas l'utiliser
pour info ma version 2007 fonctionne a 100% et la ligne 5 correspond a ce que tu décrit dans ton test
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 Sub version_2007() Dim X As Double, Y As Double, Z As Double, versio, ppx As Double With ActiveWindow Z = (.Zoom) / 100 If Val(Right(Z, 1)) Mod 2 <> 0 And Z <> 1 And Z <> 3 Then ssupp = 0.1: Z = Z + ssupp ppx = (.ActivePane.PointsToScreenPixelsY(3) - .ActivePane.PointsToScreenPixelsY(0)) / 3 X = .ActivePane.PointsToScreenPixelsX([d3].Left) Y = .ActivePane.PointsToScreenPixelsY([d3].Top) End With With UserForm1 .Show 0 .Left = (X / ppx) * Z + 4.4 .Top = (Y / ppx) * Z + 4.4 End With End Sub
la vérité est ailleurs mon cher Mulder
parmi lesquelles de tes "vérités" différentes énoncées comme telles jusqu'ici, "mon cher bidule" ? :lol:Citation:
la vérité est ailleurs mon cher Mulder
Ah oui, excuse-moi : ce sera probablement ton prochain "cette fois-ci, j'ai bon" ....
tu déforme encore mes propos
je viens de te dire que moi aussi je ne comprends pas cette logique mais tes test et les miens prouvent bien qu'il y en a une ,les séries que tu trouve ne sont pas désordonnées
reste a savoir comment l'exploiter
pour 2007 la je peux le dire "c'est bon je lai " :ptdr:
c'est pour les version ultérieures que j'ai du mal utilisant seulement les retours des autres ,j'ai du formater ma partition W10 je ne travaille plus que sur W7 2007 et 2010
bonjour,
je n'arrive pas à trouver l'espace de travail ICI en manuel (1253.25 x 195)Code:
1
2USF.Move Application.Left + 3, Application.Top
Pièce jointe 289142
application.left + 3 = 1249.75
@+JP