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
 

Dudu2

XLDnaute Barbatruc
Comment @RyuAutodidacte, tu ne connais pas le fameux Calendar universel de @patricktoulon ?! 😱
If Mac then 1 else ptopx terminé
Ça me semble parfaitement correct.

@Dudu2 j'ai un problème avec ton if moi
ta condition IgnoreUserFormExternalMargins m'ajoute bien le décalage a gauche
mais ta condition suivante me l'enleve puisque je suis en dessous des 2.5
Moi je suis perdu dans tes configs et tes tests.
La config "standard", où t'as pas modifié les options d'Aero et autres, c'est celle qui n'a pas besoin d'une correction de marge ou bien celle qui en a besoin d'une de 2.4 points (4.8 / 2) ? Post #130 ou Post #170 ?
 

patricktoulon

XLDnaute Barbatruc
celle que j'avais au début c'est d'origine
ombre
dimension de l'ombre
le peek
dimension du texte des barre de titre
etc etc
pas de recadrage

j' ai supprimé toutes ses cochonneries ,perso pour travailler c'est plus net
mais là il y a recadrage
ça prouve bien que wmapi.dll veille aux grains

il n'y a pas a ce perdre
mon width-insidedwidth=4.8(je te l'ai donné tout à l'heure)
divisé par 2 ca fait 2.4 conclusion ta 2d condition me l'enlève c'est tout
tu devrait tout simplement descendre la tolérence
if marginLeft>2 then
teminé ;)
 

Dudu2

XLDnaute Barbatruc
Cette tolérance je l'ai mise par rapport à ton retour sur le Width - InsideWidth de 4.8 uniquement.
Donc je n'ai pas de raison de la garder et dois simplement la supprimer. Finalement retour à la version initiale.

Edit: fichier supprimé car retour non fiable.
 
Dernière édition:

patricktoulon

XLDnaute Barbatruc
@Dudu2 tu fatigue ou quoi?

c'est ton code
VB:
'Ignore UserForm external margins for a precise visual position
    If IgnoreUserFormExternalMargins Then
        LeftMarginShift = (UserForm.Width - UserForm.InsideWidth) / 2
' DONC CA ME MET LE 2.4 on est d'accords

et après tu fait ça

Code:
#If Mac Then
        TopMarginShift = LeftMarginShift
#Else
        'Windows old UserForm versions have a difference (Width - InsideWidth) = 4.8 and must NOT be shifted
        'Windows new UserForm versions have a difference (Width - InsideWidth) = 10.8 and must be shifted
      '*****************************************************************************'
       If LeftMarginShift < 2.5 Then LeftMarginShift = 0'il faut que je remtte 2 ici
       'ici tu me l'enlève forcement puisque moi c'est 2.4 ET NON 2.5 !!!!!!!!
 

RyuAutodidacte

XLDnaute Impliqué
sérieux il faut encore que je présente le calendar ? 🤣
Oui oui présente le moi :D
diabolo.gif
;)
 

Dudu2

XLDnaute Barbatruc
pour moi c'est bon en thème épuré de toute cochonnerie embellissement graphique windows
Ce que je ne sais toujours pas c'est si, dans ton environnement, cette épuration correspond à une configuration par défaut (on va dire initiale Windows sans modifications ultérieures) ou si c'est après tes interventions diverses sur les paramètres d'affichage.

Car si c'est après tes interventions, faut que je remette le test < 2.5. Car très peu de gens vont modifier ces trucs.
 

patricktoulon

XLDnaute Barbatruc
Ce que je ne sais toujours pas c'est si, dans ton environnement, cette épuration correspond à une configuration par défaut (on va dire initiale Windows sans modifications ultérieures) ou si c'est après tes interventions diverses sur les paramètres d'affichage.

Car si c'est après tes interventions, faut que je remette le test < 2.5. Car très peu de gens vont modifier ces trucs.
de toute facon il y aura toujours des configs diverses et variées c'est pour ca que comme je te l'ai dit j'avais abandonné cette piste
ton fichier1B sur windows 7 et office 2013
1696100015868.png



avec le marginleft positif(pas divisé par 2)
VB:
    'Ignore UserForm external margins for a precise visual position
    If IgnoreUserFormExternalMargins Then
        LeftMarginShift = (UserForm.Width - UserForm.InsideWidth) ' / 2

#If Mac Then
        TopMarginShift = LeftMarginShift
#Else
        'Calculate UserForm Caption Height
        'UserFormHeight = UserForm.Height
        'UserForm.Height = 0
        'CaptionHeight = UserForm.Height
        'UserForm.Height = UserFormHeight
        'TopMarginShift = (UserForm.Height - CaptionHeight - UserForm.InsideHeight) '/ 2
        
        'Windows étrangement ne positionne pas sur la marge !?
        TopMarginShift = 0
#End If
    End If
    
    Set Pan = ObjectPane(WorksheetObject, Visible:=False)
    
#If Mac Then
    UserForm.Left = Pan.PointsToScreenPixelsX(WorksheetObject.Left) - LeftMarginShift + HorizontalShiftPoints
    UserForm.Top = Pan.PointsToScreenPixelsY(WorksheetObject.Top) - TopMarginShift + VerticalShiftPoints
#Else
    UserForm.Left = PixelsToPointsX(Pan.PointsToScreenPixelsX(WorksheetObject.Left)) + LeftMarginShift + HorizontalShiftPoints
    UserForm.Top = PixelsToPointsY(Pan.PointsToScreenPixelsY(WorksheetObject.Top)) - TopMarginShift + VerticalShiftPoints
#End If
1696100241461.png
 

Discussions similaires

Réponses
3
Affichages
1 K