Application.GetOpenFilename(). Fermer le fichier

JUMJ

XLDnaute Junior
Bonjour,

J’ai classeur1 dans lequel j’utilise la fonction NOM1 = Application.GetOpenFilename()

Donc l’utilisateur indique un chemin de fichier que je stocke dans NOM1



Ensuite j’ouvre NOM1 et copie son contenu et le colle dans classeur1.

A l’ecran j’ai classeur1 d’actif et je voudrais fermer NOM1.

Sachant que le chemin stocké dans NOM1 peut être différent à chaque fois comment fermer le classeur auquel il correspond ?


je ne sais pas extraire du chemin le nom du fichier pour le fermer.

Cdt
 

anuky

XLDnaute Occasionnel
Bonjour, une solution possible tu ferme le classeur nom1 avant la copie :

'Déclaration variable
Dim tmp As Variant

'récupère le nom du classeur qui lance la macro
tmp = activeworkbook.name

'Tu ouvre ton fichier Nom1

'Copie les données et ferme le classeur Nom1 sans l'enregistrer
Application.DisplayAlerts = False
Cells.Select
Selection.Copy
ActiveWorkbook.Close
Application.DisplayAlerts = True

'Copie des données dans nouveau classeur
tmp.activate
Range('A1').Select
ActiveSheet.Paste

j'espère avoir été clair et avoir répondu à ta question.

A bientôt.
 

JUMJ

XLDnaute Junior
Merci

je voulais éviter d'avoir des données dans le presse papier car le tableau que je copie est tres grand et cela ralenti la macro et je dois repeter cette action 8 fois au moins.

J'aurai voulu savoir comment extraire le nom du fichier de la fonction GetOpenFilename() pour pouvoir le fermer apres le copier coller comme ça le presse papier est vide.
 

anuky

XLDnaute Occasionnel
De rien

J'était pas loin, mais je pense que là c'est plus ce que tu recherche

tmp = ActiveWorkbook.Name permet de récupérer le nom du fichier actif donc 'tonfichier.xls'

Exemple

Dim NOM1 As Variant
Dim tmp As Variant


NOM1 = Application.GetOpenFilename()
Workbooks.Open Filename:=NOM1
'récupère le nom du classeur qui lance la macro
tmp = ActiveWorkbook.Name

MsgBox ('le fichier' & tmp & ' est ouvert')'c'est juste pour vérifier à supprimer

'tu réalise ta copie

'séléction du fichier NOM1 puis fermeture du classeur actif
Workbooks(tmp).Activate
ActiveWorkbook.Close


A+
 

MichelXld

XLDnaute Barbatruc
bonjour Jumj , bonjour Anuky

ci joint une autre possiblité


Dim Nom1 As String
Dim Wb As Workbook

Nom1 = Application.GetOpenFilename()
Set Wb = Workbooks.Open(Filename:=Nom1)

MsgBox ('le fichier' & Wb.Name & ' est ouvert')
'
'tu réalise ta copie
'
Wb.Close True 'ou False




bon apres midi
MichelXld
 

anuky

XLDnaute Occasionnel
Bonjour MichelXld,

je vais essayer de garder ta solution dans un coin de tête (s'il reste de la place sur mon petit disque dur) c'est beaucoup plus simple que ma technique de débutant bidouilleur (c'est mieux que rien), ça allège le code et ça doit être plus rapide à exécuter.

Merci a toi et au forum, grâce a vous j'apprend des choses tous les jours.
 

Discussions similaires

Statistiques des forums

Discussions
312 388
Messages
2 087 876
Membres
103 672
dernier inscrit
ammarhouichi