Erreur code VBA qui doit copier-coller sur une plage glissante [Résolu/Fermé]

Signaler
Messages postés
79
Date d'inscription
jeudi 9 mars 2017
Statut
Membre
Dernière intervention
8 août 2017
-
Messages postés
79
Date d'inscription
jeudi 9 mars 2017
Statut
Membre
Dernière intervention
8 août 2017
-
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

2 réponses

Messages postés
1769
Date d'inscription
lundi 7 avril 2008
Statut
Membre
Dernière intervention
15 juin 2020
530
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

 
Messages postés
79
Date d'inscription
jeudi 9 mars 2017
Statut
Membre
Dernière intervention
8 août 2017

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 ! :)
Messages postés
1769
Date d'inscription
lundi 7 avril 2008
Statut
Membre
Dernière intervention
15 juin 2020
530
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
Messages postés
79
Date d'inscription
jeudi 9 mars 2017
Statut
Membre
Dernière intervention
8 août 2017

Encore mille mercis Thev, j'aurais appris avec tes réponses !