Bonjour à tous,
J'ai un souci avec mon fichier excel lorsque que je l'ouvre il affiche durant 3-4 seconde le dernier onglet qui était ouvert à la fermeture du fichier. Alors que j'ai mis un code VBA pour qu'il m'ouvre le fichier directement à la feuille "Sommaire".
Est ce que quelqu'un peu me dire ou j'ai fait une erreur ? Merci
Voici le code :
VB:
Private Sub Workbook_Open()
'ouverture du fichier à l'onglet "sommaire"
Application.EnableEvents = False
Sheets("Sommaire").Activate
Range("B3").Select
Application.EnableEvents = True
'code pour mettre à jour le tab_ANNEE à l'ouverture du fichier
Application.ScreenUpdating = False
With [Tab_ANNEE]
If Application.CountA(.Cells) Then .Delete xlUp 'RAZ
.Cells(1) = 2015
.Resize(Year(Date) - 2013).DataSeries
End With
ActiveWorkbook.Worksheets("CODIFICATION").ListObjects("Tab_ANNEE").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("CODIFICATION").ListObjects("Tab_ANNEE").Sort.SortFields. _
Add Key:=Range("Tab_ANNEE"), SortOn:=xlSortOnValues, Order _
:=xlDescending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("CODIFICATION").ListObjects("Tab_ANNEE").Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Me.Saved = True 'évite l'invite à la fermeture si aucune modification
End Sub
Re, Scoubidou
il faut activer l'accès approuvé au projet Visual Basic dans les paramètres de sécurité pour la commande VBE, j'oublie toujours.
voici un code modifié qui passera que l'accès au projet VB soit approuvé ou non, plus pratique en développant.
VB:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
On Error Resume Next
If Not ThisWorkbook.VBProject.VBE.MainWindow.Visible Then
ThisWorkbook.Activate
Sheets("Sommaire").Select
End If
On Error GoTo 0
End Sub
si tu veux faire ça, le mieux est de passer par beforesave sinon la feuille active enregistrée s'affichera le temps d'initialisation du classeur
le ThisWorkbook.VBProject.VBE.MainWindow.Visible empêchera le code de s'exécuter en sauvegardant dans VBE
Bien cordialement
VB:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If Not ThisWorkbook.VBProject.VBE.MainWindow.Visible Then ThisWorkbook.Activate: Sheets("Sommaire").Select
End Sub
si tu veux faire ça, le mieux est de passer par beforesave
le ThisWorkbook.VBProject.VBE.MainWindow.Visible empêchera le code de s'exécuter en sauvegardant dans VBE
sinon la feuille active enregistrée s'affichera le temps d'initialisation du classeur
Bien cordialement
VB:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
If Not ThisWorkbook.VBProject.VBE.MainWindow.Visible Then ThisWorkbook.Activate: Sheets("Sommaire").Select
End Sub
Bonjour Yeahou
J'ai copié ton code et collé dans ThisWorkbook et j'ai effacé la première partie de mon code et il bug et indique que la méthodeVBProject... a échoué.
Re, Scoubidou
il faut activer l'accès approuvé au projet Visual Basic dans les paramètres de sécurité pour la commande VBE, j'oublie toujours.
voici un code modifié qui passera que l'accès au projet VB soit approuvé ou non, plus pratique en développant.
VB:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
On Error Resume Next
If Not ThisWorkbook.VBProject.VBE.MainWindow.Visible Then
ThisWorkbook.Activate
Sheets("Sommaire").Select
End If
On Error GoTo 0
End Sub
Re, Scoubidou
il faut activer l'accès approuvé au projet Visual Basic dans les paramètres de sécurité pour la commande VBE, j'oublie toujours.
voici un code modifié qui passera que l'accès au projet VB soit approuvé ou non, plus pratique en développant.
VB:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
On Error Resume Next
If Not ThisWorkbook.VBProject.VBE.MainWindow.Visible Then
ThisWorkbook.Activate
Sheets("Sommaire").Select
End If
On Error GoTo 0
End Sub