XL 2016 Cherche possesseur de MAC connaissant VBA

  • Initiateur de la discussion Initiateur de la discussion Dudu2
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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
 
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
 
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
 
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 !
 
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 ?
 
@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

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.
 
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
 
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

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
6
Affichages
1 K
Retour