Copier le contenu d'une feuille dans un classeur fermé

Résolu
muiigisha Messages postés 61 Statut Membre -  
muiigisha Messages postés 61 Statut Membre -
Bonjour,

pour copier le contenu de la feuille d'un des classeurs actifs dans un classeur fermé j'ai utilisé ce code trouvé sur le net et celà marchait très bien jusqu'au moment j'ai lié le classeur en tant que Data base dans power pivot . Lors de la compilation une erreur se produit et je ne comprends pas ce que l'aide me dit , l'erreur dit " Run-time error '1004': PasteSpecial method of range class failed"

Merci d'avance pour votre aide
mon code ci dessous

Workbooks.Open Filename:="C:\Daily_report\COD_Metrics\WorkDataFinal.xlsx"
Windows("WorkDataFinal.xlsx").Activate

Cells.Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Windows("WorkDataFinal.xlsx").Close savechanges:=True
Application.DisplayAlerts = False
WDte.Close savechanges:=True
Kill ("C:\Daily_report\COD_Metrics\Bookdata.xlsx")


1 réponse

  1. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 785
     
    Bonjour,

    1) ce code est incomplet
    2) il n'écrit pas dans un classeur fermé
    3) utiliser Activate et Select est une mauvaise méthode
    4) le second pastespecial est inutile
    5) au lieu de travailler sur toutes les cellules il est préférable de se limite à la plage utilisée (usedrange)
    6) plutôt que pastespecial values, utiliser range.value = range.value
    1
    1. muiigisha Messages postés 61 Statut Membre
       
      Bonjour Patrice,
      Merci j'ai essayé de modifier d'après vos conseils et ça marche sans problème. Je mets au cas où le code après modif et si il y a encore des améliorations dites le moi svp et je le ferai. Si la modif peut aider d'autres, voci le code



      WDte.Activate
      ActiveSheet.UsedRange.Select
      Selection.Copy

      Workbooks.Open Filename:="C:\Daily_report\COD_Metrics\WorkDataFinal.xlsx"
      Windows("WorkDataFinal.xlsx").Activate


      ActiveSheet.UsedRange.Select
      Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
      :=False, Transpose:=False
      Windows("WorkDataFinal.xlsx").Close savechanges:=True
      Application.DisplayAlerts = False
      WDte.Close savechanges:=True
      Kill ("C:\Daily_report\COD_Metrics\Bookdata.xlsx")



      Merci beaucoup
      0
    2. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 785 > muiigisha Messages postés 61 Statut Membre
       
      Il faut éviter d'utiliser Activate et Select :
      ' Il est inutile d'activer le classaur WDte
      '    WDte.Activate
          
      ' Déclarations (à placer de préférence en tête de procédure)
      Dim wbk As Workbook
      Dim org As Range
      Dim dst As Range
          
        ' Ouvrir le fichier destination
        Set wbk = Workbooks.Open(Filename:= "C:\Daily_report\COD_Metrics\WorkDataFinal.xlsx")
        ' Définir la plage de destination utilisée
        Set dst = wbk.Worksheets(1).UsedRange
        ' Effacer les données pré-existantes
        dst.ClearContents
        ' Définir la plage origine des données
        Set org = WDte.ActiveSheet.UsedRange
        ' Redéfinir la taille de plage de destination (même que org)
        Set dst = dst.Resize(org.Rows.Count, org.Columns.Count)
        ' Copier les données
        dst.Value = org.Value
        ' Fermer le fichier destination (avec sauvegarde)
        wbk.Close savechanges:=True
          
      ' Suite du code (sans rapport avec la copie) .........
          WDte.Close savechanges:=True
          Kill ("C:\Daily_report\COD_Metrics\Bookdata.xlsx")
      0
    3. muiigisha Messages postés 61 Statut Membre
       
      Bonjour Patrice,
      d'accord c'est compris. Merci beaucoup.
      Par contre lors de l'enregistrement ça ouvre une boite de dialogue et crée plutôt une copie du fichier appelé au lieu de faire juste une sauvegarde.

      Pouvez-vous m'aider?

      Merci d'avance
      0
    4. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 785
       
      Le fichier n'est-il pas en lecture seule ?
      0
    5. muiigisha Messages postés 61 Statut Membre > Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention  
       
      Bonjour Patrice,
      j'ai regardé mais c'est le dossier (dans lequel est le fichier) qui s'entête à être en lecture seule.
      0