Echec de la méthode Paste de la classe Worksheet

Bonjour, je débute sur VBA et j'ai écrit un code qui ouvre un classeur pour copier les cellules que je lui indique et les coller avec liason dans un autre classeur, mon code fonctionne quand mon classeur d'arrivée n'est pas en "mode tableau". Mais dès que je passe en tableau et que je lance ma macro pour ajouter une ligne par exemple j'ai l'erreur "La méthode Paste de la classe Worksheet a échoué". Pour contourner ce problème je suis obligé de convertir en plage, de relancer la macro et de repasser la feuille en tableau, j'aimerais donc savoir si je peux copier avec liaison directement au sein d'un tableau. Je vous mets le bout du code en question:

Set Wbk1 = Workbooks.Open(Filename:="Chemin\" & dpt & "\" & num & ".xlsx")

With Wbk1.Worksheets("Feuil1").Range(Cells(3, 6), Cells(3, 12)).Copy
End With
Workbooks("Synthèse.xlsm").Activate
Worksheets("2013").Activate
Range(Cells(ligne, 17), Cells(ligne, 23)).Select
ActiveSheet.Paste Link:=True
Wbk1.Close True

Merci d'avance!

Bonjour

Essaie plutôt ceci

Set Wbk1 = Workbooks.Open(Filename:="Chemin\" & dpt & "\" & num & ".xlsx")
Wbk1.Worksheets("Feuil1").Range(Cells(3, 6), Cells(3, 12)).Copy
Workbooks("Synthèse.xlsm").Worksheets("2013").Range(Cells(ligne, 17), Cells(ligne, 23)).Paste Link:=True
Wbk1.Close True

Si ok, lors de ta réponse clique sur le V vert à coté du bouton EDITER pour clôturer le fil

Amicalement

Bonjour Dan,

Merci beaucoup pour ta réponse. J'ai modifié le code comme tu me l'as suggéré, mais ça s'arrête encore à la méthode Paste avec comme message d'erreur "Erreur définie par l'application ou par l'objet".

Je ne comprends vraiment pas, logiquement je suis d'accord que ton code devrait parfaitement fonctionné... Une subtilité sur la méthode doit m'échapper mais quoique je tente, si j'essaye de copier avec liaison dans le tableau je me retrouve avec une erreur qui stop tout à la méthode Paste.

Cordialement

Re

La variable "ligne" a bien une valeur ??

Essaie en modifiant cette ligne :

Workbooks("Synthèse.xlsm").Worksheets("2013").Range(Cells(ligne, 17)).Paste Link:=True

Cordialement

Oui la variable ligne a bien une valeur, je le vérifie quand la méthode échoue.

J'ai toujours la même erreur avec cette modification, je te mets le début du code, peut-être que le problème vient de là:

Dim ligne As Integer
Dim num As String
Dim Wbk1 As Workbook
Dim dpt As String

ligne = InputBox("Numéro ligne")

num = Left(Cells(ligne, 5).Text, 5)

dpt = Left(Cells(ligne, 10).Text, 2)

If Dir("chemin\" & dpt & "\" & num & ".xlsx") <> "" Then

Set Wbk1 = Workbooks.Open(Filename:="chemin\" & dpt & "\" & num & ".xlsx")

With Wbk1.Worksheets("Feuil1").Range(Cells(3, 6), Cells(3, 12)).Copy
End With

Workbooks("Synthèse.xlsm").Activate
Worksheets("2013").Activate
Range(Cells(ligne, 17), Cells(ligne, 23)).Select
ActiveSheet.Paste Link:=True
Wbk1.Close True

Sachant qu'au début je suis sur le fichier synthèse sur la feuille 2013.

Cordialement

Re,

Wbk1 est bien ouvert quand tu copies ?? car je vois la variable Chemin qui n'est pas dans le code

Crdlt

Oui wbk1 est bien ouvert et la copie des cellules s'effectue bien, c'est juste au moment de coller que ça bloque. J'ai remplacé le chemin complet pour aller au dossier par "chemin" dans mes postes pour simplifier.

Et le code fonctionne comme je veux quand je convertis la feuille "2013" en plage.

Cordialement

Re,

ZiggyStardust a écrit :

Et le code fonctionne comme je veux quand je convertis la feuille "2013" en plage.

Que veux tu dire par "Plage"

Au début du fil tu parles aussi de "tableau", mais là je cherche à comprendre...

Crdlt

J'ai rentré mes données dans mon classeur "Synthèse" sous forme d'un tableau organisé par colonne, pour pouvoir manipuler les données plus facilement (avec des filtres) j'ai tout sélectionnée et j'ai fait Insertion -> Tableau. De cette manière toutes mes données sont organisées dans un seul tableau et je peux filtrer ou trier par colonne. C'est ce que j'ai désigné comme "mode tableau" en début de fil.

Et quand je suis dans ce mode là, ma macro ne fonctionne plus pour des lignes comprises dans ce tableau.

Il faut que j'aille dans Création -> Convertir en plage, pour que les données ne soient plus insérées dans un tableau et relancer la macro pour pouvoir copier avec liaison les cellules d'un autre classeur. Et mon but est de pouvoir réaliser cette opération sans devoir convertir en plage pour garder mon tableau.

Cordialement

re

Possible de voir le fichier sans données confidentielles ?

Crdlt

Rechercher des sujets similaires à "echec methode paste classe worksheet"