Recopier une feuille dans une autre classeur qu'il soit ouvert ou fermé

La Vouivre

XLDnaute Occasionnel
Bonjour les amis
avec l'aide des pépites du forum j'ai réussi à me faire une macro pour recopier une feuille dans un autre classeur ,ce classeur est soit ouvert ou fermé selon l'utilisation .
"Excel1 " et le fichier de départ , "Excel2" est le fichier de destination
Si le classeur "Excel2" et fermé la macro fonctionne correctement ,par contre si le fichier "Excel2" et déjà ouvert la macro ne recopie pas la feuille
j'arrive à faire recopier la feuille que si le fichier "Excel2" est fermé , mais je n'arrive pas à trouvé le code correct pour recopier la feuille si le fichier "Excel2" et ouvert ,je voudrais pouvoir enregistrer la feuille sur le fichier "Excel2" ouvert ou fermé ,en sachant que les deux fichiers sont dans des dossiers différant.
Pouvez-vous m'aider à finaliser ce projet ?
Je vous passe un exemple de fichier en pièce jointe
par avance merci à tous pour votre précieuse aide qui permet à nous novice en VBA d'avancer .
 

Pièces jointes

  • excel2.xlsm
    9.1 KB · Affichages: 32
  • excel1.xlsm
    22.6 KB · Affichages: 31
  • excel1.xlsm
    22.6 KB · Affichages: 30
  • excel1.xlsm
    22.6 KB · Affichages: 36

sousou

XLDnaute Barbatruc
Re : Recopier une feuille dans une autre classeur qu'il soit ouvert ou fermé

bonjour La vouivre

Remplace ton code par ceci.

Plus simple.

Initialise les constantes en fonction de ton environnement


Public Const chemin = "C:\Documents and Settings\HP_Propriétaire\Bureau\exceldownload\"
Public Const f1 = "excel1-1.xlsm"

Public Const f2 = "excel2.xlsm"



Sub copie()
Set fichier1 = Workbooks(f1)
flag = 0
For Each i In Workbooks
If i.Name = f2 Then flag = 1
Next
If flag = 0 Then Set fichier2 = Workbooks.Open(chemin & f2) Else Set fichier2 = Workbooks(f2)
fichier1.Sheets("feuil1").Range("A1:F22").Copy fichier2.Sheets("synthèse").Range("a1")
If flag = 0 Then fichier2.Close savechanges = True

End Sub
 

La Vouivre

XLDnaute Occasionnel
Re : Recopier une feuille dans une autre classeur qu'il soit ouvert ou fermé

Merci mon amis Sousou de vous intéresser à mon projet , mais le problème se trouve inversé
J'ai réussi à adapter le code à mon projet ,mais j'ai toujours le problème
avec mon code
'le fichier "excel2.xlsm" ouvert = pas de copie
'le fichier "excel2.xlsm" fermé = copie
avec votre code
'le fichier "excel2.xlsm" ouvert = copie
'le fichier "excel2.xlsm" fermé = pas de copie

sinon le code fonctionne très bien si le fichier et ouvert , comme le fichier sera dans des mains qui n'on que très peu d'expérience je voudrais si possible que la recopie ne posse pas de problème au personnel qui va utiliser ce fichier.
merci beaucoup pour votre aide
bon weekend
 

La Vouivre

XLDnaute Occasionnel
Re : Recopier une feuille dans une autre classeur qu'il soit ouvert ou fermé

En mettant du code en premier pour fermer le fichier si celui-ci et ouvert ,puis le code ouvrir le fichier pour recopier la feuille ,je me retrouve avec un message d'erreur .
Y as t'il une solution à mon problème? je ne trouve pas d'indice me permettant de recopier la feuille dans les deux cas ouvert ou fermé pour le fichier.
 

La Vouivre

XLDnaute Occasionnel
Re : Recopier une feuille dans une autre classeur qu'il soit ouvert ou fermé

sachant qu'elle se trouve à la fin du code



Sub copie()
Set fichier1 = Workbooks(f1)
flag = 0
For Each i In Workbooks
If i.Name = f2 Then flag = 1
Next
If flag = 0 Then Set fichier2 = Workbooks.Open(chemin & f2) Else Set fichier2 = Workbooks(f2)
fichier1.Sheets("feuil1").Range("A1:F22").Copy fichier2.Sheets("synthèse").Range("a1")
If flag = 0 Then fichier2.Close savechanges = True

End Sub
 

La Vouivre

XLDnaute Occasionnel
Re : Recopier une feuille dans une autre classeur qu'il soit ouvert ou fermé

Bravo Monsieur magnifique travail ,
alors la ... je ne comprends rien à la chose ":"
ça marche
et dans les deux sens en plus .
Merci énormément pour ton aide , puis-je te demander si possible quelques commentaires sur le code pour que je puisse encore un peu progresser .
 

sousou

XLDnaute Barbatruc
Re : Recopier une feuille dans une autre classeur qu'il soit ouvert ou fermé

Pas trop difficile à comprendre.
1 je vérifie si le classeur2 est ouvert.flag=1 Si non je l'ouvre
2 Je copie les données, et je referme le classeur2 si il était précédemment fermé (flag=0)
Pas dur
Regarde pas à pas
 

Discussions similaires

Statistiques des forums

Discussions
312 613
Messages
2 090 232
Membres
104 455
dernier inscrit
alix