Copie d'une sélection vers autre fichier première ligne non vide

chris6999

XLDnaute Impliqué
Bonjour et très bonne année à tout le FORUM

Je rencontre un petit problème pour copier la sélection courante d'un classeur (fichiermacro) sur la dernière cellule vide de ma colonne B du classeur (fichiertest)

La copie des données ne correspond pas à la première cellule vide mais à la ligne 9 !

Mon code

ActiveWorkbook.Sheets(1).[A1].CurrentRegion.Copy Workbooks("fichiertest.xlsm").Sheets("TI43").Cells(Range("b65536").End(xlUp).Row + 1, 2)

Je mets en PJ :
Un fichier fichiermacro à partir duquel est lancée la macro
Un fichier test sur lequel seront exportées les données (à ouvrir préalablement)

J'espère que vous pourrez voir ce qui cloche dans ce code

Merci d'avance
 

Pièces jointes

  • fichiermacro.xlsm
    15.8 KB · Affichages: 16
  • fichiertest.xlsm
    432.1 KB · Affichages: 17
  • fichiertest.xlsm
    432.1 KB · Affichages: 22

Marc L

XLDnaute Occasionnel
Bonjour !

Ce qui cloche est le non respect du modèle objet d'Excel !
Comme il n'y a pas de référence devant le Range du End(xlUp),
il est donc pris sur la feuille active au lieu de celle de destination !

Qui plus est c'est un peu bête de transformer un Range en numéro de ligne
pour de suite le retransformer en Range (Cells) ! Autant appliquer directement un offset :

VB:
Sub macro()
    Feuil1.Cells(1).CurrentRegion.Copy _
    Workbooks("fichiertest.xlsm").Worksheets("TI43").Cells(Rows.Count, 2).End(xlUp)(2)
End Sub
_______________________________________________________________________________
Merci de cliquer sur J'aime ce post en bas à gauche de chaque message ayant aidé …

_______________________________________________________________________________
Je suis Paris, …
 
Dernière édition:

chris6999

XLDnaute Impliqué
Re : Bonjour !

Ce qui cloche est le non respect du modèle objet d'Excel !
Comme il n'y a pas de référence devant le Range du End(xlUp),
il est donc pris sur la feuille active au lieu de celle de destination !

Merci Marc cela fonctionne très bien sur mes fichiers test. Malheureusement le code bloque dans mon fichier réel qui est un peu plus complexe.
Il faudrait que je précise que la sélection porte sur la feuille active (car ma macro démarre d'un autre fichier et la sélection se fait sur ma feuille de départ) mais lorsque je rajoute à ton code ActiveSheet (ActiveSheet.Feuil1.Cells(1).CurrentRegion.Copy _...)
j'ai un bug 438 Propriété ou méthode non gérée par cet objet.

Je comprends en tous cas d'où vient le problème.

Je vais creuser.

Merci encore
Bonne soirée​
 
Dernière édition:

Marc L

XLDnaute Occasionnel

Feuil1 est une feuille, ActiveSheet étant une feuille donc ActiveSheet.Feuil1 ne veut rien dire ‼

Utiliser une seule référence à une feuille, soit le CodeName, soit ActiveSheet ou encore Worksheets

respectant la règle TBTO (Think, But Think Object !), c'est à dire le modèle objet d'Excel …

 

Discussions similaires

Statistiques des forums

Discussions
312 195
Messages
2 086 082
Membres
103 112
dernier inscrit
cuq-laet