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 SubBonjour,
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 SubBon 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