XL 2016 Cherche possesseur de MAC connaissant VBA

Dudu2

XLDnaute Barbatruc
Bonjour,

Pour un XLDNaute du Canada j'ai développé un code sous Windows.
Je vire tout ce qui est API Windows. Et tous les caractères accentués.

1 - Cependant comment fait-on en MAC pour trouver le ratio Point / Pixel ?
2 - Y a-t-il une fonction Sleep(milliseconds) ?

Merci par avance
 

RyuAutodidacte

XLDnaute Impliqué
Re,
j'ai désactivé ces 2 lignes :
1695847846253.png

Sinon :

1695847880531.png



Sans les 2 lignes avec 1 :

1695847802806.png
1695847975406.png
1695848026729.png


Par contre si la cellule est en dehors de la range visible le Userform se retrouve a BabelOued
ca marche si F4 reste visible dans la range visible
 

RyuAutodidacte

XLDnaute Impliqué
Bonjour,
@Dudu2

Avec :
VB:
    Private Declare PtrSafe Function GetDC Lib "user32" (ByVal hwnd As LongPtr) As LongPtr
    Private Declare PtrSafe Function ReleaseDC Lib "user32" (ByVal hwnd As LongPtr, ByVal hDC As LongPtr) As Long
    Private Declare PtrSafe Function GetDeviceCaps Lib "gdi32" (ByVal hDC As LongPtr, ByVal nIndex As Long) As Long
    '
    Private Const LOGPIXELSX = 88  'Pixels/inch in X
    Private Const LOGPIXELSY = 90  'Pixels/inch in Y

J'aimerais bien savoir ce que tu récupère et les calculs qui se font de manière littéral stp
 

Dudu2

XLDnaute Barbatruc
Bonjour à tous,
Ah ouais ! Bizarre ce dépassement de capacité en MAC !

Sinon c'est bien un coefficient de 1 qu'il faut prendre, ce qui simplifie l'affaire.

Par contre si la cellule est en dehors de la range visible le Userform se retrouve a BabelOued
ca marche si F4 reste visible dans la range visible
Ça oui, je n'ai pas testé si l'objet cible (F4 en l'occurrence) est dans le VisibleRange.
C'est une fonction générique qui place le UserForm sur l'objet désigné par un paramètre.
A charge de l'appelant de positionner l'objet dans le VisibleRange... s'il le souhaite !
 

Dudu2

XLDnaute Barbatruc
Donc voilà la fonction PositionUserFormOnSheetObject() dans le Module_PositionUserFormOnSheetO rendue compatible MAC après tous nos efforts !
 

Pièces jointes

  • VBA Positionner un UserForm sur un Objet d'une feuille (Simple).xlsm
    40 KB · Affichages: 0

RyuAutodidacte

XLDnaute Impliqué
Donc voilà la fonction PositionUserFormOnSheetObject() dans le Module_PositionUserFormOnSheetO rendue compatible MAC après tous nos efforts !
@dudu
Je tiens à préciser que ma version Mac Marche correctement sur tous les Macs avec le
VB:
PtToPx = 0.75
même si F4 est out Range visible
Mon seul problème se trouve sur l'axe des Y (hauteur) sur PC.

Edit : Là ou je ne comprends pas c'est que j'ai eu le même résultat ok PC et MAC avec les 2 portables.
Est ce pcq les portables Mac et PC sont tous 2 des 14 pouces ?
 

Dudu2

XLDnaute Barbatruc
@RyuAutodidacte, je sais pas te dire parce que je me suis focalisé sur la position du UserForm par rapport à un objet de la feuille (Cellule, Forme, Image, etc...)

Mais... ce n'est pas tout ! Les éternels insatisfaits perfectionnistes sont à l'oeuvre, et encore une fois, les marges du UserForm reviennent sur le tapis.

J'ai essayé de les éliminer sans API pour un positionnement visuellement précis (même s'il est théoriquement faux), à vérifier sur vos environnements.

Chez moi ça donne ça:
1695890165023.png
 

Pièces jointes

  • Classeur1B.xlsm
    35.9 KB · Affichages: 3

Dudu2

XLDnaute Barbatruc
Et surtout j'ai utilisé Pan.PointsToScreenPixelsX/Y qui, très important, tient compte du Zoom.
Donc il te faut le Pane de l'objet (la cellule) au cas où la feuille serait fractionnée.
Je ne sais pas comment tu peux y arriver sans le Pane et le Pan.PointsToScreenPixelsX/Y.
A mon avis, tu vas faire le tour du monde pour trouver un équivalent qui aura du mal à fonctionner dans tous les cas.

A l'occasion merci de tester mon dernier classeur pour voir si la précision sur le coin de F4 est aussi sur MAC. Et sur PC dans d'autres environnement.
 

patricktoulon

XLDnaute Barbatruc
re
on c'est apercu avec les années
que la solution du (height-insidheight et width-insidewidth) même si elle semble être la solution
n’était en aucun cas le vrai calcul a faire
parti de là ;difficile de te dire si /2 ou autre serait une solution pérenne
c'est bien pour ça que je t'ai amené dans une autre discussion sur l'api Wmapi.dll
alors oui chez mac ce n'est pas possible donc peut est ce une solution provisoire
mais en aucun cas une règle

pour te donner mon avis (je pense suffisamment expérimenté sur la question)
si ça tombe juste c'est de la chance
non pas que je mette ton travail en doute

d'ailleurs
sur W7
height-insideheight=19 alors qu'il faut 21 donc 19+2 par exemple sur mon pc portable hp pavillon
et su le pc fic W7 c’était 21 donc +2 = 23 et la on dépasse
sur w10 on constate même une valeur négative selon le thème
et justement sur les pcs les pc de series vendus, les thèmes sont différents

d'ailleurs mes premiers travaux sur cette questions (on peut retrouver facilement la discussion)
utilisait un switch sur la version W + office
ce qui a vite été (tu t'en doute) un calvaire pour combiner des case (version W/ version Office)
et de plus c'est révélé être faux

tu es au courant de tout ça les discussion sont multiples au quelles tu à participé me semble t il



donc ma conclusion reste la même depuis deux ans que je te l'ai dis
même si ça semble logique je ne pense pas que ce soit le calcul à faire
et donc comme je l'ai dis dans la premiere page de ce post
sans api c'est à appréciation humaine pour la précision
 

Dudu2

XLDnaute Barbatruc
Oui, je me souviens évidemment très bien de ces longues discussions et tests en API que j'ai évidemment gardés dans des fonctions, comme dans le fichier joint.

Là l'idée est de faire au mieux sans API car l'API sur MAC il faut oublier.
De toutes façons, dans la fonction sans API, la correction ne peut pas faire de mal et aboutit à une position qui parfois est excellente, parfois légèrement décalée. Faut juste faire avec.

D'ailleurs j'aimerais bien voir ce que ça donne sur MAC (fichier du Post #103).
 

Pièces jointes

  • VBA Positionner un UserForm sur un Objet d'une feuille (Correction des marges).xlsm
    45.1 KB · Affichages: 0

Discussions similaires

Réponses
3
Affichages
1 K

Membres actuellement en ligne

Statistiques des forums

Discussions
315 111
Messages
2 116 340
Membres
112 720
dernier inscrit
henri marc michel