XL 2013 Random bug ds une macro

sharkantipav

XLDnaute Occasionnel
Bonjour,
J'ai la macro suivante qui ouvre un fichier, copie/colle un range ds mon fichier original puis le ferme

Code:
'open basket
FilePath = Application.GetOpenFilename("Text Files (*.xlsx), *.xlsx")
If FilePath <> False Then
Range("B3").Value = FilePath
End If

Dim x As Workbook
Dim y As Workbook

'## Open both workbooks first:
Set x = Workbooks.Open(Range("B3").Value)
Set y = ThisWorkbook

Dim endC As String
endC = x.ActiveSheet.Range("A2").End(xlDown).Row + 2

'Now, copy what you want from x:
x.ActiveSheet.Range("A1:G" & endC).Copy

'Now, paste to y worksheet:
y.Sheets("Basket").Range("A1").PasteSpecial

'Close x:
x.Close

Sheets("Basket").Range("A2").Select

Il se passe que des fois au lieu de fermer le fichier x, c'est le fichier y qui se ferme.
Je suspecte que cela vient de "ActiveSheet" mais je n'arrive pas a le resoudre.

Merci bcp
 

Staple1600

XLDnaute Barbatruc
Bonjour le fil, le forum

J'ai "corrigé" ton code selon ma façon d'écrire du VBA
VB:
Sub test()
Dim x As Workbook, y As Workbook
Dim FilePath$, rngPath As Range
Set y = ThisWorkbook
Set rngPath = y.Sheets(1).Range("B3")
'open basket
FilePath = Application.GetOpenFilename("Classeur Excel (*.xls), *.xls")
If FilePath <> "" Then
rngPath.Value = FilePath
End If
'## Open both workbooks first:
Set x = Workbooks.Open(rngPath.Text)
x.Sheets(1).Range("A1:G" & x.Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row).Copy _
y.Sheets("Basket").Range("A1")
'Close x:
x.Close
End Sub
Est-ce que :
1) le résultat est identique à ta macro originale ?
2) Est-ce que le bug survient toujours ?
 

mutzik

XLDnaute Barbatruc
Bonjour, Salut l'agrafe

si tu fais un set x = open workbook ...
il devient le fichier actif

ensuite tu fais set y = active workbook => donc tes deux set ... pointent vers le même fichier

d'abord :
set x = active ...
set y = workbook.open ...
 

Staple1600

XLDnaute Barbatruc
Bonjour le fil, le forum, mutzik

@mutzik
J'ai pourtant testé le code que j'ai posté
J'ai un classeur (enregistré ou pas) qui contient la macro et une feuille nommée Basket
J'ai un fichier test.xls contenant des données en A1:Gx
(ou x=dernière ligne non vide)
Je lance la macro test en étant sur la feuille Basket, et j'obtiens bien une recopie des données du fichier test.xls dans la feuille Basket du fichier contenant la macro.
 

mutzik

XLDnaute Barbatruc
Bonjour le fil, le forum, mutzik

@mutzik
J'ai pourtant testé le code que j'ai posté
J'ai un classeur (enregistré ou pas) qui contient la macro et une feuille nommée Basket
J'ai un fichier test.xls contenant des données en A1:Gx
(ou x=dernière ligne non vide)
Je lance la macro test en étant sur la feuille Basket, et j'obtiens bien une recopie des données du fichier test.xls dans la feuille Basket du fichier contenant la macro.


re,
ma remarque ne s'appliquait pas à toi mais au demandeur pour lui expliquer à quel moment il a fait fausse route
 

Discussions similaires

Statistiques des forums

Discussions
312 103
Messages
2 085 325
Membres
102 862
dernier inscrit
Emma35400