sauver un classeur à partir d'un autre

egman

XLDnaute Occasionnel
Bonjour le Forum

Je reviens vers vous car je tourne en rond dans mes recherche sur le forum.
Voici mon problème.
J'ai 1 classeur Modéle1 qui me sert de base pour diverses opérations que je lance depuis un Userform.
Une de mes opérations consiste à ouvrir un second classeur Modéle2 dans lequel je viens copier des infos de Modéle1 et avant de fermer Modéle2 je voudrai le sauvegarder sous un autre nom (via des valeurs de cellules) dans un répertoire différent de Modéle1
En fin de Macro de copie
Code:
Call macro de sauvegarde
[Dim Chemin As String
Dim nomfichier As String
Chemin = "K:\"
nomfichier = Range("K1").Value & " " & Range("K2").Value & "-" & Range("K3").Value
If ThisWorkbook.Name = nomfichier Then Exit Sub
Application.DisplayAlerts = False
' sauve sous autre nom selon
ThisWorkbook.SaveAs FileName:=Chemin & nomfichier
Application.DisplayAlerts = True]

Le HIC est qu'il sauvegarde bien un classeur sous le nom souhaité dans le bon rep. mais pas le bon....Il sauvegarde le classeur de départ Modéle1 et non Modéle
Comment peut on faire pour indiquer que l'on veut Modéle2 sous le chemin choisit ?
D'avance MERCI à tous pour votre aide.

A+
 

Matheop

XLDnaute Occasionnel
Re : sauver un classeur à partir d'un autre

Salut egman.

C'est normal puisque ThisWorkbook:

Aide à dit:
Cette propriété renvoie un objet Workbook qui représente le classeur dans lequel s'exécute le code de la macro en cours. En lecture seule.

Faudrait que tu nous donnes le code du moment où tu ouvres ton classeur Modèle 2.

Cordialement,
Mat'
 

egman

XLDnaute Occasionnel
Re : sauver un classeur à partir d'un autre

Bonjour MatiChoux,

Merci pour ta réponse.
Ci-joint mon code d'ouverture du classeur Modèle 2

Private Sub CommandButton3_Click()
'Sub Creation_CRC()
ChDir "K:\COMPTES-RENDUS-REUNIONS-CRITIQUES"
Workbooks.Open FileName:= _
"K:\COMPTES-RENDUS-REUNIONS-CRITIQUES\_Modele CR-RC.xls"
Sheets("CRC_PF").Select
'...........
Après quoi je copie mes données du premier classeur et je lance ma sauvegarde du deuxième

A+
 

Matheop

XLDnaute Occasionnel
Re : sauver un classeur à partir d'un autre

Re-bonjour.

Alors je te suggère de définir ce classeur comme étant une sorte d'objet sur lequel tu pourras agir plus facilement par la suite. Je t'explique:

Code:
Private Sub CommandButton3_Click()
  '...
  ChDir "K:\COMPTES-RENDUS-REUNIONS-CRITIQUES"
  Set wbk = Workbooks.Open(FileName:="K:\COMPTES-RENDUS-REUNIONS-CRITIQUES\_Modele CR-RC.xls")
  wbk.Sheets("CRC_PF").Select
  '...
  '...
  'traitement

Et dans ta macro de sauvegarde tu enregistres de cette façon:

Code:
  '...
  wbk.SaveAs FileName:=Chemin & nomfichier
  '...

Cordialement,
Mat'
 

egman

XLDnaute Occasionnel
Re : sauver un classeur à partir d'un autre

Re-bonjour.

Alors je te suggère de définir ce classeur comme étant une sorte d'objet sur lequel tu pourras agir plus facilement par la suite. Je t'explique:

Code:
Private Sub CommandButton3_Click()
  '...
  ChDir "K:\COMPTES-RENDUS-REUNIONS-CRITIQUES"
  Set wbk = Workbooks.Open(FileName:="K:\COMPTES-RENDUS-REUNIONS-CRITIQUES\_Modele CR-RC.xls")
  wbk.Sheets("CRC_PF").Select
  '...
  '...
  'traitement

Et dans ta macro de sauvegarde tu enregistres de cette façon:

Code:
  '...
  wbk.SaveAs FileName:=Chemin & nomfichier
  '...

Cordialement,
Mat'

Re,

Merci pour ta réponse aussi rapide j'essaye çà et te tiens au courant.
Encore MERCI
A+
 

egman

XLDnaute Occasionnel
Re : sauver un classeur à partir d'un autre

la partie déclaration du workbook comme un objet fonctionne bien par contre çà coince à la sauvegarde...?
Il bloque sur
'....
wbk.SaveAs FileName:=Chemin & nomfichier
'....

A+
 

Matheop

XLDnaute Occasionnel
Re : sauver un classeur à partir d'un autre

Le problème doit sûrement venir que tu déclares ton workbook dans une macro et que tu veux le sauvegarder dans une autre macro (celle de sauvegarde). Donc forcément ta macro de sauvegarde ne connait pas l'objet et par conséquent te renvoie une erreur. Alors essaie ceci pour voir.

Le code ci-dessous est celui de ta macro classique; celle où tu exécutes ton traitement et où tu ouvres ton classeur après l'avoir déclaré en tant qu'objet.

Code:
Private Sub macro_normal()
  '...
  'traitement
  '...
  'déclaration du classeur à ouvrir
  Set wbk = Workbooks.Open(Filename:="u:\mon excel\a.xls")
  '...
  'traitement
  '...
  'appel de la macro de sauvegarde
  'le classeur wbk est passé en paramètre
  macro_de_sauvegarde (wbk)
End Sub

Et le code ci-dessous symbolise ta macro de sauvegarde. Le paramètre attendue par la macro est bien de type workbook.

Code:
Sub macro_de_sauvegarde(ByVal wbk1 As Workbook)
  Dim Chemin As String
  Dim nomfichier As String

  Chemin = "U:\mon excel\"
  nomfichier = wbk1.Sheets(1).Range("C5").Value
  MsgBox nomfichier
  wbk1.SaveAs Filename:=Chemin & nomfichier & ".xls"
End Sub

EDIT: Ou encore plus simple tu le déclares, tu l'ouvres et tu l'enregistres dans une seule et même macro.
 

egman

XLDnaute Occasionnel
Re : sauver un classeur à partir d'un autre

Bonjour MatiChoux,

Excuses moi pour le retard de ma réponse.
J'ai essayé ton code et cela fonctionne NICKEL. Encore MERCI car çà m’enlève une grosse épine du pied.

Au plaisir
A+
 

Discussions similaires

Statistiques des forums

Discussions
312 310
Messages
2 087 110
Membres
103 472
dernier inscrit
garnoux57