[VBA] Affichage de la fenêtre "Enregistrer sous" par une macro [Résolu]

Signaler
Messages postés
6
Date d'inscription
mercredi 23 avril 2008
Statut
Membre
Dernière intervention
23 avril 2008
-
Messages postés
12
Date d'inscription
dimanche 20 mars 2005
Statut
Membre
Dernière intervention
24 juin 2011
-
Bonjour

Alors voila je suis en train de mettre en place une macro VBA qui permet la création d'un classeur Excel à partir d'un autre classeur.
A la fin de la macro, cette dernière enregistre une copie dans un répertoire sous un nom prenant en compte la date du jour.
Si il existe dans le répertoire indiqué un fichier avec le même nom (enregistré le même jour) Excel ouvre tout seul une fenêtre demandant à l'utilisateur s'il souhaite remplacer le fichier existant (utilisation de la commande "Application.DisplayAlerts = True"), ce qui se fait si on clique sur "Oui".
Jusque là je me débrouille sans trop de problème.

Mon problème c'est si on clique sur "Non", il plante puisque je ne sais pas comment prévoir ce cas.
J'aimerai donc que si l'utilisateur clique sur "Non", la fenêtre de l'explorateur "Enregistrer sous" apparaisse lui permettant ainsi de renommer son fichier comme il le souhaite et même où il le souhaite.
A savoir que la solution consistant à indiquer l'heure d'enregistrement dans le nom du fichier ne me convient pas dans ce cas.

Au final je ne sais pas :
 - comment faire comprendre à la macro que si on clique sur "Non" il doit faire apparaître cette fenêtre 
 - quel est le code nécessaire pour l'ouverture de cette fenêtre

Si quelqu'un pouvait m'aider ce serait avec joie
Ci joint la fin de mon code

Sub Save()
...
Dim fichier
fichier = ActiveWorkbook.Path & "" & Format(Date, "yyyymmdd") & " - Nom_du_fichier"
Application.DisplayAlerts = True
ActiveWorkbook.SaveAs fichier
End Sub

Merci d'avance pour vos conseils ou solutions et bonne fin de journée à vous

Florent
A voir également:

7 réponses

Messages postés
1835
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
9
Salut,

Application.FileDialog(msoFileDialogSaveAs)

C'est pas plus compliqué

A+
Messages postés
6
Date d'inscription
mercredi 23 avril 2008
Statut
Membre
Dernière intervention
23 avril 2008

Merci beaucoup
Par contre Application.FileDialog(msoFileDialogSaveAs) ne fonctionnait pas chez moi (VBA sous Excel donc) mais Application.Dialogs(xlDialogSaveAs).Show fonctionne lui

Et si on écrit
SendKeys (Nom_fichier)
Application.Dialogs(xlDialogSaveAs).Show
Il y aura Nom_fichier prédéfini dans la boite de dialogue

En tout cas un grand merci tu m'as bien aidé
Messages postés
1835
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
9
...

tu doit utiliser XL97 non ? si je ne me trompe pas les types xl... on été remplacé par les types mso... depuis la version 2000.
donc :

Application.FileDialog(msoFileDialogSaveAs).show fonctionne, mais a partir de XL2000

A+
Messages postés
50
Date d'inscription
mardi 7 juillet 2009
Statut
Membre
Dernière intervention
28 août 2009

Bonjour,

A travers le code ci-dessous, je souhaite modifier un fichier puis pour finir simplement ouvrir la fenêtre enregistrer sous (car la modification du fichier entraîne la perte d'informations du fichier précédent). Le choix du nouveau nom de fichier est libre.
Le problème c'est quand je rentre le nom du fichier et je clique sur enregistrer, ya rien qui s'enregistre nulle part.

Je ne trouve pas l'erreur!!

Sub Chgmt_Année()
'
Dim Réponse As Integer
Dim Chgmt As Integer
Dim i As Integer
Dim j As Integer

Chgmt = MsgBox("Êtes-vous sûr de vouloir créer le fichier pour l'année suivante?", vbQuestion + vbYesNo, "Changement d'année")
If Chgmt = 6 Then

Columns("G:J").Select
Selection.Copy
Columns("F:F").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Columns("V:V").Select
Selection.Copy
Columns("J:J").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Columns("W:X").Select
Selection.Copy
Columns("V:V").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Columns("X:X").Select
Selection.ClearContents
Réponse = MsgBox("Souhaitez-vous conserver les volumes de l'année en cours?", vbQuestion + vbYesNo, "Suppression Volumes")

If Réponse = 7 Then
Columns("P:P").Select
Selection.ClearContents

End If
i = 4
Do While i < 300
If Cells(i, 21) = "OUI" Then
Cells(i, 20).Select
Selection.Copy
Cells(i, 11).Select
ActiveSheet.Paste
End If
i = i + 1
Loop
Columns("U:U").Select
Selection.ClearContents

For j = 4 To 101
Cells(j, 10).Select
ActiveCell.FormulaR1C1 = _
"=IF(OR(RC[1]=""fin de vie"",RC[-2]=""DMS""),0,RC[-2])"
Next j

Application.FileDialog(msoFileDialogSaveAs).Show

End If
End Sub


Merci
Roberto
Messages postés
12
Date d'inscription
dimanche 20 mars 2005
Statut
Membre
Dernière intervention
24 juin 2011

Bonjour,
j'ai le même souci je n'arrive pas à débloquer la situation
Si quelqu'un à une idée je suis preneur

La seul chose que j'ai réussi à faire est la suivant

With pptPres
.SaveCopyAs "new copy"
End With

Mais je ne peux pas choisir le nom n'y l'emplacement via une boite de dialogue

Merci à tous
Messages postés
1835
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
9
Salut,

tu as lu les reponses plus haut ? par ce que la réponse y es déjà !
Messages postés
12
Date d'inscription
dimanche 20 mars 2005
Statut
Membre
Dernière intervention
24 juin 2011

Bonjour,
oui j'ai lu mais cela ne répondait pas à mon souci car la boite de dialogue s'affichait mais n'enregistrait rien.

Du coup je suis passé par cette manipulation :

' ########## Enregistrer sous le PPT ##############################
' #################################################################
Dim dlgSaveAs As FileDialog

Set dlgSaveAs = pptApp.FileDialog(msoFileDialogSaveAs)
If dlgSaveAs.Show = -1 Then
pptPres.SaveAs dlgSaveAs.SelectedItems.Item(1)
End If

' ############################################################
' ############################################################

PS : Niveau syntaxe et organisation il doit y avoir mieux mais ça marche donc pour le moment ça me convient. En espérant que cela puisse servir à d'autres personnes