XL 2019 Copier / Coller une ligne entre deux fichiers depuis un 3ème fichier

xorf

XLDnaute Nouveau
Bonjour à tous,

J'ai actuellement un fichier vierge qui me permet d'exécuter une macro sur un fichier que j'ouvre depuis un logiciel (et dont ce fichier n'est pas sauvegardé vu qu'il est généré à la volée par le logiciel). Cette macro met en page les données du fichier généré puis dans cette macro, je souhaite copier la ligne 65 entière pour enfin la coller dans un autre fichier.

Le problème, je n'arrive pas à copier / coller la ligne entre deux fichiers... Les données sont bien copiées, mais cela pose problème lors du collage dans le 3ème fichier test.xlsx.
Si par contre je ne copie que 5 cellules au maximum, cela fonctionne... Au delas, j'ai un message d'erreur indiquant "Erreur d'exécution 1004, Excel ne peut pas coller les données".

J'ai tenté plusieurs rédaction du code suivant ce que j'ai pu trouver sur le net mais rien à faire, je n'y arrive pas.

Je travaille donc sur 3 fichiers :
Un fichier sans extension car non sauvegardé qui s'appelle "Classeur1". Ce fichier s'ouvre dans une nouvelle instance Excel
Un fichier sauvegardé appelé test.xlsx où sont stockés ligne par ligne les données de la ligne 65 de "Classeur1" du dessus
Un fichier sauvegardé appelé : StartMacro.xlsx où la macro est enregistrée et que je lance depuis ce fichier pour mettre les données qui m'intéresse en forme ligne 65 du fichier "Classeur1" puis ensuite les coller dans test.xlsm.
J'ai donc besoin que le script cherche la dernière ligne vide du fichier test.xlsx pour la coller dessus.

En gros le process :
Le fichier Classeur1 se génère et s'ouvre, ma macro sur StartMacro s'exécute automatiquement et réalise le formatage des données sur la ligne 65, puis ouvre le fichier test.xlsx pour coller la ligne 65 sur la dernière ligne vide du fichier, puis sauvegarde et ferme test.xlsx, puis ferme Classeur1 et ainsi de suite à chaque ouverture d'un nouveau Classeur1.....

Pour information, si j'exécute la macro sur le fichier Classeur1, sans passer par le fichier StartMacro, cela fonctionne bien. Cependant, ce n'est pas la solution recherchée car le fichier Classeur1 est un fichier généré à la volée.

Voici la macro que j'exécute dans le fichier "StartMacro.xlsm", dans un Module appelé Module 1:

VB:
Sub Recup()

With GetObject("Classeur1").Sheets(1)

.UsedRange.Replace What:="lundi ", Replacement:=""
.UsedRange.Replace What:="mardi ", Replacement:=""


-------- Pour éviter de surcharger, je supprime le reste de la macro qui permet de mettre les données en forme car cela fonctionne ---------

    .Range("A65:CW65").Select
    .Range("A65:CW65").Copy

End With

 Workbooks.Open Filename:="C:\d\test.xlsx"
 Workbooks("test.xlsx").Worksheets("Test").Activate
 Range("a65536").End(xlUp)(2).Select
 ActiveCell.PasteSpecial Paste:=xlPasteValues

End Sub

Tout s'exécute jusqu'à le PasteSpecial où j'ai le message d'erreur ci-dessus.

Sur le fichier test.xlsx qui s'ouvre bien, il vient bien chercher la dernière ligne vide. Donc le problème se situe réellement au niveau du coller et qui plus est, est seulement quand je sélectionne plus de 5 cellules à coller.... Sachant que j'ai besoin de coller toute la ligne ou tout du moins, au moins de A65 à CW65.

Information peut-être importante, j'ai bien dans le presse papier l'intégralité de la ligne 65 de copiée. Et je peux par contre la coller manuellement dans le fichier test.xlsx MAIS si je veux coller la ligne avec CTRL+V j'ai aussi un message d'erreur "Excel ne peut pas coller les données".
Par contre, un clique droit puis "Coller" cela fonctionne parfaitement.

Je vous remercie par avance pour votre aide.
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
315 098
Messages
2 116 189
Membres
112 679
dernier inscrit
Yupanki