Enregistrement sous un autre nom

Résolu
flololf Messages postés 6 Statut Membre -  
tarek_dotzero Messages postés 834 Statut Membre -
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

2 réponses

tarek_dotzero Messages postés 834 Statut Membre 122
 
Salut,

Je pense que vous pouvez faire simplement en MsgBox:

Vous savez tres bien que vous pouvez afficher votre message dans un MsgBox et mettre les bouttons Ok et Annuler, dans ce cas le MsgBox retourne une valeur, puis un if...else...endif

Dans le if Ok vous savez ce que vous devez mettre, et dans le non: il est possible d'afficher le Save as... donc je pense avec un peu de concentration vous y arriverez.

Bon Courage :)
0
flololf Messages postés 6 Statut Membre
 
Justement je ne vois pas bien comment récupérer la réponse de l'utilisateur à une MsgBox sur laquelle je n'ai pas la maiin
Et quand bien même je saurai la récupérer je ne sais pas comment faire afficher l'explorateur Windows permettant d'"Enregister sous"
0
tarek_dotzero Messages postés 834 Statut Membre 122
 
Pour la première partie:

Sub test()
    Reponse = MsgBox("test", vbOKCancel, "test")
    
    If (Reponse = vbOK) Then
        MsgBox "ok"
    Else
        MsgBox "Cancel"
    End If
    
End Sub


Pour la deuxième, j'ai jamais fait un truc Pareil (en générale je suis sous Access!)
0
flololf Messages postés 6 Statut Membre
 
Merci beaucoup
Je vais voir ce que je peux faire pour le reste
0
flololf Messages postés 6 Statut Membre > flololf Messages postés 6 Statut Membre
 
Pour ceux que ça peut intéresser, j'ai trouver, il s'agit de la commande Application.Dialogs(xlDialogSaveAs).Show

Et en tapant SendKeys (Nom_fichier) avant, le Nom_fichier sera inscrit par défaut dans la boite de dialogue
0
tarek_dotzero Messages postés 834 Statut Membre 122 > flololf Messages postés 6 Statut Membre
 
Merci pour l'info :)

BonCourage :)
0