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

chafik.b Messages postés 1 Statut Membre -  
ThauTheme Messages postés 1564 Statut Membre -
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


1 réponse

  1. ThauTheme Messages postés 1564 Statut Membre 160
     
    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