XL 2021 ActiveWorkbook.Save avant Private Sub Workbook_Open()

Usine à gaz

XLDnaute Barbatruc
Bonjour à toutes et à tous :)

Et une question bizarre de plus lol 🤣🙃;)

J'ai un code pour enregistrer mon classeur :
VB:
Sub Enregistre()
If [m1] = "TEXTBOX OUVERT" Then Exit Sub
    If [p4] > 0 Then
        ActiveCell.Offset(0, 5).Select
        Exit Sub
    End If
Application.EnableEvents = False
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
    ActiveWorkbook.Save
[A1].Select
Application.EnableEvents = True
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
ActiveSheet.Protect Password:="", DrawingObjects:=True, Contents:=True, Scenarios:=True
End Sub

Donc mon code de démarrage :
Code:
Private Sub Workbook_Open()
Enregistre
etc...
end sub

Voilà ma question certainement bizarre :
Est-il possible d'enregistrer mon classeur là où il est avant exécution de Private Sub Workbook_Open(), soit :
Code:
ActiveWorkbook.Save
Private Sub Workbook_Open()
etc...
end sub

Je serais surpris que ce soit faisable mais avec nos Ténors de chez Ténor.....
Si pas possible avec code Excel, peut être un code Windows ???

Merci à toutes et à tous pour vos retours :)
 
Dernière édition:

TooFatBoy

XLDnaute Barbatruc
ensuite ça marche
On tourne encore en rond là...

Tu dis que tu ne peux pas l'ouvrir.
Je te réponds que pourtant tu as donné une solution pour l'ouvrir, et que tu peux donc mettre le Stop.
Tu me réponds que ça ne sert à rien parce que le fichier s'ouvre correctement.
Donc je te dis que ton problème est résolu.
Tu me réponds que non parce que le classeur se ferme à l'ouverture.

Je te dirais bien de mettre un Stop en première instruction de la macro Workbook_Open, mais du coup tu vas me répondre, soit que tu ne peux pas ouvrir le classeur, soit que ça ne sert à rien parce que le classeur s'ouvre... 🤪
 

Usine à gaz

XLDnaute Barbatruc
On tourne encore en rond là...

Tu dis que tu ne peux pas l'ouvrir.
Je te réponds que pourtant tu as donné une solution pour l'ouvrir, et que tu peux donc mettre le Stop.
Tu me réponds que ça ne sert à rien parce que le fichier s'ouvre correctement.
Donc je te dis que ton problème est résolu.
Tu me réponds que non parce que le classeur se ferme à l'ouverture.

Je te dirais bien de mettre un Stop en première instruction de la macro Workbook_Open, mais du coup tu vas me répondre, soit que tu ne peux pas ouvrir le classeur, soit que ça ne sert à rien parce que le classeur s'ouvre... 🤪
"Tu me réponds que non parce que le classeur se ferme à l'ouverture."

Oui et le lendemain et je suis obligé de faire la même manipulation :
- d'ouvrir un classeur qui fonctionne,
- de désactiver les macros,
- d'ouvrir tous les autres classeurs 1 par 1,
- de les sauvegarder et de les fermer,
ensuite ça marche,
Grrr !!!
Et ça recommence le lendemain matin lol
 

Usine à gaz

XLDnaute Barbatruc
Pardon, mais tu as quand même l'esprit tordu : tu demandes comment exécuter la macro Workbook_Open en pas à pas, je t'explique comment faire et tu me réponds que ça ne sert à rien...
Je ne sais plus comment dire : Quand j'ouvre les fichiers le matin (même après avoir mis un Stop la veille), ça n'a pas d'effet et les fichiers se referment direct et je suis obligé de recommencer :

- ouvrir un classeur qui fonctionne,
- désactiver les macros,
- ouvrir tous les autres classeurs (macros désactivées) 1 par 1,
- les sauvegarder et les fermer,

ensuite ça marche,
Et là, le pas à pas ne me sert à rien :)
 

Usine à gaz

XLDnaute Barbatruc
C'est pour le moins étrange vu que le Stop est la première chose rencontrée lors de l'ouverture.
C'est bien ce que je me dis aussi.
Encore merci à toi de bien vouloir m'aider pour mon souci compliqué :)

