Microsoft 365 Récupération copie feuille dans mon fichier et fermeture du fichier source

chris6999

XLDnaute Impliqué
Bonjour

Dans le cadre de mon projet je souhaite récupérer depuis mon fichier "récupération copie feuille" la copie d'une feuille d'un autre fichier nommé "planning"
Jusque là pas de pb cela fonctionne

Dim wkbSource As Workbook
Dim wkbDest As Workbook
Dim shttocopy As Worksheet
Dim wbname As String
Dim planning
Dim FichierSIRH As Workbook

Set wkbSource = ActiveWorkbook 'fichier sirh
Set wkbDest = ThisWorkbook ' mon fichier présentiel
wkbSource.Sheets("Plannings").Copy After:=wkbDest.Sheets("Import fichier")



Ce que je n'arrive pas à faire c'est ensuite fermer le fichier dans lequel j'ai récupéré cette feuille "planning" car une fois revenu dans mon fichier d'origine je ne peux plus utiliser la référence activeworkbook vu que c'est le fichier de départ "récupération copie feuille"qui est devenu l'activeworkbook.
Du coup j'essaye de définir le nom complet du fichier planning (car il n'est pas fixe) afin de pouvoir le fermer par la suite.
Le code que j'ai utilisé me fait une erreur de type 91.

planning = ActiveWorkbook.Path & "\" & ActiveWorkbook.Name

Quelqu'un petit m'éclairer sur cette erreur ou me donner une autre proposition pour faire ce que je souhaite faire c'est à dire :

Je lance la macro depuis mon fichier récupération copie feuille, j'ouvre le fichier planning. Je rapatrie la copie de la feuille plannings dans mon fichier de départ puis je ferme le fichier planning sans l'enregistrer.

Je mets mes deux fichiers tests en PJ

Merci par avance pour votre aide

Bonne journée à tous
 

Pièces jointes

  • test récupération copie feuille.xlsm
    29.5 KB · Affichages: 2
  • test planning.xls
    27 KB · Affichages: 1

Jacky67

XLDnaute Barbatruc
Bonjour

Dans le cadre de mon projet je souhaite récupérer depuis mon fichier "récupération copie feuille" la copie d'une feuille d'un autre fichier nommé "planning"
Jusque là pas de pb cela fonctionne

Dim wkbSource As Workbook
Dim wkbDest As Workbook
Dim shttocopy As Worksheet
Dim wbname As String
Dim planning
Dim FichierSIRH As Workbook

Set wkbSource = ActiveWorkbook 'fichier sirh
Set wkbDest = ThisWorkbook ' mon fichier présentiel
wkbSource.Sheets("Plannings").Copy After:=wkbDest.Sheets("Import fichier")



Ce que je n'arrive pas à faire c'est ensuite fermer le fichier dans lequel j'ai récupéré cette feuille "planning" car une fois revenu dans mon fichier d'origine je ne peux plus utiliser la référence activeworkbook vu que c'est le fichier de départ "récupération copie feuille"qui est devenu l'activeworkbook.
Du coup j'essaye de définir le nom complet du fichier planning (car il n'est pas fixe) afin de pouvoir le fermer par la suite.
Le code que j'ai utilisé me fait une erreur de type 91.

planning = ActiveWorkbook.Path & "\" & ActiveWorkbook.Name

Quelqu'un petit m'éclairer sur cette erreur ou me donner une autre proposition pour faire ce que je souhaite faire c'est à dire :

Je lance la macro depuis mon fichier récupération copie feuille, j'ouvre le fichier planning. Je rapatrie la copie de la feuille plannings dans mon fichier de départ puis je ferme le fichier planning sans l'enregistrer.

Je mets mes deux fichiers tests en PJ

Merci par avance pour votre aide

Bonne journée à tous
Bonjour,
Le code d'importation pourrait ressembler à ceci
Dans l'exemple les deux classeurs sont dans le même répertoire
VB:
Sub importFeuille()
    Workbooks.Open Filename:=ThisWorkbook.Path & "\test planning.xls"
        Sheets("Plannings").Copy After:=ThisWorkbook.Sheets(Sheets.Count)
    Workbooks("test planning.xls").Close False
End Sub
 

chris6999

