Erreur au niveau de la méthode PasteSelection

Résolu
khawla.az Messages postés 14 Statut Membre -  
khawla.az Messages postés 14 Statut Membre -
Salut je veux copier une feuille à la fin d'une autre feuille. j'ai réallisé ce code mais il affiche une erreur au niveau de la méthode pasteSpecial.Merci

<code>Sub Copier()
Dim Sh As Worksheet, ws As Worksheet
Dim LastRow As Integer
Set ws = Sheets("MAI")
Set Sh = Sheets("April")
LastRow = Sh.Cells(Rows.Count, "A").End(xlUp).Row
ws.Cells.Copy
With Sh
Range("A" & LastRow).Select
Selection.PasteSpecial, Paste:=xlValues ' Operation:=xlNone, SkipBlanks:=False, Transpose:=False

End With
End Sub
</code>

2 réponses

  1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Bonjour,

    Evitez les select'

    Sub Copier()
        Dim Sh As Worksheet, ws As Worksheet
        Dim LastRow As Long
        
        Set ws = Sheets("MAI")
        Set Sh = Sheets("April")
        ws.Cells.Copy Sh.Range("A" & .Cells(Rows.Count, "A").End(xlUp).Row)
    End Sub
    
    0
    1. khawla.az Messages postés 14 Statut Membre
       
      Merci mais le code affiche une erreur.
      0
  2. FlawTECH Messages postés 193 Date d'inscription   Statut Membre Dernière intervention   102
     
    Bonjour,

    Pour copier une feuille entière vers une autre feuille, il est obligatoire que la destination de la copie soit la première cellule d'une feuille (en l'occurence A1).

    Il faudrait donc, au lieu de copier la feuille entière, copier uniquement les valeurs qui t'intéressent (en cherchant où se trouve la dernière ligne/colonne occupée et de coller cette selection).

    Voici ton code adapté, en assumant que le contenu à copier est un tableau commençant en A1.
    Au passage, j'en ai profité pour corriger et simplifier ton code, sinon le contenu collé allait écraser la dernière ligne de l'autre feuille :)

    Sub Copier()
    Dim Sh As Worksheet, ws As Worksheet
    Dim LastRow, lRow, lCol As Long
    Set ws = Sheets("MAI")
    Set Sh = Sheets("April")
    LastRow = Sh.Cells(Rows.Count, "A").End(xlUp).Row
    
    With ws
    lRow = .Range("A" & .Rows.Count).End(xlUp).Row ' Dernière ligne du tableau
    lCol = .Cells(1, .Columns.Count).End(xlToLeft).Column ' Dernière colonne du tableau
    .Range("A1", .Cells(lRow, lCol)).Copy ' On copie le tableau
    End With
    
    Sh.Range("A" & LastRow + 1).PasteSpecial Paste:=xlPasteValues ' Operation:=xlNone, SkipBlanks:=False, Transpose:=False
    End Sub
    


    Cordialement,

    FlawTECH

    0
    1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      Bonjour,
      En effet, j'ai un peu oublie la chose
      0
    2. khawla.az Messages postés 14 Statut Membre
       
      Merci bien le code ça fonctionne très bien.c'est ce que je veux .
      0