Erreur 1004 "Classeur utilisé en référence..."

Fermé
chafik.b Messages postés 1 Date d'inscription mercredi 15 juin 2016 Statut Membre Dernière intervention 15 juin 2016 - 15 juin 2016 à 14:02
ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 - 16 juin 2016 à 09:05
Bonjour,

J'étais sous excel 2010 et toutes mes macro fonctionnaient parfaitement. là je viens de passer sous 2013, et je pense avoir quelques problèmes de compatibilité surtout quand il s'agit de naviguer entre plusieurs fichiers excel !

dans ce code j'ai deux problèmes :
1) J'ai dû rajouter la commande ".activate" pour chaque classeur, mais ca me debog à chaque fois avant de passer avec F8, est ce qu'il y a une sollution pour que ca passe directement ?

2) le code bloque à la dernière ligne "WB.close" et me donne l'erreur "1004 : ce classeur est utilisé en référence par une autre classeur ...." , je dois donc le fermer manuellement avant de continuer le code.

Auriez vous une solution pour ces deux problèmes svp ? Merci


Sub Histo_Actualiser()
Dim MyWB As Workbook, WB As Workbook
Set MyWB = ActiveWorkbook

MyWB.Sheets("histo Valo").Select
Cells.ClearContents

Set WB = Workbooks.Open(Histo_Fichier, False)
WB.Activate
Sheets("Histo Valo").Select
Sheets("Histo Valo").Cells.Select
Selection.Copy

MyWB.Activate
Sheets("histo valo").Select
Sheets("histo valo").Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

Application.CutCopyMode = False

WB.Close False

End Sub



A voir également:

1 réponse

ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 160
16 juin 2016 à 09:05
Bonjour Chafik, bonjour le forum,

À mon avis ton classeur WB n'était pas ouvert (à cause des guillemets) d'où le planton à la fermeture... Sinon, évite autant que tu le peux les Select qui ne font que ralentir l'exécution du code. Ton code sans eux :

Sub Histo_Actualiser()
Dim MyWB As Workbook, WB As Workbook

Set MyWB = ActiveWorkbook
MyWB.Sheets("histo Valo").Cells.ClearContents
Set WB = Workbooks.Open("Histo_Fichier.xlsx", False) 'extension a adapter à ton cas
WB.Sheets("Histo Valo").Cells.Copy
MyWB.Sheets("histo valo").Range("A1").PasteSpecial(Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False)
Application.CutCopyMode = False
WB.Close False
End Sub

0