Changer automatiquement le facteur de zoom selon qu'on ouvre sur Mac ou PC Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
Avatar du membre
gloub
Membre impliqué
Membre impliqué
Messages : 1'103
Inscrit le : 17 juillet 2007
Version d'Excel : 2003 sur PC + 365 sur Mac

Message par gloub » 3 février 2019, 08:41

Bonjour le Forum !

Je travaille sur les mêmes fichiers, tantôt sur Mac tantôt sur PC.
Ça me pose un problème d'affichage : la même feuille Excel apparaît beaucoup plus petite sur l'écran d'un Mac que sur un PC.
Donc à chaque changement de plateforme, je dois modifier le facteur de zoom de chaque feuille...

Du coup, pour les fichiers Word, j'utilise une macro ci-dessous, qui résout ce problème.
Naïvement, j'ai cru qu'elle marcherait aussi pour Excel, mais en fait : non.
Je n'obtiens pas de message d'erreur mais il ne se passe rien.
Quelqu'un a-t-il quelque lumière là-dessus ?

Merci !

PS : dans l'idéal, j'aimerais même aller plus loin : le facteur de zoom et la plateforme seraient mémorisés à la fermeture du classeur.
A la prochaine ouverture, le facteur de zoom sera recalculé :
– si Mac vers PC : multiplié par 1,44
– si PC vers Mac : divisé par 1,44
– si ouvert sur la même plateforme qu'à la précédente ouverture : pas de changement
Là ce serait le nirvana.

A la réflexion (et à la différence de Word), il faut faire cette manip pour chaque feuille, donc chaque feuille doit avoir sa variable propre.
Ça complique sûrement la chose.
Sub AutoOpen()
Application.ScreenUpdating = False
'Affichage_Zoom_suivant_plateforme()
    'Tester la constante #Mac
    #If Mac Then
    'si Mac
    ActiveWindow.ActivePane.View.Zoom.Percentage = 144
    #Else
    'si PC
    ActiveWindow.ActivePane.View.Zoom.Percentage = 100
    #End If
End Sub
Avatar du membre
Dan
Modérateur
Modérateur
Messages : 5'904
Appréciations reçues : 77
Inscrit le : 27 avril 2007
Version d'Excel : 2010, 2000, Mac 2011

Message par Dan » 3 février 2019, 10:53

Bonjour

Code à essayer :
Private Sub Workbook_Open()
Dim valeur As Byte
valeur = 100
Application.ScreenUpdating = False
'Affichage_Zoom_suivant_plateforme()
    'Tester la constante #Mac
    #If Mac Then
    'si Mac
    ActiveWindow.Zoom = valeur * 1.44
    #Else
    'si PC
    ActiveWindow.Zoom = valeur
    #End If
Application.ScreenUpdating = True
End Sub
Aller dans l'éditeur VBA et placer le code dans THISWORKBOOK

Cordialement
1 membre du forum aime ce message.
@+ Dan ;)
Avatar du membre
gloub
Membre impliqué
Membre impliqué
Messages : 1'103
Inscrit le : 17 juillet 2007
Version d'Excel : 2003 sur PC + 365 sur Mac

Message par gloub » 3 février 2019, 11:23

Bonjour, et merci Dan !

Testé sur mon PC : ça marche.
Reste à tester au bureau sur Mac, mais je n'ai pas de doute que ça fonctionnera.

En revanche ça pose 2 problèmes (cf le post-scriptum de mon 1er post)
1/ à chaque ouverture du même classeur sur Mac, le facteur de zoom va augmenter d'un facteur 1,44
Est-ce possible de mémoriser si le dernier enregistrement s'est fait sur Mac ?
2/ la macro est unique pour un classeur donné. Donc si j'ai travaillé sur plusieurs feuilles, la correction du facteur de zoom ne s'applique qu'à la feuille affichée lors du dernier enregistrement. J'imagine qu'il faudrait créer une macro par feuille pour gérer ça.

Merci en tous cas.
Avatar du membre
Dan
Modérateur
Modérateur
Messages : 5'904
Appréciations reçues : 77
Inscrit le : 27 avril 2007
Version d'Excel : 2010, 2000, Mac 2011

Message par Dan » 3 février 2019, 14:13

