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
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
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
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
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