Si la solution de Gérard fonctionne, ce sera bon :)

Je garderai quand même les fichiers qui se referment pour peut-être un jour trouver ce qui ne va pas car il serait intéressant de savoir pkoi.
:)
 
Dernière édition:

TooFatBoy

XLDnaute Barbatruc
Résumons :

1- Tu dis vouloir exécuter la macro Workbook_Open en pas à pas.

2- Tu dis que tu ne sais pas comment on fait pour exécuter la macro Workbook_Open en pas à pas.

3- Je te dis de mettre un Stop au tout début de cette macro.

4- Tu me réponds que tu ne peux pas parce que le fichier plante à l'ouverture.

5- Je te dis de mettre le Stop lorsque le fichier a réussi à s'ouvrir sans planter.

6- Tu me réponds que tu as déjà essayé (ce qui contredit 2- et 4-) mais que ça plante avant d'arriver au Stop.

7- Pour toi, bien que le fichier plante avant même d'arriver sur la première instruction VBA n'est pas signe que le fichier est corrompu, et donc tout cela est normal.

J'ai bon ? J'ai bien résumé ?


Je suppose que tu ne peux nous fournir ton fichier pour qu'on voit si on a le même problème fonctionnement. :(
 

job75

XLDnaute Barbatruc
Bonsoir Lionel, TooFatBoy,

Je comprends qu'il faut ouvrir un fichier sans que la macro Workbook_Open s'exécute.

Alors mettez cette macro dans un fichier vierge et exécutez-la :
VB:
Sub Ouvrir()
Dim fichier As Variant
fichier = Application.GetOpenFilename
If fichier = False Then Exit Sub
Application.EnableEvents = False
Workbooks.Open fichier
Application.EnableEvents = True
End Sub
A+
 

Usine à gaz

XLDnaute Barbatruc
Bonsoir Lionel, TooFatBoy,

Je comprends qu'il faut ouvrir un fichier sans que la macro Workbook_Open s'exécute.

Alors mettez cette macro dans un fichier vierge et exécutez-la :
VB:
Sub Ouvrir()
Dim fichier As Variant
fichier = Application.GetOpenFilename
If fichier = False Then Exit Sub
Application.EnableEvents = False
Workbooks.Open fichier
Application.EnableEvents = True
End Sub
A+
Bonsoir Gérard :)

- J'ai créé le fichier vierge et mis ton code.

- J'ai ensuite téléchargé de skype un fichier qui, habituellement se referme tout seul à l'ouverture.
- Je l'ai ouvert avec ton code,
- Il s'ouvre macros désactivées,
- Je le ferme en le sauvegardant.
- A la réouverture (même plusieurs fois) ça ne beug plus lol ...
Magique
Merci Gérard pour cette nouvelle possibilité
-----------------------------------------------------------------------------------------------------------
Je tiens également à te dire :
"Bjr @TooFatBoy :), le Forum,
Bon WE à toutes et à tous :)

Merci pour ta présence...
Pour l'instant, et depuis plusieurs jours, je teste la solution que m'a donné Gérard #posts 10 et 11.
Sur plusieurs jours, il semble que ça fonctionne ... 🥳

:)
-
 

Usine à gaz

XLDnaute Barbatruc
Bjr Gérard :), Bjr Patrick :), Bjr TooFatBoy :), le Fil, Le Forum :)
J+1 (soit ce dimanche matin)
Ce matin j'ai fait ceci :
- J'ai ouvert le classeur avec le code de Gérard,
- J'ai ouvert (1 par 1) mes fichiers au(x) clic(s) sur le bouton macro,
- Il(s) s'ouvre(nt) macros désactivées,
- Je le(s) ferme en les sauvegardant.
- A la réouverture (même plusieurs fois) ça ne beug pas lol ...
Magique
Merci Gérard pour cette nouvelle possibilité :)

