Application.ScreenUpdating

Résolu
helpvb Messages postés 32 Date d'inscription jeudi 7 septembre 2006 Statut Membre Dernière intervention 22 avril 2009 - 14 janv. 2008 à 12:19
helpvb Messages postés 32 Date d'inscription jeudi 7 septembre 2006 Statut Membre Dernière intervention 22 avril 2009 - 14 janv. 2008 à 19:10
Bonjour,

J ai un classeur avec 3 onglets
A l ouverture du classeur, je souhaiterais cacher le 1er onglet et afficher les 2 autres. A la fermeture du classeur, l inverse: afficher le 1er onglet et cacher les les 2 autres.

Afin d eviter a l utilisateur le defilement des onglets j ai mis Application.ScreenUpdating = False en debut et
Application.ScreenUpdating = True en fin mais ca ne marche pas !

Ci dessous le code VBA:

Private Sub Workbook_Open()
Dim i As Integer
Application.ScreenUpdating = False
For i = 2 To Sheets.Count
Sheets(i).Visible = True
Next
Sheets(1).Visible = 2
Application.ScreenUpdating = True
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim i As Integer
Application.ScreenUpdating = False
Sheets(1).Visible = True
For i = 2 To Sheets.Count
Sheets(i).Visible = 2
Next
Application.ScreenUpdating = True
End sub

Merci de votre aide
Au plaisir de vous lire :-)

5 réponses

bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
14 janv. 2008 à 16:04
salut,

je ne vois pas la relation entre Application.ScreenUpdating et cacher "les onglets ".

je pense que par cacher "les onglets" il faut comprendre cacher les feuilles.

remplace :

Sheets(1).Visible = 2

par

Sheets(1).Visible = False 'mais peut encore etre rendu visible par l'utilisateur via le menu Format, Feuille

Pour cacher la feuille et qu'elle n'apparaise pas dans la liste du menu Format, Feuille

Sheets(1).Visible = xlVeryHidden

A+
3
helpvb Messages postés 32 Date d'inscription jeudi 7 septembre 2006 Statut Membre Dernière intervention 22 avril 2009
14 janv. 2008 à 16:28
Mon probleme est sur le Application.ScreenUpdating qui ne marche pas
Pas sur les sheet.visible
En d autres terme dans le before close je souhaiterais que le classeur reste positionné sur les onglets deja affiches et non ceux resultant du befor close
C est pour cela que j utilise le Application.ScreenUpdating mais ca ne marche pas
3
bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
14 janv. 2008 à 18:09
...le probleme est que tu mets Application.ScreenUpdating = True dans le BeforeClose. N'oublie que tu n'as pas encore fermé ton fichier. Donc excel vas mettre a jour l'affichage avant de fermet et tu veras alors les onglets apparaitrent.Pour que ca marche il faut laisser Application.ScreenUpdating a false.

Mais pourquoi les faire apparaitre si tu fermes le fichier ?

A+
3
helpvb Messages postés 32 Date d'inscription jeudi 7 septembre 2006 Statut Membre Dernière intervention 22 avril 2009
14 janv. 2008 à 19:08
Cette manip permet de forcer l utilisateur a repondre oui à la question
posée par Excel a l ouverture du document relative à l activation des macros

Ainsi s il repond non il verra l onglet 1 qui contient un message
du style 'vous devez activer les macros pour travailler avec ce document' et ne pourra donc rien faire...

S il repond non les onglets de saisi (les vrais dirions nous) apparaissent

Voila pour l explication de ce code


Donc lors de l ouverture du document si l utilateur repond oui à activation des macros:
il verra les onglets défilés... (pas trop genant J ai mis screenupdating pour eviter ca mais ca marche pas)

A la fermeture du document (seul l onglet 1 apparait helas pas trop de circonstance ) pendant qu Excel pose la question 'voulez vous sauvegarder ?

Je voulais eviter ca en utilisant screenupdating mais ca marche pas.
3

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
helpvb Messages postés 32 Date d'inscription jeudi 7 septembre 2006 Statut Membre Dernière intervention 22 avril 2009
14 janv. 2008 à 19:10
oups petit rectificatif:
juste avant 'voila pour l explication de ce code'
fallait lire ' sil repond oui'
3
Rejoignez-nous