Je suis de tout coeur avec bbil qui insiste mais qui a raison, quand tu fais une copie (sans paramêtre) tu mets la feuilles dans un nouveau classeur et celui-ci du coup est ouvert (et même actif).
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 Private Sub Quitter_Click() Dim stRep As String dim wb as Excel.workbook Sheets("devis").Copy ' stRep = ThisWorkbook.Path & "\Devis\" For Each s In ActiveSheet.Shapes If s.Type = msoFormControl Then s.Delete End If Next ActiveWorkbook.SaveAs stRep & Replace(Range("G4"), " ", "-") & Format(Now, "-ddmmyy") Set wb = ActiveWorkbook ThisWorkbook.Close savechanges = False Unload Me End Sub
Ensuite, tu utilises ActiveWorkBook pour manipuler le nouveau classeur (où tu as seulement l'onglet que tu veux), donc si tu veux le garder ouvert, pas besoin de le fermer et de le réouvrir (car saveas ne ferme pas), donc tu as juste à fermer ton ancien classeur.
Pour l'utiliser il y a plein de manière, soit tu rajoutes cette ligne et ensuite tu utilises wb pour ce que tu veux faire(ce que j'ai fait dans le code)je suis d'accord avec toi mais comment l'appeler , si je met juste workbooks ("nom-date)show , ca serait corecte alors ?
Tu peux aussi enregistrer dans une variable que le nom avec ActiveWorkBook.name et ensuite utiliser cette variable avec workbooks(maVaraible) soit, si le classeur reste active tout au long de ton traitement, tu peux rester sur activeWorkbook.
Code : Sélectionner tout - Visualiser dans une fenêtre à part Set wb = ActiveWorkbook
Enfin bref il y a plein de méthodes, je t'en ai écrit une.
Note: workbooks ("nom-date).show => show n'est pas une méthode de workbook, c'est peut être visible que tu voulais, mais il est déjà par défaut....
Et félicitation à bbil pour ne pas avoir abondonner![]()
Partager