Bonjour à toutes et à tous,

De loin d'être un expert, j'ai jusqu'à présent trouvé les solutions à mes problèmes en cherchant à droite et à gauche, et en bidouillant. Souvent c'est ici que je trouvai les réponse à mes questions.

Mais là je sèche, pourtant ça à l'air tellement simple...

Voici ce que je voudrai réussir à faire :

J'ai créer une calculette excel, je souhaiterais que l'utilisateur garde une image de celle ci, pour cela j'ai créé un bouton affecté à une Macro qui :

Ouvre un nouveau classeur,
Fait les copiers colers qu'il faut.
S'il enregistre plusieurs fois (car il modifie les paramètres), cela crée une nouvelle feuille dans le classeur déja ouvert.

Tout marche... enfin presque,
Le problème c'est que l'ouverture du classeur donne le nom automatique "Classeur1", si par malheur le classeur ouvre avec "Classeur2" ou autre, ça ne marche plus. Cela est évident car je ne trouve pas d'autre solution que d'intégrer dans mon code des "Classeur1"...

Pour vous donnez une meilleure idée voici le code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
Function TestClasseurOuvert() As Boolean
    TestClasseurOuvert = False
    For Each fich In Workbooks
    If fich.Name = "Classeur1" Then TestClasseurOuvert = True
    Next
End Function
Sub MAvM()
Application.ScreenUpdating = False
 
Dim X As Boolean
X = TestClasseurOuvert
If X = False Then "Si le classeur1 n'est pas ouvert alors ..."
    Workbooks.Add
    Windows("Simulateur.xlsm").Activate
    Cells.Select
    Selection.Copy
    Windows("Classeur1").Activate
    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
    Windows("Simulateur.xlsm").Activate
[... je vous épargne toutes les manipulations]
End If
 
If X = True Then "si le classeur1 est déja ouvert alors ..."
    Cells.Select
    Selection.Copy
    Windows("Classeur1").Activate
    Sheets.Add 'nouvelle feuille'
    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
    Windows("Simulateur.xlsm").Activate
[... je vous épargne toutes les manipulations]
End If
 
End Sub
je sais c'est du bisouillage...

De plus j'ai une contraite de taille, je souhaite que la calculette soit transportable, donc je voudrai éviter toutes les manip avec des chemins d'enregistrement.

Est il possible d'ouvrir un classeur avec un nom spécifique (autre que classeur1,2,...) sans l'enregistrer avec un chemin

Y a-t-il une fonction qui me permetrais de sauvegarder dans une variable le nom du fichier que donnerai l'utilisateur si j'insère dans mon code un "enregistrer sous" (je croi que c'est : Application.Dialogs(xlDialogSaveAs).Show)

ou si vous voyer une autre solution en respectant la contrainte je suis preneur.

Vous remerciant par avance de toutes vos réponse qui m'aiderons à avancer !