Enregistrement d'un fichier à partir d'un User Form - puis

Bonjour à tous,

J'ai un problème qui me semble relativement complexe, et me demande s'il existe une solution ! Je vais essayé de faire simple :

Un "outil" excel, me permet de faire des calculs assez complexes et tout ça....L'outil ne fonctionne qu'à partir de macro et userform, la barre d'outils Excel devant rester invisible !

Ainsi, imaginons, que je viens de commencer la création d'un projet dans cet outil, et j'enregistre à l'aide d'un bouton, relié à la macro suivante :

Sub sauvegarder()

End Sub

Cela fait alors en sorte, que je reste sur mon outil principal, et qu'en parallèle, une copie de mon projet s'est enregistrer dans un dossier nommé "Projet", qui se trouve dans le même dossier principal que mon OUTIL Excel, sous un nom différent qui à la forme de "Analyse de l'impact - nom qui a été renseigné dans une cellule d'une feuille précise" --> Jusqu'ici parfait, mon projet est enregistrer, je peux quitter mon outil

Ensuite, lorsque je vais ré-ouvrir mon outil, un bouton (OUVRIR UN ANCIEN PROJET) me permet d'ouvrir un USERFORM, dans lequel j'ai une menu déroulant, où je peux alors sélectionner tous les fichiers présents dans mon fameux dossier "Projet". --> Alors je l'ouvre, et bien sur il s'ouvre en parallèle de l'OUTIL Excel déjà ouvert Voici les deux macros d'intérêt reliées à mon USERFORM :

Private Sub CommandButton1_Click()

Workbooks.Open (chemin & nom2)

ET

Private Sub UserForm_Initialize()

End Sub

TOUT EST PARFAIT, mais un problème subsiste-->Imaginons que je complète alors mon projet qui n'était pas terminé (fichier "Analyse de l'impact - xxx"... Si alors je clique sur le bouton Enregistrer, qui est lié à la même Macro que la toute première que je vous ai indiqué (ce qui est obligé, car cet ancien projet, est en fait une copie de mon outil principal, il a donc tous les mêmes boutons et macros...etc...) et bien il y a alors une erreur 400, à priori parce que le chemin alors indiqué (ThisWorkBook.Path &"\Projet\") et bien c'est un chemin dans lequel je me trouve déjà, et que donc dans le dossier, il n'existe alors pas à nouveau un Dossier nommer "Projet".....Je ne peux donc pas enregistrer tout ce que j'ai fait pour terminer mon projet qui ne l'était pas....où alors en passant par un CTRL+S.....Mais ce n'est pas le but !!!!

Alors si quelqu'un a une idée de génie pour cela....en espérant surtout que je me sois bien fait comprendre !!

Merci de vos réactions et propositions !!

Bien à vous !

Bonjour,

Et avec un simple test du nom du fichier qui demande la sauvegarde ?

Genre tu lance ta sauvegarde :

Si le début de nom du fichier commence par "Analyse de l'impact....."

alors sauvegarder de telle façon à tel endroit

Sinon

sauvegarder de la façon 2 dans le dossier 2 (si il s'agit de ton outil de base)

fin SI

Et comme cela tu peux rester avec une seule macro pour tes deux sauvegardes différentes sur le même bouton.

Cordialement,

Bonjour

Bonjour Zirak

J'ai du mal à suivre

Ta première macro fait une copie du fichier en cours

Quand tu ouvres la copie (bien sur tu as tous les boutons)

Si tu appuies sur le bouton il va faire une copie de la copie c'est ce que tu veux ?

Fait un bouton Sauvegarde avec juste l'instruction ActiveWorkBook.Save

L'idée me va très bien...et effectivement j'étais en train de patir la dessus.

Mais pour être honnête je ne suis pas un grand expert...et l'outil, ce n'est pas moi qui l'est créé...ce n'est donc pas si simple de régler des bugs pour moi...mais je comprends l'idée...j'ai essayé ça et d'autre forme :

Sub sauvegarder()

End Sub

Mais, j'ai toujours une erreur 400 quand je souhaite enregistré à partir du fichier "Analyse de l'impact -xxx" qui est en fait le projet en cours... enregistré au préalable, à partir du fichier OUTIL.xls.

Peut-être un problème pour enregistrer un projet "par dssus" un projet ayant le même nom...en faites, il faudrait que j'arrive à traduire en code vba la chose suivante :

Si "nom du fichier (duquel j'appui sur le bouton)" = OUTIL.xls Alors

'Enregistrer avec le nom suivant...etc...comme ce qui est déjà fait dans ma macro avec '

ActiveWorkbook.SaveCopyAs ActiveWorkbook.Path & "\Projet\" & nom

MsgBox ("Sauvegarde réalisée avec succès : " & nom)

'Le nom étant prédéfini auparavant dans la macro'

Sinon

Faire un simple CTR+S, qui permet d'enregistrer le fichier tel quel...vu qu'il est déjà placé au bon endroit !!!

Fin

Merci de ton aide


A l'instant, je viens aussi de réaliser que je n'ai pas besoin d'écrire SaveCopyAs car ce n'est pas une copie dans le 2° cas, simplement un CTRL+S

Mais bon j'ai tout de même l'impression que mes condition sur le nom du fichier ne fonctionne pas !!

Et banzaï, Je ne souhaite pas faire une copie forcément, non !!! Juste enregistrer comme un controle S

Mais il faut que le même bouton, puisse en fonction du nom du fichier (duquel je clique), soit enregistrer une copie, avec un nom et un emplacement défini...soit faire comme un CTRL+S...

C'est ce que j'explique dans mon message précédent !

Rechercher des sujets similaires à "enregistrement fichier partir user form puis"