re
1/ à chaque ouverture du même classeur sur Mac, le facteur de zoom va augmenter d'un facteur 1,44
Non. Cela restera à 144.
2/ la macro est unique pour un classeur donné. Donc si j'ai travaillé sur plusieurs feuilles, la correction du facteur de zoom ne s'applique qu'à la feuille affichée lors du dernier enregistrement. J'imagine qu'il faudrait créer une macro par feuille pour gérer ça.
Ajoutez ce code en dessous de l'autre dons dans thisworkbook.
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Dim valeur As Byte
valeur = 100
Application.ScreenUpdating = False
'Affichage_Zoom_suivant_plateforme()
    'Tester la constante #Mac
    #If Mac Then
    'si Mac
    ActiveWindow.Zoom = valeur * 1.44
    #Else
    'si PC
    ActiveWindow.Zoom = valeur
    #End If
Application.ScreenUpdating = True
End Sub
Cordialement
1 membre du forum aime ce message.
@+ Dan ;)
Avatar du membre
gloub
Membre impliqué
Membre impliqué
Messages : 1'103
Inscrit le : 17 juillet 2007
Version d'Excel : 2003 sur PC + 365 sur Mac

Message par gloub » 3 février 2019, 15:00

OK.
Dans ce cas, les feuilles perdent le facteur de zoom qu'on avait choisi avant d'enregistre, mais ce n'est pas si grave dans la mesure où ce sont souvent de petites variations.

Ça marche sur mon PC. Reste à tester sur mon Mac au bureau.

Merci !!!
Avatar du membre
ric
Membre impliqué
Membre impliqué
Messages : 1'773
Appréciations reçues : 143
Inscrit le : 29 mai 2018
Version d'Excel : 365 fr

Message par ric » 3 février 2019, 15:05

Bonjour,

Tu pourrais enregistrer les facteurs de zoom dans une feuille en sortant et les relire et appliquer en rouvrant.

Workbook_BeforeClose et Workbook_Open




ric
1 membre du forum aime ce message.
Avatar du membre
gloub
Membre impliqué
Membre impliqué
Messages : 1'103
Inscrit le : 17 juillet 2007
Version d'Excel : 2003 sur PC + 365 sur Mac

Message par gloub » 3 février 2019, 15:12

Merci pour le tuyau.

A placer dans le code de chaque feuille ?
Avatar du membre
ric
Membre impliqué
Membre impliqué
Messages : 1'773
Appréciations reçues : 143
Inscrit le : 29 mai 2018
Version d'Excel : 365 fr

Message par ric » 3 février 2019, 15:19

Bonjour,

Ben non, une feuille masquée où tu enregistres la valeur du Zoom pour chaque feuille

for each sh in thisworkbook ....
Feuille x ... zoom = x
Feuille x ... zoom = x
Feuille x ... zoom = x




ric
Avatar du membre
gloub
Membre impliqué
Membre impliqué
Messages : 1'103
Inscrit le : 17 juillet 2007
Version d'Excel : 2003 sur PC + 365 sur Mac

Message par gloub » 3 février 2019, 15:36

Ahhh. OK. C'est clair.
Merci bcp.
Avatar du membre
ric
Membre impliqué
Membre impliqué
Messages : 1'773
Appréciations reçues : 143
Inscrit le : 29 mai 2018
Version d'Excel : 365 fr

Message par ric » 3 février 2019, 16:22

Bonjour,

Le code pourrait s'apparenter à ceci ... un pro pourrait sûrement l'améliorer. :roll:
Reste à adapter le nom de la feuille de stockage (qui pourrait être masquée).
Reste à tester ou adapter pour MAC.
Option Explicit

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim sh As Worksheet
Dim x As Integer
Dim Ws As Worksheet

   Set Ws = Worksheets("Feuil2")
   x = 1
   For Each sh In ThisWorkbook.Worksheets
      Ws.Cells(x, "A") = sh.Name
      sh.Activate
      Ws.Cells(x, "B") = ActiveWindow.Zoom
      x = x + 1
   Next sh
End Sub

Private Sub Workbook_Open()

Dim sh As Worksheet
Dim x As Integer
Dim Ws As Worksheet
Dim Dlig As Integer

   Set Ws = Worksheets("Feuil2")
   Dlig = Ws.Cells(Rows.Count, "A").End(xlUp).Row

   For x = 1 To Dlig
      Worksheets(Ws.Cells(x, "A").Value).Activate
      ActiveWindow.Zoom = Ws.Cells(x, "B").Value
   Next x
End Sub


ric
1 membre du forum aime ce message.
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message