Renommer un classeur via macro à partir d'un classeur différent

Renommer un classeur via macro à partir d'un classeur différent - VB/VBA/VBS - Programmation

Marsh Posté le 26-06-2007 à 16:35:08    

Bonjour Forum,  
 
 
J'ai une petite difficulté avec une application vu mon niveau en VBA...  :sarcastic:  
Peut être que l'un ou l'une d'entre vous pourra me filer un pti coup de pouce.
 
J'aimerai renommer un classeur (ouvert) que l'on appelera "Classeur2" par un nom de cellule se trouvant dans le "Classeur1" qui est également ouvert. La macro que je tape se trouve aussi dans le classeur1.
J'ai réussi à choper le bout de code suivant mais j'arrive pas à faire comprendre au logiciel que le classeur à modifier est le classeur2.
 
Voici le code.
 

Code :
  1. Sub Classeur1()
  2. Dim Nom As String
  3. Nom = Range("Feuil1!B17" )
  4. ChDir "C:\Documents and Settings\"
  5. Activate.Workbook("Classeur2" ).SaveAs Filename:=(Nom)
  6. End Sub


 
Merci d'avance.
 
Julien.

Reply

Marsh Posté le 26-06-2007 à 16:35:08   

Reply

Marsh Posté le 26-06-2007 à 16:45:08    


salut,
un .value après le range peut déjà t'aider pour savoir si tu es bien dans ton classeur 1...

Reply

Marsh Posté le 26-06-2007 à 16:52:00    

Hello jpcheck,  
 
Après avoir mis le .value, VB me met:
 
Erreur de compilation: Argument non facultatif
 
Je pense bien être dans le classeur 1...
Je fais quoi pour arranger ce bug?
 
Merci.

Reply

Marsh Posté le 26-06-2007 à 16:57:26    

Bonjour
 
Nom = Range("Feuil1!A1" )
ActiveWorkbook.SaveAs Filename:="C:\" & Nom

Reply

Marsh Posté le 26-06-2007 à 17:10:33    

Salut paul,  
 
Ta réponse permet de renommer le fichier dans lequel j'execute la macro.  
Malheureusement ce n'est pas excatement ce que je cherche.
J'aimerai renommer un fichier autre ("Classeur 2" cf premier message)
qui est également ouvert. En réalité l'autre classeur est crée par cette même macro...
 
Merci.
Julien.

Reply

Marsh Posté le 26-06-2007 à 17:14:03    

Alors ca change tout !
 
Workbooks("Classeur2" ).SaveAs Filename:="C:\" & Nom

Reply

Marsh Posté le 27-06-2007 à 09:11:27    

Salutations Paul,  
 
Désolé pour la réaction tardive, mais la réponse ci-dessus me génère une erreur asssez surprenante:
 
Erreur d'exécution '1004'
 
Fichier inaccessible. Essayez l'une des opérations suivantes:
 
Vérifiez que le dossier spécifié existe
Vérifiez que le dossier dans lequel se trouve le fichier n'est pas en lecteure seule
vérifiez que le nom du fichier ne comporte pas les caractère suivants; | <>?....
 
Et il me mets en erreur ta ligne de code.
J'ai bien sûr vérifié tous ces critères à part celui des droits du fichier.
Je suis bien bloqué là!!
 
Julien.

Reply

Marsh Posté le 27-06-2007 à 09:58:25    

Hello,  
 
Finalement j'ai trouvé une solution avec l'instruction ReadOnlyRecommanded:=False.
 
Merci pour vos réponses!
Julien.

Reply

Marsh Posté le 27-06-2007 à 16:38:37    

Re Forum,  
 
Je suis confronté à un autre petit problème,  
J'aimerai juste par l'ancien classeur fermer le nouveau classeur maintenant renommé.
 
Après la commande que Paul m'a gentillement conseillée j'ai sans grande convistion je vous l'avour mis:
 
Windows("&Nom.xls" ).Close SaveChanges:=True
 
Merci d'avance de porter votre attention une nouvelle fois sur mes petits soucis.
 
Julien.
 

Reply

Marsh Posté le 27-06-2007 à 16:58:03    

je propose :
Workbooks(nom).Close SaveChange:=true

Reply

Marsh Posté le 27-06-2007 à 16:58:03   

Reply

Marsh Posté le 27-06-2007 à 17:07:38    

jpcheck a écrit :

je propose :
Workbooks(nom).Close SaveChange:=true


Et je confirme  :bounce:

Reply

Marsh Posté le 28-06-2007 à 08:41:20    

Merci beaucoup!
 
C'est déjà super, mais j'espère  ne pas pousser  grandmère dans les orties en demandant comment faire pour fermer vraiment l'application Excel en elle même en plus du classeur....? :)
 
Mais encore Merci!!
 
Julien.

Reply

Marsh Posté le 28-06-2007 à 08:58:51    

Application.quit devrait faire l'affaire

Reply

Marsh Posté le 28-06-2007 à 09:06:19    

Merci Paul.
 
Julien.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed