XL 2016 Problème à l'ouverture de mon fichier

scoubidou35

XLDnaute Occasionnel
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
 
Solution
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
Bonjour Scoubidou35, le forum

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
 
Dernière édition:

scoubidou35

XLDnaute Occasionnel
Bonjour Scoubidou35, le forum

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
 

scoubidou35

XLDnaute Occasionnel
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
Super ça fonctionne merci beaucoup Yeahou.
Bonne journée
 

Discussions similaires

Réponses
1
Affichages
448
Réponses
8
Affichages
696

Statistiques des forums

Discussions
294 039
Messages
1 935 781
Membres
187 443
dernier inscrit
Sylviestl