Copie de données [Résolu]

Signaler
Messages postés
52
Date d'inscription
jeudi 26 juin 2008
Statut
Membre
Dernière intervention
2 octobre 2008
-
Messages postés
52
Date d'inscription
jeudi 26 juin 2008
Statut
Membre
Dernière intervention
2 octobre 2008
-
bonjour,

j'ai deja posé presque la meme question, je pensais avoir compris et je me rends compte que non...

j'explique mon probleme: mon bouton de commande est placé sur le fichier "tool1.xls". 
je demande à l'utilisateur le chemin complet d'un autre fichier sur lequel il veut extraire des données. 
enfin je veux copier certaines données de ce fichier pour les coller sur la "feuille2" du fichier "tool1.xls"

voici mon code:

MsgBox "choisir l'order", vbOKOnly, "Adresse order"
Chemin = Application.GetOpenFilename()                           ' je demande le chemin complet du 'second fichier'

Workbooks.Open Chemin
Workbooks(Dir(Chemin)).Activate                ' j'ouvre et active le fichier demandé par l'utilisateur
Range("E2:E500").Copy                                ' je copie la "colonne E" de ce fichier
ActiveWorkbook.Close
Worksheets("sheet2").Activate
ActiveSheet.Paste                                          ' je colle cette colonne dans la "feuille2" du fichier "tool1.xls"

mais avec ce code je copie la colonne E du fichier "tool1.xls" et non pas celle du fichier demandé par l'utilisateur.

j'esperes que j'ai reussi a me faire comprendre, sinon dites le moi j'essaierai de réexpliquer.

donc j'aimerais savoir ou est mon erreur et comment il faut faire pr que ça marche...

merci

7 réponses

Messages postés
1835
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
9
...
cela ne vient pas du range !... utilise une message box pour voir ce que contient la variable FichierOuvert
D'autre part la ligne que je t'ai donné dans mon message precedent contient le nom feuil1 verifi qu ce nom correspond a un nom de feuille existante dans le fichier ouvert parGetOpenFilename()

Dim FichierOuvert As String
MsgBox "choisir l'order", vbOKOnly, "Adresse order"
Chemin = Application.GetOpenFilename()                           ' je demande le chemin complet du 'second fichier'
Workbooks.Open Chemin
FichierOuvert = Dir(Chemin)
MsgboxFichierOuvert
Workbooks(FichierOuvert).Sheets("feuil1").Range("E1:E500").Copy
ThisWorkBook.ActiveSheet.Paste Destination:=Range("A1")
Messages postés
1835
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
9
Salut,

voila un bel exemple pour expliquer pourquoi il faut eviter d'activer, de selectionner, ou la methode copier/coller de l'enregistreur de macro etc . Ce sont des methodes lentent et risqués !

Dim FichierOuvert As String
MsgBox "choisir l'order", vbOKOnly, "Adresse order"
Chemin = Application.GetOpenFilename()                           ' je demande le chemin complet du 'second fichier'
Workbooks.Open Chemin
FichierOuvert = Dir(Chemin)
Workbooks(FichierOuvert).Range("E1:E500").Copy
ThisWorkBook.ActiveSheet.Paste Destination:=Range("A1")

A+
Messages postés
52
Date d'inscription
jeudi 26 juin 2008
Statut
Membre
Dernière intervention
2 octobre 2008

il y a un message d'erreur sur la ligne :

Workbooks(FichierOuvert).Range("E1:E500").Copy

le message d'erreur est : 
 
error 438
object doesn't support this property or method

je ne vois pas tjs pas ce qu'il faut faire...
Messages postés
1835
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
9
...

Workbooks(FichierOuvert).Sheets("feuil1").Range("E1:E500").Copy
Messages postés
52
Date d'inscription
jeudi 26 juin 2008
Statut
Membre
Dernière intervention
2 octobre 2008

non toujours pareil...

on dirait que l'on ne peut pas mettre quelquechose devant l'objet "Range"

il n'accepte ni workshhet, ni workbook...
Messages postés
52
Date d'inscription
jeudi 26 juin 2008
Statut
Membre
Dernière intervention
2 octobre 2008

merci c'est bon ça marche!

c'est de ma faute pcq en réalité le probleme est un peu plus compliqué j'avais simplifié pr l'explication et je mettais trompé dans le nom des "feuilles"...

par contre j'ai juste changé un truc pour coller :

Dim FichierOuvert As String
MsgBox "choisir l'order", vbOKOnly, "Adresse order"
Chemin = Application.GetOpenFilename()                           ' je demande le chemin complet du 'second fichier'
Workbooks.Open Chemin
FichierOuvert = Dir(Chemin)
Workbooks(FichierOuvert).Sheets("feuil1").Range("E1:E500").Copy
ActiveWorkbook.Close
Worksheets("order").Activate
ActiveSheet.Paste Destination:=Sheets("order").Range("B1")

ms à l'arrivée ça marche!

merci
Messages postés
52
Date d'inscription
jeudi 26 juin 2008
Statut
Membre
Dernière intervention
2 octobre 2008

petite erreur...

la feuille "order" correspond à "feuil2" je me suis trompé en recopiant...

désolé