Ouverture de mon nouveau classeur enregistré

kwakos

XLDnaute Occasionnel
Coucou tout le monde,
Le forum,

Voici que mon fichier est bientôt terminé (et ça ne serait pas le cas sans certains d'entrevous alors encore un grand merci à ceux qui se reconnaitront).

Voilà, en fin de journée je ferme mon classeur principale avec une sauvegarde à la date du jour et de mes nouveaux clients dans mon classeur CLIENTS

Private Sub Workbook_BeforeClose(Cancel As Boolean)
If ThisWorkbook.Worksheets("config").Visible = True Then 'j'ai mis ça pour qu'en réouverture de fichier pour simple consultation, cela ne lance pas la macro
Dim destination As Workbook
Workbooks.Open (ThisWorkbook.Path & "\CLIENTS.xls")
Set destination = ActiveWorkbook
ThisWorkbook.Sheets("clients").Range("A5:G5000").Copy destination.Sheets("clientts").Range("A5")
destination.Close savechanges:=True

With ThisWorkbook
Application.DisplayAlerts = False
.Sheets("Reçu").Delete
.Sheets("clients").Delete
.Sheets("depenses").Delete
.Sheets("config").Visible = False
.Sheets("Journee").Shapes("CommandButton1").Delete
.Sheets("Journee").Shapes("CommandButton4").Delete
.Sheets("Journee").Shapes("CommandButton5").Delete
Application.DisplayAlerts = True
End With
Dim nom As String
nom = CStr(Format(Date, "dd mmmm yyyy")) & ".xls"
Application.Dialogs(xlDialogSaveAs).Show nom
ThisWorkbook.Close savechanges = True
Else
End If
End Sub


Mais voilà, à la fin, tout se ferme... Normal vous me direz, c'est dans la macro... Mais moi ce que je voudrais c'est que le fichier nom (c'est à dire à la date du jour après le saveas) ne se ferme pas. Je voudrais que mon fichier principal se ferme, mais pas celui de sauvegarde en saveas....
Comment faire ???

Merci à tous...:)

kwakos
 

smotty

XLDnaute Occasionnel
Re : Ouverture de mon nouveau classeur enregistré

bonsoir kwakos, le forum,

La réponse est dans ta question mais j'espère avoir bien compris.:p

Si tu ne veux pas que le fichier se ferme, pourquoi utiliser .close?

avec: Thisworkbook.saveas filename:=nom

ça devrait suffir.

A+

smotty
 

kjin

XLDnaute Barbatruc
Re : Ouverture de mon nouveau classeur enregistré

Bonsoir,
bonsoir smotty :)
Moi ce que je comprends moins bien, c'est que la procédure est lancée à la fermeture du fichier...que tu ne veux pas fermer ! (Workbook_BeforeClose)
A+
kjin
 

kwakos

XLDnaute Occasionnel
Re : Ouverture de mon nouveau classeur enregistré

Re le forum
re Smotty

Et ben non !!! :p
En effet si je remplace par
thisworkbook.saveas nom

cela m'enregistre le fichier dans le même repertoire alors que je souhaite avoir une fenetre type "fichier>enregistrer sous" qui me permettre de sélectionner un autre dossier de destination...

Héhé... :D

????

A+

kwakos
 

kwakos

XLDnaute Occasionnel
Re : Ouverture de mon nouveau classeur enregistré

Bonsoir,
bonsoir smotty :)
Moi ce que je comprends moins bien, c'est que la procédure est lancée à la fermeture du fichier...que tu ne veux pas fermer ! (Workbook_BeforeClose)
A+
kjin

le forum,
kjin, smotty :rolleyes:

En effet je souhaite fermer mon classeur principal de la journée mais avant fermeture (Workbook_BeforeClose) je veux en faire une sauvegarde sous le nom du jour ('nom') dans un autre dossier. A la fin de la procédure je souhaite que mon fichier principal soit fermé et celui de sauvegarde reste ouvert...
Je ne suis pas sur d'être plus clair (fatigue, fatigue...:p)

merci de vous penchez sur mon problème...

kwakos
 

kjin

XLDnaute Barbatruc
Re : Ouverture de mon nouveau classeur enregistré

