SaveAS sans montrer la boîte de dialogue

Bonjour,

Après exécution de mon code, je souhaite que le fichier s'enregistre sans me montrer la boîte de dialogue.
Pour l'instant, j'utilise ce code qui me montre la boîte et j'aimerais éviter cette étape et enregistrer directement le classeur:

bFileSaveAs = Application.Dialogs(xlDialogSaveAs).Show(ActiveWorkbook.Sheets(1).Name & ".xlsx")
If Not bFileSaveAs Then MsgBox "User cancelled", vbCritical

Vous aurez quelque chose à me proposer s'il vous plait ?

Je vous remercie d'avance.

Bonjour

Mettez cette instruction avant -->

Application.DisplayAlerts = False

edit : Attention de remettre la valeur à TRUE avant l'instruction de votre MSGBOX sans quoi vous ne verrez pas l'info

Mais remettez la valeur à TRUE avant de sortir du code.

si ok -->

Cordialement

Merci Dan.

Par contre cela ne fonctionne pas.
Je vous montre le code entier peut-être que vous verrez quelque chose d'anormal :

Sub mise_en_page_cabinets()

Dim bFileSaveAs As Boolean

Sheets(1).Select
Sheets(1).Copy
Columns("D:J").EntireColumn.Delete
Columns("E:F").EntireColumn.Delete
Columns("E:G").EntireColumn.Delete

Range("A4:G5").AutoFilter
Range("A4:G5").Select
    With Selection.Interior
            .Color = 65535
    End With

ChDrive "Z"
ChDir "Z:\HONORAIRES\HONORAIRES A PAYER\CABINETS DIVERS\INT DIVERS CAB"
Sheets(1).Range("A" & Rows.Count).End(xlUp).Activate

Application.DisplayAlerts = False
bFileSaveAs = Application.Dialogs(xlDialogSaveAs).Show(ActiveWorkbook.Sheets(1).Name & ".xlsx")
If Not bFileSaveAs Then MsgBox "User cancelled", vbCritical

'Fermer le décompte individuel
ActiveWindow.Close SaveChanges:=False

'Fermer le décompte source (extraction d'oOpale)
ActiveWindow.Close SaveChanges:=False

Application.DisplayAlerts = True
End Sub

Re

c'est mieux avec le code complet.

1. L'instruction Sheets(1).Range("A" & Rows.Count).End(xlUp).Activate sert à quoi ?

2. Dans l'instruction ci dessous vous ouvrez la boite de dialogue.

bFileSaveAs = Application.Dialogs(xlDialogSaveAs).Show(ActiveWorkbook.Sheets(1).Name & ".xlsx")

Que voulez-vous faire exactement ? Ouvrir une boite pour mettre le nom du fichier manuellement ou pas ?

Bonjour redj12, Dan

Je me permets d'intervenir, car de ce que j'ai compris, il suffit tout simplement de remplacer

Application.DisplayAlerts = False
bFileSaveAs = Application.Dialogs(xlDialogSaveAs).Show(ActiveWorkbook.Sheets(1).Name & ".xlsx")
If Not bFileSaveAs Then MsgBox "User cancelled", vbCritical

Par

ThisWorkbook.SaveAS "C:\Chemin\NomFichier.xlsx"

A+

Salut Bruno

Exact c'est ce à quoi je pensais.

En attente du retour de redj12

@Dan

Sheets(1).Range("A" & Rows.Count).End(xlUp).Activate 

Cette instruction sert à aller à la fin du fichier avant l'enregistrement.
Les fichiers sont très longs et en procédant ainsi, lors des éventuelles ouvertures par la suite, le fichier s'ouvre en étant déjà à la fin.
Il y a sûrement une manière plus élégante de le faire mais ça a le mérite de marcher

Je ne veux pas mettre le nom du fichier manuellement. J'aimerais que cela se fasse automatiquement.

@BrunoM45

Je ne peux pas utiliser ThisWorkbook.SaveAS "C:\Chemin\NomFichier.xlsx"

Je vous explique mon cas.

1. Je sors mon classeur "source" du logiciel comptable
2. Mon classeur source à plusieurs feuilles et j'ai besoin de garder que la première
3. Le code ci-dessous me permet de sortir que la première feuille et de définir son nom lors de l'enregistrement.
Si dans le classeur source le nom de de ma feuille est "John Doe", lorsque la boîte d'enregistrement du fichier va s'ouvrir, le nom du fichier est déjà prédéfini "John Doe.xlsx"
Je n'ai plus qu'à appuyer sur "Enregistrer"

bFileSaveAs = Application.Dialogs(xlDialogSaveAs).Show(ActiveWorkbook.Sheets(1).Name & ".xlsx")
If Not bFileSaveAs Then MsgBox "User cancelled", vbCritical

Ce que je souhaite faire : éviter que la boite de dialogue s'ouvre et de devoir cliquer sur "Enregistrer".
J'aimerais que le fichier s'enregistre sans ouverture.

J'espère que c'est clair.

Merci pour votre aide en tout cas.

re

@Dan

Sheets(1).Range("A" & Rows.Count).End(xlUp).Activate

Cette instruction sert à aller à la fin du fichier avant l'enregistrement. Les fichiers sont très longs et en procédant ainsi, lors des éventuelles ouvertures par la suite, le fichier s'ouvre en étant déjà à la fin. Il y a sûrement une manière plus élégante de le faire mais ça a le mérite de marcher

Non c'est bon cela. Ma question était que je pensais que vous vouliez peut-être récupérer une info dans cette cellule

Je ne peux pas utiliser ThisWorkbook.SaveAS "C:\Chemin\NomFichier.xlsx"

Je vous explique mon cas

Non ce que Bruno vous a proposé va dans le sens de ce que vous décrivez. essayez votre code comme ceci

Sub mise_en_page_cabinets()
Dim Chemin As String, Fichier As String

Sheets(1).Copy
With ActiveSheet
    .Columns("D:J").EntireColumn.Delete
    .Columns("E:F").EntireColumn.Delete
    .Columns("E:G").EntireColumn.Delete

    With .Range("A4:G5")
        .AutoFilter
        .Interior.Color = 65535
    End With
End With

Sheets(1).Range("A" & Rows.Count).End(xlUp).Activate

Chemin = "Z:\HONORAIRES\HONORAIRES A PAYER\CABINETS DIVERS\INT DIVERS CAB\"
Fichier = ActiveWorkbook.Sheets(1).Name & ".xlsx"

With ActiveWorkbook
    .SaveAs Chemin & Fichier
    .Close False
End With
End Sub

si ok.... pensez à cloturer

Cordialement

Un immense merci pour l'aide.
Votre code est plus élégant que le mien

Merci encore et a bientôt pour d'autres problèmes.

Rechercher des sujets similaires à "saveas montrer boite dialogue"