XLDnaute Impliqué
Bonjour,
Le code d'importation pourrait ressembler à ceci
Dans l'exemple les deux classeurs sont dans le même répertoire
VB:
Sub importFeuille()
    Workbooks.Open Filename:=ThisWorkbook.Path & "\test planning.xls"
        Sheets("Plannings").Copy After:=ThisWorkbook.Sheets(Sheets.Count)
    Workbooks("test planning.xls").Close False
End Sub

Bonsoir

Merci pour cette réponse mais elle ne répond pas à ma problématique dans la mesure où comme je l'ai expliqué je ne connais pas à l'avance le nom du fichier planning qui est variable.
Ce que j'essaye de faire c'est de pouvoir déclarer le nom et le chemin complet afin d'en commander la fermeture ensuite...

Si je ne me trompe pas dans votre proposition vous faites référence à un nom déjà connu (ici test planning.xls).

Je vous remercie quand même d'avoir essayé de m'aider
Bonne soirée
 

Jacky67

XLDnaute Barbatruc
Bonsoir

Merci pour cette réponse mais elle ne répond pas à ma problématique dans la mesure où comme je l'ai expliqué je ne connais pas à l'avance le nom du fichier planning qui est variable.
Ce que j'essaye de faire c'est de pouvoir déclarer le nom et le chemin complet afin d'en commander la fermeture ensuite...

Si je ne me trompe pas dans votre proposition vous faites référence à un nom déjà connu (ici test planning.xls).

Je vous remercie quand même d'avoir essayé de m'aider
Bonne soirée
Re..
Il arrive un moment ou il faudra tout de même connaitre le chemin et le nom......
Par des variables, ou des cellules avec les informations
VB:
Sub importFeuille()
    Dim Repertoire$, Fichier$
    Repertoire = ThisWorkbook.Path & "\"    'A Adapter
    Fichier = "test planning.xls"    'A Adapter
    Workbooks.Open Filename:=Repertoire & Fichier
    Sheets("Plannings").Copy After:=ThisWorkbook.Sheets(Sheets.Count)
    Workbooks(Fichier).Close False
End Sub
Ou alors avec l'instruction
Fichier = Application.GetOpenFilename
Et chercher le fichier avec l'explorateur
VB:
Sub importFeuille()
    Dim Fichier
    Fichier = Application.GetOpenFilename("Fichier excel (*.xls;*.xlsx;*.xlsm), *.xls;*.xlsx;*.xlsm")
    If Fichier = False Then Exit Sub
    Workbooks.Open Filename:=Fichier
    Sheets("Plannings").Copy After:=ThisWorkbook.Sheets(Sheets.Count)
    Fichier = CreateObject("Scripting.FileSystemObject").GetFileName(Fichier)
    Workbooks(Fichier).Close False
End Sub

NB: Pour fermer un classeur seul sont nom est nécessaire (pour ne pas dire obligatoire) , pas le chemin complet.
 
Dernière édition:

chris6999

XLDnaute Impliqué
Re..
Il arrive un moment ou il faudra tout de même connaitre le chemin et le nom......
Par des variables, ou des cellules avec les informations

Oui c'est sûr. C'est bien pour ça que j'essayais de récupérer ce fameux nom qui est celui du nouveau fichier que j'ouvre et dans lequel je récupère la copie de la feuille planning.
C'est exactement ce que tu proposes dans ta dernière proposition.
Cela fonctionne très bien et je t'en remercie.
Mon projet repart grâce à toi. Merci encore et bonne journée


 

Bernard_XLD

XLDnaute Barbatruc
Membre du Staff
Dim wkbSource As Workbook
Dim wkbDest As Workbook
Dim shttocopy As Worksheet
Dim wbname As String
Dim planning
Dim FichierSIRH As Workbook

Set wkbSource = ActiveWorkbook 'fichier sirh
Bonjour Chris6999, Jacky67, le forum

@chris6999 je ne vois pas le problème car tu as référencé ton classeur
une fois référencé, un simple
wkbSource.Close False
suffira pour fermer ton classeur sans l'enregistrer, pas besoin d'activeworbook ou autre sur un objet référencé qui est par nature défini et connu.

Bien cordialement, @+
 

Discussions similaires

Statistiques des forums

Discussions
314 665
Messages
2 111 686
Membres
111 259
dernier inscrit
Seb15