Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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
Merci @RyuAutodidacte pour ta proposition.

Questions en cours...
  1. Est-ce qu'un Application.Sendkeys altère le Numlock du clavier numérique comme cela le fait sur mon PC. Raison pour laquelle j'utilise CreateObject("wscript.shell").SendKeys (Keys) qui ne fonctionne pas sur MAC.

  2. J'ai utilisé un UserForm affiché en vbModeless mais sur MAC, c'est la cata, ça part dans tous les sens.
    J'ai dû revenir àl'affichage vbModal.

  3. J'ai du mal à position le Top d'un UserForm.
    Alors j'ai vu ce sujet et j'utilise Application.UsableHeight plutôt que Activewindow.Height mais pas encore testé. As-tu des infos là-dessus ?

  4. La fonction Timer semble ne pas fonctionner sur MAC, mais je n'en suis pas sûr.

  5. La fonction Sleep(milliseconds) fonctionne-t-elle ?

  6. Il semble y avoir un SetForegroundWindow mais comment le déclare-t-on sous MAC ?
 
Dernière édition:

RyuAutodidacte

XLDnaute Impliqué
Bonjour @dudu et le fil,

Concernant le point 1 :
Comme sur PC, il vaut mieux passer par la solution avec le système et pour cela il faut faire une procédure (aujourd'hui non direct (anciennement MacScript)) en lançant un script Applescript dont on récupère le résultat :
Exécution d’un AppleScript avec VB
Complete list of AppleScript key codes
PS : Après faut être habitué au script AppleScript

Concernant le point 2 :
Si tu peux me donner 2 exemples (vbModeless et vbModal) je regarderai sur Mac (on ne peut pas faire de Userform, MS nous à supprimer le faite de pouvoir en créer sur Mac )

Concernant le point 3 :
J'y jetterai un coup d'oeil …
 

Dudu2

XLDnaute Barbatruc
Merci pour tes réponses.
Le point 3 est un mystère.

Pour le Point 2 inutile, j'ai constaté en TeamViewer que ça partait dans tous les sens en se positionnant tantôt sur un champ du UserForm tantôt dans une cellule de la feuille. C'est ingérable.

Pour les points 4, 5 et 6 laisse tomber, j'ai utilisé des alternatives.
 

patricktoulon

XLDnaute Barbatruc
bonsoir
window gère excel avec 7 fenêtres(7 handles)
mac aplati
à tester si mac gère les commandbars
pour la gestion des panes je l'ignore si window ou activewindow ne fonctionnent pas c'est mort
VB:
Sub test()
    Dim T#, L#, cel As Range
    Set cel = [D4]
    With Application
        T = .Top + CommandBars("ribbon").Height + (CommandBars(1).Height / 2)
        L = .Left + 19 'les 19 c'est la bande des numéro de lignes

    End With

    With UserForm1
        .startupposition = 0
        .Top = T + cel.Top
        .Left = L + cel.Left
        .Show 0

    End With
End Sub
il faudra ajouter bien entendu des conditions si bar visible ou pas
si le display header visible ou pas
 
Dernière édition:

RyuAutodidacte

XLDnaute Impliqué
Re @Dudu2

Hier j'étais au taf, donc pas eu le temps de tout voir …

• Si la fonction Timer marche sur Mac car je m'en sers pour caculer le temps d'exécution d'une macro

• Pour Sleep Test avec (sur mon Excel c'est passé), exemples (choisi ton temps) :
  1. Code:
    Sub test()
        MacScript ("delay 0.5")
        MsgBox "fini"
    End Sub
  2. VB:
    Sub test2()
        MacScript ("do shell script ""Sleep 0.09""")
        MsgBox "temps écoulé"
    End Sub
Pour vérifier si tu dois exécuter le code sur un Mac ou un PC :
VB:
Sub MacOuPC()
    #If Mac Then
        MsgBox "je suis un Mac"
    #Else
       MsgBox "je suis un PC"
    #End If
End Sub

Si tu as besoin de connaître la résolution de l'écran :
  1. VB:
    Sub ResolutionScreen1()
        Res = MacScript("do shell script ""system_profiler SPDisplaysDataType | grep Resolution""")
        MsgBox Res
    End Sub
    'Résultat : "Resolution: 5120 x 2880 Retina"
  2. VB:
    Sub ResolutionScreen2()
        Res = MacScript("do shell script ""system_profiler SPDisplaysDataType | awk '/Resolution/{print $2, $3, $4}'""")
        MsgBox Res
    End Sub
    'Résultat : "5120 x 2880"
 
Dernière édition:

Discussions similaires

Réponses
3
Affichages
1 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…