Demain, j'en ouvrirai qu'un seul avec le code de Gérard.
Ensuite j'ouvrirai tous les autres sans l'aide du code de Gérard pour voir si le fait d'en ouvrir un avec le code de Gérard suffit pour que les autres classeurs s'ouvrent normalement.
 
Dernière édition:

Usine à gaz

XLDnaute Barbatruc
Je ne peux pas mettre le fichier ici car trop gros et données confidentielles.
Je craignais de mettre mon code Workbook_Open par crainte qu'on rit de moi.
Toutefois, je pense qu'il me faut le mettre et que j'aurais du commencer par le mettre.
je vous prie de m'en excuser:oops:
Le voici :
VB:
Private Sub Workbook_Open()
Application.OnKey "%{F8}", "Interdit"
Application.EnableEvents = False
Application.ScreenUpdating = False
[A1].Select
Gérard_Comptage
Worksheets("Appels").Protect Password:="", UserInterfaceOnly:=True
Worksheets("Table").Protect Password:="", UserInterfaceOnly:=True
Worksheets("Confirme_sms").Protect Password:="", UserInterfaceOnly:=True
Worksheets("SMS RdV").Protect Password:="", UserInterfaceOnly:=True
Worksheets("Argu_Objections").Protect Password:="", UserInterfaceOnly:=True
Worksheets("RdV_transfert").Protect Password:="", UserInterfaceOnly:=True
Worksheets("RdV_faits").Protect Password:="", UserInterfaceOnly:=True
'-----------------------------------------------------------------------------
If Sheets("Table").[n2] < Date + 15 And Sheets("Table").[n2] > Date Then
modepasse
End If
If Sheets("Table").Range("n2") < Date Then
modepasse
If Sheets("Table").Range("n2") < Date Then
RétabliMenu
Application.EnableEvents = False
Application.ScreenUpdating = False
Application.DisplayAlerts = False
    Dim Onglets As Worksheet
For Each Onglets In Worksheets
Onglets.Visible = True
Next Onglets
Sheets("accueil").Select

Dim X As Long
For X = 1 To ThisWorkbook.Sheets.Count
    If Sheets(X).Name <> "Feuil1" Then Sheets(X).Select Replace:=False
Next X
Supprimer
    Application.DisplayAlerts = False
    Dim Sh As Object, s As Shape, fn$
        For Each Sh In Me.Sheets
            If Sh.ProtectContents Then Sh.Protect "", UserInterfaceOnly:=True
        For Each s In Sh.Shapes
            If s.OnAction <> "" Then s.Delete
    Next s, Sh
    fn = Me.FullName
    Me.SaveAs Left(fn, InStrRev(fn, ".") - 1), 51
        Kill fn
        If Workbooks.Count = 1 Then
        Application.Quit
        Else: ThisWorkbook.Close
        End If
    Exit Sub
    Me.Sheets("Recp").Activate
    End If
    End If
'----------------------------------------------------------------------------
Application.ExecuteExcel4Macro "SHOW.TOOLBAR(""Ribbon"",False)"
Application.CommandBars("Formatting").Enabled = False
'----------------------------------------------------------------------------
Application.DisplayFormulaBar = False
With Application
 .WindowState = xlMaximized 'window max
End With

ThisWorkbook.Names.Add "MonNom", Environ("ComputerName"), Visible:=False
If Environ("COMPUTERNAME") = "DESKTOP-A8RA7I3" Then 'DESKTOP-A8RA7I3
Sheets("Table").[m2] = ""
Sheets("Table").[m4] = ""
Else
Sheets("Table").Unprotect Password:=""
    xNom = ActiveWorkbook.Name
    xPos = InStr(1, xNom, 2)
    xDat = Mid(xNom, xPos, 10)
    xDecoupe = Split(xDat, " ")
    xDateFinale = CDate(xDecoupe(2) & "/" & xDecoupe(1) & "/" & xDecoupe(0))
    Sheets("Table").[m2] = xDateFinale

Sheets("Table").[m4] = Date
If Sheets("Table").[m2] <> Sheets("Table").[m4] Then
    MsgBox ("Holla ! vous n'êtes pas sur le bon fichier. Prenez le fichier du jour !")
    If Not ThisWorkbook.Saved Then ThisWorkbook.Save
    If Workbooks.Count = 1 Then Application.Quit Else ThisWorkbook.Close
    Exit Sub
