Uniformiser le zoom

pricer

XLDnaute Nouveau
Bonjour,

J'ai un classeur avec plusieurs feuilles. Je souhaiterais qu'à l'ouverture du fichier toutes les feuilles soient au meme zoom (80%).

J'ai essayé cette macro :

Private Sub Workbook_Open()
Dim i As Byte
For i = 1 To Sheets.Count
With Sheets(i)
ActiveWindow.Zoom = 80
End With
Next
End Sub

mais elle ne marche pas pour toutes les feuilles !

Merci par avance à vous pour toute proposition.

Bon début de semaine.

Pricer
 

Dull

XLDnaute Barbatruc
Re : Uniformiser le zoom

Salut pricer, le Forum

il faut mettre le code dans le Module ThisWorkbook

à l'activation de n'importe quelle feuille, le Zoom sera à 80%

Code:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Dim i As Byte
For i = 1 To Sheets.Count
With Sheets(i)
ActiveWindow.Zoom = 80
End With
Next
End Sub
Bonne Journée
 

job75

XLDnaute Barbatruc
Re : Uniformiser le zoom

Bonjour pricer, Dull :)

Hum, dans l'aide VBA sur la propriété Zoom :

Cette fonction n'affecte que la feuille active dans la fenêtre. Pour appliquer cette propriété à d'autres feuilles, vous devez d'abord les activer.

Donc dans ThisWorkbook :

Code:
Private Sub Workbook_Open()
Dim F As Object, s As Object
Set F = ActiveSheet 'mémorise la feuille
Application.ScreenUpdating = False
For Each s In Sheets
  s.Activate
  ActiveWindow.Zoom = 80
Next
F.Activate 'restitution
End Sub

Cela suppose bien sûr qu'il n'y ait pas de macros Worksheet_Activate ou Workbook_SheetActivate.

Sinon les neutraliser par :

Code:
Application.EnableEvents = False 'en début de macro

Application.EnableEvents = True 'en fin de macro

A+
 

pricer

XLDnaute Nouveau
Re : Uniformiser le zoom

Bonjour Job 75, le Forum,

Ton code marche très bien merci beaucoup.
Toutefois, quand, je rajoute ce code :

Private Sub Workbook_Open()
Dim i As Byte
For i = 1 To Sheets.Count
With Sheets(i)
.EnableAutoFilter = True
.EnableOutlining = True
.Protect Contents:=True, Password:="TOTO", UserInterfaceOnly:=True
End With
Next
End Sub

Le code ne se compile plus !
J'ai essayé de placer tes deux instructions :

Application.EnableEvents = False 'en début de macro

Application.EnableEvents = True 'en fin de macro

au début et à la fin mais cela ne semble pas marché !

Merci pour toute aide ..

Bonne journée

Pricer
 

job75

XLDnaute Barbatruc
Re : Uniformiser le zoom

Re pricer,

On ne peut pas avoir dans un même fichier 2 macros évènementielles portant le même nom...

Ecrivez donc :

Code:
Private Sub Workbook_Open()
Dim F As Object, s As Object
Set F = ActiveSheet 'mémorise la feuille
Application.ScreenUpdating = False
For Each s In Sheets
  s.EnableAutoFilter = True
  s.EnableOutlining = True
  s.Protect Contents:=True, Password:="TOTO", UserInterfaceOnly:=True
  s.Activate
  ActiveWindow.Zoom = 80
Next
F.Activate 'restitution
End Sub

A+
 

Discussions similaires

Statistiques des forums

Discussions
312 042
Messages
2 084 829
Membres
102 685
dernier inscrit
med_remi021