Pb avec ActiveWorkbook.close

mfb

XLDnaute Occasionnel
Bonjour Excel,
Je cherche à réaliser le transfert de données depuis 1 fichier A appelé "importer" d'un fichier B appelé Listing Sé via un Usf. Cela marche sur 1er Pc avec EXCEL 2007 sous Window 2010.
Quand je transfert tout ceci sur un 2ème Pc avec EXCEL 2010 sous Window 2010 y a Bug à la fermeture du fichier Listing à l'instruction "Windows(ComboBox1.Value).Close"
Si je supprime cette instruction le transfert s'exécute bien mais le fichier reste ouvert. C'est pas très réglo.
J'ai essayé avec entre autre WorkBook.close. Rien y fait.
N'ayant pas trouvé de fil apportant des tuyaux à ce Pb je me permet de me tourner vers vous.
Je bien entendu dispo pour + info.
Par Avance MERCI
Daniel
 

Pièces jointes

  • Importer-2.xlsm
    35 KB · Affichages: 34
  • Listing Sé.xlsx
    12.1 KB · Affichages: 33

Jacky67

XLDnaute Barbatruc
Bonjour,
Que donne un essai avec ce code
VB:
Private Sub CommandButton1_Click()
Dim Chemin As String, Fichier As String

Chemin = ThisWorkbook.Path & "\"
Fichier = ComboBox1.Value
Application.ScreenUpdating = False
Application.DisplayAlerts = False
With Workbooks.Open(Chemin & Fichier)
  Sheets("Feuil1").Range("A2:AC100").Copy ThisWorkbook.ActiveSheet.Range("D7")
End With
ActiveWorkbook.Close
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
 

Staple1600

XLDnaute Barbatruc
Bonjour le fil, le forum

Une petite modif du code de jacky67
(pour être sur de savoir quel classeur, on ferme)
VB:
Private Sub CommandButton1_Click()
Dim Chemin$, Fichier$, wb As Workbook
Chemin = ThisWorkbook.Path & "\": Fichier = ComboBox1.Value
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Set wb = Workbooks.Open(Chemin & Fichier)
wb.Sheets("Feuil1").Range("A2:AC100").Copy ThisWorkbook.ActiveSheet.Range("D7")
wb.Close False
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub

@zebanx
En désignant le classeur, pas besoin de l'activer.
Bien sur il faut qu'il soit ouvert.
 

Jacky67

XLDnaute Barbatruc
Bonjour le fil, le forum

Une petite modif du code de jacky67
(pour être sur de savoir quel classeur, on ferme)
Hello JM
Je n'éprouve aucune difficulté avec ma proposition
Pour moi, l'ouverture d'un classeur rend le classeur actif
Donc
ActiveWorkbook.Close
Devrait être suffisant
Et comme dans le classeur actif, rien n'a été modifié "False" devient inutile.
Mais ...peut être je me trompe:confused:
 

Staple1600

XLDnaute Barbatruc
Re

@Jacky67
J'ai jamais dit qu'il y avait une difficulté.
J'ai pris l'habitude de cette syntaxe dans ces cas-là
(sans doute une propension à la fainéantise, wb étant plus court à écrire qu'ActiveWorbook ;))
Quand au False, c'est juste pour me rappeler que j'enregistre sans modifier.
 

mfb

XLDnaute Occasionnel
Re,
Je viens de tester les 3 solutions celles de Jacky et Staple me donnent toutes 2 l'erreur chemin introuvable et celle de Zebanx Bug sur Activate.
Bien que partisan de ne pas s'avouer vaincu je vais tourner le Pb en réalisant un import sans ouverture de fichier ... donc sans pb de fermeture. Cela m'en créera surement d'autres.
Désolé de vous avoir fais gamberger pour rien.
EXCUSES et MERCI à vous 3 et à tout les autres.
Bon WE
A+
Daniel
 

zebanx

XLDnaute Accro
Re-

Je ne suis reparti que sur "mes" codes en prenant en compte la remarque de staple1600 sur le deuxième code.
A adapter avec l'USF mais si les fichiers sont sur le même répertoire, la copie se fait correctement.
Ou j'ai mal interprété la demande.

++
zebanx
 

Pièces jointes

  • importer.zip
    27.2 KB · Affichages: 23

Staple1600

XLDnaute Barbatruc
Re

Donc une petite macro pour connaitre le chemin du classeur qu'on veut ouvrir
VB:
Sub Test_CHEMIN()
Dim Classeur, Chemin$
Classeur = Application.GetOpenFilename("Fichiers XL,*.xl?", , "Sélectionnez le classeur source,svp")
If Classeur <> False Then
MsgBox Classeur
Chemin = Left(Classeur, InStrRev(Classeur, "\"))
MsgBox Chemin
Else
MsgBox "Vous n'avez pas sélectionné de fichier!", vbCritical, "ERREUR"
End If
End Sub
 

Staple1600

XLDnaute Barbatruc
Re

@zbanx
Certes.
Mais mon dernier code* avait vocation à être modifié pour ouvrir le classeur sélectionné
Ce qu'une formule aurait du mal à faire ;)
Je cherche à réaliser le transfert de données depuis 1 fichier A appelé "importer" d'un fichier B appelé Listing Sé via un Usf.
*: Ce qui évite de stocker le chemin en dur et donc d'avoir des erreurs de chemin comme l'indique le demandeur dans son dernier message.

PS:@zebanx: merci de me dire merci mais je m'adressais d'abord au demandeur ;)
 

Discussions similaires

Réponses
2
Affichages
281

Statistiques des forums

Discussions
312 195
Messages
2 086 078
Membres
103 112
dernier inscrit
cuq-laet