Re,
Il me semble qu'il faut dissocier les 2 macros et que chaque classeur ait sa propre procédure Workbook_BeforeClose
Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim Dest As String, Source As String, nom As String
If ActiveWorkbook.Worksheets("config").Visible = True Then 'j'ai mis ça pour qu'en réouverture de fichier pour simple consultation, cela ne lance pas la macro
nom = CStr(Format(Date, "dd mmmm yyyy")) & ".xls"
Source = ActiveWorkbook.Name
Dest = "CLIENTS.xls"
Workbooks.Open (ActiveWorkbook.Path & "\" & Dest)
Workbooks(Source).Sheets("clients").Range("A5:G5000").Copy Workbooks(Dest).Sheets("clientts").Range("A5")
With Workbooks(Source)
Application.DisplayAlerts = False
.Sheets("Reçu").Delete
.Sheets("clients").Delete
.Sheets("depenses").Delete
.Sheets("config").Visible = False
.Sheets("Journee").Shapes("CommandButton1").Delete
.Sheets("Journee").Shapes("CommandButton4").Delete
.Sheets("Journee").Shapes("CommandButton5").Delete
Application.Dialogs(xlDialogSaveAs).Show nom
.Close savechanges = True
End With
End If
Application.DisplayAlerts = True
End Sub
Reste à mettre le code d'enregistrement auto à la fermeture du classeur Dest
A+
kjin
 

kwakos

XLDnaute Occasionnel
Re : Ouverture de mon nouveau classeur enregistré

le forum, smotty, kjin

ok je vais essayer ça kjin, mais en fait là je m'étais endormi sur mon canapé le pc sur les genoux... :(

Je vous donne le résultat demain, de suite je me glisse dans mes draps...

Merci encore

kwakos
 

kwakos

XLDnaute Occasionnel
Re : Ouverture de mon nouveau classeur enregistré

Re,
Il me semble qu'il faut dissocier les 2 macros et que chaque classeur ait sa propre procédure Workbook_BeforeClose
Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim Dest As String, Source As String, nom As String
If ActiveWorkbook.Worksheets("config").Visible = True Then 'j'ai mis ça pour qu'en réouverture de fichier pour simple consultation, cela ne lance pas la macro
nom = CStr(Format(Date, "dd mmmm yyyy")) & ".xls"
Source = ActiveWorkbook.Name
Dest = "CLIENTS.xls"
Workbooks.Open (ActiveWorkbook.Path & "\" & Dest)
Workbooks(Source).Sheets("clients").Range("A5:G5000").Copy Workbooks(Dest).Sheets("clientts").Range("A5")
With Workbooks(Source)
Application.DisplayAlerts = False
.Sheets("Reçu").Delete
.Sheets("clients").Delete
.Sheets("depenses").Delete
.Sheets("config").Visible = False
.Sheets("Journee").Shapes("CommandButton1").Delete
.Sheets("Journee").Shapes("CommandButton4").Delete
.Sheets("Journee").Shapes("CommandButton5").Delete
Application.Dialogs(xlDialogSaveAs).Show nom
.Close savechanges = True
End With
End If
Application.DisplayAlerts = True
End Sub
Reste à mettre le code d'enregistrement auto à la fermeture du classeur Dest
A+
kjin

Re le forum, kjin, smotty...

Avec cette solution kjin, le problème est que c'est mon classeur CLIENTS qui est sauvegardé avec le nom du jour et pas ma feuille principale...
Je teste encore....

A+

kwakos
 

kjin

XLDnaute Barbatruc
Re : Ouverture de mon nouveau classeur enregistré

Bonjour,
Faut dire qu'on est un peu dans les ténèbres :eek:
Pourrais tu au moins à défaut de fichier, expliquer tout ceci en français dans le texte
Par ailleurs, enregistrer une copie de ton fichier dans un autre répertoire, c'est bien mais à moins de la supprimmer par le code, ça ne t'affranchira pas de la macro qui sera copiée elle aussi !
A tester
Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim Dest As String, Source As String, nom As String
Application.DisplayAlerts = False
If ActiveWorkbook.Worksheets("config").Visible = True Then 'j'ai mis ça pour qu'en réouverture de fichier pour simple consultation, cela ne lance pas la macro
nom = CStr(Format(Date, "dd mmmm yyyy")) & ".xls"
Source = ActiveWorkbook.Name
Dest = "CLIENTS.xls"
Workbooks.Open (ActiveWorkbook.Path & "\" & Dest)
Windows(Source).Activate
With ActiveWorkbook
.Sheets("clients").Range("A5:G5000").Copy Workbooks(Dest).Sheets("clientts").Range("A5")
.Sheets("Reçu").Delete
.Sheets("clients").Delete
.Sheets("depenses").Delete
.Sheets("config").Visible = False
.Sheets("Journee").Shapes("CommandButton1").Delete
.Sheets("Journee").Shapes("CommandButton4").Delete
.Sheets("Journee").Shapes("CommandButton5").Delete
Application.Dialogs(xlDialogSaveAs).Show nom
End If
End With
Application.DisplayAlerts = True
End Sub
A+
kjin
 

Discussions similaires

Statistiques des forums

Discussions
312 505
Messages
2 089 092
Membres
104 028
dernier inscrit
alain Barthe