Changer automatiquement le facteur de zoom selon qu'on ouvre sur Mac ou PC

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

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

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.

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

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

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

Merci pour le tuyau.

A placer dans le code de chaque feuille ?

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

Ahhh. OK. C'est clair.

Merci bcp.

Bonjour,

Le code pourrait s'apparenter à ceci ... un pro pourrait sûrement l'améliorer.

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

re

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

Les 2 codes que je propose fonctionnent sur MAC. je les ai testés avant de poster

Cordialement

Re

Cela fonctionne ou pas ?

Cordialement

Bonjour (et désolé pour cette réponse tardive, je suis sous l'eau).

@ dan : oui, ça marche très bien, merci.

@ ric :

Merci pour cet effort supplémentaire pour m'aider.

Pour l'instant, le simple fait d'avoir un facteur de zoom standard adapté à la plateforme Mac ou PC me convient.

Je mettrai en oeuvre ton code si ça me pose problème. Mais comme j'ai des dizaines de classeurs et au total des centaines de feuilles souvent très différentes les unes des autres, j'ai peur que ça soit assez lourd à implémenter et à maintenir dans le temps.

Un grand merci à tous les 2 en tous cas.

Rechercher des sujets similaires à "changer automatiquement facteur zoom ouvre mac"