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

Résolu
flololf Messages postés 6 Date d'inscription mercredi 23 avril 2008 Statut Membre Dernière intervention 23 avril 2008 - 23 avril 2008 à 15:03
sauvageon93 Messages postés 12 Date d'inscription dimanche 20 mars 2005 Statut Membre Dernière intervention 24 juin 2011 - 8 févr. 2010 à 17:45
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

7 réponses

bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
23 avril 2008 à 16:31
Salut,

Application.FileDialog(msoFileDialogSaveAs)

C'est pas plus compliqué

A+
3
flololf Messages postés 6 Date d'inscription mercredi 23 avril 2008 Statut Membre Dernière intervention 23 avril 2008
23 avril 2008 à 18:01
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é
0
bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
23 avril 2008 à 20:42
...

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+
0
Robikatchou Messages postés 50 Date d'inscription mardi 7 juillet 2009 Statut Membre Dernière intervention 28 août 2009
27 juil. 2009 à 16:04
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
sauvageon93 Messages postés 12 Date d'inscription dimanche 20 mars 2005 Statut Membre Dernière intervention 24 juin 2011
8 févr. 2010 à 15:58
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
0
bigfish_le vrai Messages postés 1835 Date d'inscription vendredi 13 mai 2005 Statut Membre Dernière intervention 20 novembre 2013 15
8 févr. 2010 à 16:08
Salut,

tu as lu les reponses plus haut ? par ce que la réponse y es déjà !
0
sauvageon93 Messages postés 12 Date d'inscription dimanche 20 mars 2005 Statut Membre Dernière intervention 24 juin 2011
8 févr. 2010 à 17:45
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
0
Rejoignez-nous