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 :
je sais c'est du bisouillage...
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
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 !
Partager