Erreur code VBA qui doit copier-coller sur une plage glissante

Résolu/Fermé
Dianex87 Messages postés 79 Date d'inscription jeudi 9 mars 2017 Statut Membre Dernière intervention 8 août 2017 - 30 mars 2017 à 10:45
Dianex87 Messages postés 79 Date d'inscription jeudi 9 mars 2017 Statut Membre Dernière intervention 8 août 2017 - 30 mars 2017 à 13:38
Bonjour, bonjour !

Ma macro est sensée copier-coller special valeurs ma plage C9:C11 dans une plage définie telle que ci-dessous:




Sub CopyPasteValues()

'On sheets TFU evolution
Sheets("TFU evolution").Activate

Dim LastColumn As Long
LastColumn = Cells(15, Columns.Count).End(xlToRight).Column

Range("C9:C11").Select
Selection.Copy
Cells(15, LastColumn).Offset(0, 3).Select

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

Application.CutCopyMode = False

End Sub



Mais cela ne fonctionne pas et après qlq changements/essais, je n'arrive pas à débloquer ça... C'est la partie soulignée qui m'est signalée comme erreur ("Run-time error '1004': Application-defined or object-defined error"). Est-ce que quelqu'un voit mon erreur ?

Merci pour votre aide!

Dianex87
A voir également:

2 réponses

thev Messages postés 1884 Date d'inscription lundi 7 avril 2008 Statut Membre Dernière intervention 17 novembre 2024 691
Modifié le 30 mars 2017 à 11:10
Bonjour,

La détermination de ta dernière colonne ne donne pas la dernière colonne utilisée mais celle de la feuille. Il est normal qu'en sélectionnant une cellule se situant 3 colonnes plus loin que celle de la dernière colonne de la feuille, Excel te réponde par une erreur.

Dernière colonne utilisée de la ligne 15 de la feuille
 
With Sheets("TFU evolution")
LastColumn = .Cells(15, .Columns.Count).End(xlToLeft).Column
End With

Dernière colonne utilisée de la feuille

With Sheets("TFU evolution").UsedRange
LastColumn = .Column + .Columns.Count - 1
End With

 
0
Dianex87 Messages postés 79 Date d'inscription jeudi 9 mars 2017 Statut Membre Dernière intervention 8 août 2017
30 mars 2017 à 11:20
Merci Thev, ça marche effectivement !

Je n'en avais aucune idée de cette difference, je ne creusais pas du tout par là :)

Pour parfaire mon training sur le sujet, est ce que de la meme façon on a :

LastRow = Cells ... End(xlToDown).Row --> dernière ligne de la feuille

Et

LastRow = Cells ... End(xlToUp).Row --> dernière ligne utilisée d'une Colonne lamda de la feuille ?

Merci encore ! :)
0
thev Messages postés 1884 Date d'inscription lundi 7 avril 2008 Statut Membre Dernière intervention 17 novembre 2024 691
Modifié le 30 mars 2017 à 13:30
Bonjour Dianex87,

Dernière ligne de la feuille :

With ActiveSheet
lastrow = .Rows.Count
End With

Dernière ligne utilisée de la feuille
 
With ActiveSheet.UsedRange
lastrow = .Row + .Rows.Count - 1
End With

Dernière ligne non vide pour la colonne A

  With ActiveSheet
lastrow = .Columns("A").End(xlDown).Row
End With

Dernière ligne utilisée pour la colonne A

With ActiveSheet
lastrow = .Cells(.Rows.Count, "A").End(xlUp).Row
End With
0
Dianex87 Messages postés 79 Date d'inscription jeudi 9 mars 2017 Statut Membre Dernière intervention 8 août 2017
30 mars 2017 à 13:38
Encore mille mercis Thev, j'aurais appris avec tes réponses !
0