Coller une plage de cellule

Bonjour à tous,

J'ai un petit problème avec une macro que j'essaie de résoudre depuis deux jours.

En gros, elle doit permettre à un utilisateur de coller une ou plusieurs cellules, lignes ou colonnes à un endroit donné. Mais je n'arrive pas à trouver le code pour coller une plage qui peut varier comme ça.

Ci-dessous le code. L'erreur se produit à

Sheets("TempArrow").Cells.PasteSpecial Paste:=xlPasteValues

Merci beaucoup pour votre aide !

Sub Delete_Paste_Arrow()

'Cette macro permet de coller les données d'Arrow après les avoir copiées manuellement.

Application.ScreenUpdating = False
Application.DisplayAlerts = False
Application.Calculation = xlSemiautomatic

'Créer la feuille temporaire

Sheets.Add.Name = "TempArrow"

'Coller les données sur la feuille temporaire

Sheets("TempArrow").Cells.PasteSpecial Paste:=xlPasteValues
Sheets("TempArrow").Cells.PasteSpecial Paste:=xlPasteFormats

'Effacer les données existantes de la feuille Arrow

Sheets("Arrow").Rows("5:36000").Clear

'Copier les données de TempArrow

With Sheets("TempArrow")
        .Range(.Cells(1, 1), .Cells(10000, 50)).Copy Sheets("Arrow").Cells(5, 1)
End With

'Effacer la feuille TempArrow

Sheets("TempArrow").Delete

Application.ScreenUpdating = True
Application.DisplayAlerts = True

End Sub

Bonjour,

Je ne pense pas qu'une feuille supplémentaire soit nécessaire à ce que tu sembles essayer de faire....

Cependant, comme je ne sais pas quelle partie de la feuille tu copies, il m'est difficile de te donner un code correct.

Rajoute un peu de précisions sur le but de ton copier/coller Spécial (zone concernée....)

Bon courage

Hello,

En fait, si j'ajoute une feuille, c'est pour 'sauvegarder' les données du presse papier. En effet, quand j'efface les données existantes, j'ai l'impression que ça supprime le contenu du presse papier.

En ce qui concerne la zone copiée, elle vient d'un autre fichier dont le nom change constamment. L'utilisateur peut, selon son bon vouloir, copier les colonnes, les lignes ou les cellules. D'où mon problème !

Re-,

en copiant la zone dans un tableau en mémoire, on peut restituer sans souci....

Du style :

Sub copier_coller()
Dim Tblo
Dim NbrCol As Long
Tblo = Selection.Value
NbrCol = Selection.Columns.Count
'tu peux faire ce que tu veux
Selection.Clear
Range("A1").Resize(UBound(Tblo), NbrCol) = Tblo
End Sub

Bon courage

Hello,

Ca m'a l'air pas mal ! Malheureusement, le code ci-dessous bloque à Range("A5").Resize(UBound(Tblo), NbrCol) = Tblo (erreur type mismatch). Le truc c'est que la zone sélectionnée appartient à un autre fichier que celui où il faut coller les données. Une idée ?

Peut être y a un moyen d'affecter le contenu du presse papier à la variable...

Sub Delete_Paste_Arrow2()

'Cette macro permet de coller les données d'Arrow après les avoir copiées manuellement.

Application.ScreenUpdating = False
Application.DisplayAlerts = False
Application.Calculation = xlSemiautomatic

'Stockage de la donnée sélectionnée

Dim Tblo
Dim NbrCol As Long
Tblo = Selection.Value
NbrCol = Selection.Columns.Count

Sheets("Arrow").Rows("5:36000").Clear

Range("A5").Resize(UBound(Tblo), NbrCol) = Tblo

Application.ScreenUpdating = True
Application.DisplayAlerts = True

End Sub

Quelqu'un a une idée ?

Rechercher des sujets similaires à "coller plage"