End If
End If

    On Error Resume Next
    ActiveWorkbook.Names("MaCell").Delete
    Application.EnableEvents = False
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
    Sheets("Appels").Select
    ActiveSheet.Unprotect Password:=""
    Rows("4").RowHeight = 35
    Range(Cells(1, 13), Cells(1, 1)).Select
    ActiveWindow.Zoom = True 'ActiveWindow.Zoom = 114
    [A1].Select

    ActiveSheet.Unprotect Password:=""
    [n:p] = ""
    [A6].RowHeight = 0
    Sheets("Argu_Objections").Range("b3") = ""
    Sheets("Argu_Objections").Range("b4") = ""
    Sheets("Argu_Objections").Range("b5") = ""
    ArrêterClignote1

    tri_rappels
    ActiveSheet.Unprotect Password:=""
    Application.ScreenUpdating = False
    Application.EnableEvents = False
    Application.Calculation = xlCalculationManual

    [C2].FormulaR1C1 = "=""lignes Total ""&COUNTA(R[5]C[-2]:R[9998]C[-2])&"" - Appelées ""&COUNTA(R[5]C[9]:R[9998]C[9])&"" - NON traitées ""&COUNTA(R[5]C[-2]:R[9998]C[-2])-COUNTA(R[5]C[9]:R[3169]C[9])&"" - Entretiens ""&Comptage_appels!R3C12&"" - Répondeurs ""&Comptage_appels!R3C13&"" - Doublons ""&Comptage_appels!R3C14"
    [L4] = "=""STATS RdVs : Total pris : "" &Comptage_appels!R[-2]C[6]&"" - ""&Comptage_appels!R[-1]C[6]&""%""&CHAR(10)&" & Chr(10) & """s/mois EC ""&Comptage_appels!R[-2]C[8]&"" - ""&Comptage_appels!R[-1]C[8]&""% - ""&" & Chr(10) & """Ce jour ""&Comptage_appels!R[-2]C[10]&"" - ""&Comptage_appels!R[-1]C[10]&"" %""&CHAR(10)&" & Chr(10) & """RdVs/Entretiens : ""&Comptage_appels!R[-1]C[11]&"" %"""

    [A1].Select
    ActiveWindow.ScrollRow = Selection.Row
         compter
    On Error Resume Next
    Application.EnableEvents = False
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
    ActiveSheet.Unprotect Password:=""
        [j5] = "Atteindre ligne FIN"
        Range("A6:zz10000").AutoFilter
        Range([a7], Cells(Rows.Count, "a").End(xlUp)).RowHeight = 55
            With ActiveSheet 'Feuil1 'CodeName
            If .FilterMode Then .ShowAllData 'si la feuille est filtrée
                With .Rows("7:" & .Range("J65536").End(xlUp).Row)
                'If .Row < 7 Then Exit Sub 'sécurité
                .Sort .Columns(10), xlAscending, Header:=xlNo
                End With
            End With

        atteindre_pl
        [j4] = "TOUT"

        'ICI VOIRE SI NUMBERFORMAT EST BON
        Range([b7:g7], Cells(Rows.Count, "b").End(xlUp)).NumberFormat = "0"
        'Range("D7:G10000").NumberFormat = "0"
        [A1].Select
    ActiveSheet.Protect Password:="", DrawingObjects:=True, Contents:=True, Scenarios:=True
    Application.EnableEvents = True
    Application.ScreenUpdating = True
    Application.Calculation = xlCalculationAutomatic
    Sheets("Argu_Objections").Select
    BloqueFeuilles
    Sheets("Appels").Select
    MsgBox ("Agenda :" & Chr(10) & Chr(10) & "ON ACTIVE LES JOURS FERIES" & Chr(10) & Chr(10) & "et On commence par les RdVs Annulés")
End Sub
Merci pour votre indulgence
:)
 
Dernière édition:

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
315 098
Messages
2 116 190
Membres
112 679
dernier inscrit
Yupanki