Recopier des données d'un fichier d'un autre répertoire

Y compris Power BI, Power Query et toute autre question en lien avec Excel
Répondre
D
Dadams51
Membre habitué
Membre habitué
Messages : 117
Appréciation reçue : 1
Inscrit le : 10 avril 2016
Version d'Excel : 2016 FR

Message par Dadams51 » 28 mars 2020, 19:50

Bonjour,

Je souhaite recopier des données du Fichier2 qui est dans le répertoire D:\Excel\Mes-programmes dans le Fichier1 qui est sur mon bureau.

Voir ci-joint les 2 Fichiers, et le code qui ne fonctionne pas :
Workbooks("D:\Excel\Mes-programmes\Fichier2.xlsm").Worksheets(1).Cells(i, 1).Value
Pouvez-vous m'aider ?

Merci d'avance !

Dadams
Fichier2.xlsm
(8.66 Kio) Téléchargé 9 fois
Fichier1.xlsm
(17.46 Kio) Téléchargé 10 fois
Avatar du membre
Yvouille
Passionné d'Excel
Passionné d'Excel
Messages : 9'126
Appréciations reçues : 90
Inscrit le : 6 avril 2007
Version d'Excel : 2016

Message par Yvouille » 29 mars 2020, 09:00

Salut,

En admettant que tes deux fichiers soient placés dans le même dossier, tu peux utiliser ce code :
Sub essai()
Dim i As Double

Application.ScreenUpdating = False

Workbooks.Open Filename:=ThisWorkbook.Path & "\" & "Fichier2.xlsm"

For i = 1 To 20
    
    ThisWorkbook.Worksheets("Feuil1").Cells(i, 1) = ActiveWorkbook.Worksheets("Feuil1").Cells(i, 1)
    
Next

ActiveWorkbook.Close

End Sub
En l’état, le Fichier2 peut être fermé ou ouvert au lancement de la macro, mais il sera toujours refermé à la fin.

Je n'ai pas compris pourquoi ton code ne fonctionne pas.

Je n'ai pas compris non plus pourquoi passer chaque ligne en revue plutôt que de copier toutes les données en un bloc, mais je présume qu'il s'agit plus d'un essai que d'autre chose.

Cordialement.
Fichier1_V1.xlsm
(19.41 Kio) Téléchargé 4 fois
Yvouille

Valais de Coeur
D
Dadams51
Membre habitué
Membre habitué
Messages : 117
Appréciation reçue : 1
Inscrit le : 10 avril 2016
Version d'Excel : 2016 FR

Message par Dadams51 » 29 mars 2020, 09:30

Bonjour Yvouille,

Oui, il s'agit juste d'un petit essai pour illustre mon problème.
Mais justement les 2 fichiers ne peuvent pas être dans le même répertoire, c'est bien là le problème…
Et je voudrais éviter de le copier / coller dans le même répertoire, car dans l'application finale, ça fait beaucoup de fichier...

En tout cas merci quand même ::D

Dadams
Avatar du membre
Yvouille
Passionné d'Excel
Passionné d'Excel
Messages : 9'126
Appréciations reçues : 90
Inscrit le : 6 avril 2007
Version d'Excel : 2016

Message par Yvouille » 29 mars 2020, 10:14

Dadams51 a écrit :
29 mars 2020, 09:30
Mais justement les 2 fichiers ne peuvent pas être dans le même répertoire, c'est bien là le problème…
Alors il faut modifier cette ligne en conséquence :
Workbooks.Open Filename:=ThisWorkbook.Path & "\" & "Fichier2.xlsm"
Probablement
Workbooks.Open Filename:="D:\Excel\Mes-programmes\Fichier2.xlsm"
Bon dimanche
Yvouille

Valais de Coeur
D
Dadams51
Membre habitué
Membre habitué
Messages : 117
Appréciation reçue : 1
Inscrit le : 10 avril 2016
Version d'Excel : 2016 FR

Message par Dadams51 » 30 mars 2020, 18:07

Bonjour à tous,

Je veux reformuler ma question.
Je souhaite recopier des données du Fichier2 qui est dans le répertoire D:\Excel\Mes-programmes vers le Fichier1 qui est sur mon bureau. Ces 2 fichiers ne peuvent pas être dans le même répertoire
Et ces 2 fichiers sont déjà ouverts au lancement de la macro, cliquer sur le bouton "lancer la macro" du Fichier1.
Et ces fichiers restent ouverts après exécution de la macro.

Je pensais que le code simple ci-dessous fonctionnerais, mais ce n'est pas le cas :
Workbooks("Fichier1.xlsm").Worksheets(1).Cells(i, 1).Value = 
Workbooks("D:\Excel\Mes-programmes\Fichier2.xlsm").Worksheets(1).Cells(i, 1).Value
C'est l'expression de l'emplacement du Fichier2 qui pose problème et que je ne sais pas comment coder.

Cet exemple est juste pour pouvoir recopier 10 données d'un fichier situé dans un autre répertoire.
Ci-joint les fichiers.
Fichier1.xlsm
(17.65 Kio) Téléchargé 1 fois
Fichier2.xlsm
(8.66 Kio) Téléchargé 3 fois
En attente de votre aide.

Salutations,

Dadams
Avatar du membre
Yvouille
Passionné d'Excel
Passionné d'Excel
Messages : 9'126
Appréciations reçues : 90
Inscrit le : 6 avril 2007
Version d'Excel : 2016

Message par Yvouille » 30 mars 2020, 18:21

Salut,

MERCI à toi d'avoir posé la question :bof:

Pour connaitre l'adresse d'un fichier, tu peux effectuer un clic-droit dessus et choisir "Propriétés".

J'ai placé un ficher sur mon bureau et j'y ai chercher l'adresse de l'EMPLACEMENT selon l'image ci-dessous :
Capture.PNG
Capture.PNG (21.57 Kio) Vu 78 fois
Tu peux copier cette adresse et l'utiliser pour adapter ta macro (en remplacement de l'adresse que j'avais pensé te proposer). Le même code est utilisable que le fichier soit déjà ouvert ou non.

Mais sinon, ma macro répond exactement à ta demande :)

Pour empêcher que le fichier ne se referme, neutralise la ligne ActiveWorkbook.Close

Ca t'aide ? Sinon je veux bien encore tenter de t'aider.
Yvouille

Valais de Coeur
D
Dadams51
Membre habitué
Membre habitué
Messages : 117
Appréciation reçue : 1
Inscrit le : 10 avril 2016
Version d'Excel : 2016 FR

Message par Dadams51 » 5 avril 2020, 17:20

Bonjour Yvouille,

Effectivement ça fonctionne.
Mais j'ai trouvé encore plus simple : quand les 2 fichiers sont ouverts, ce n'est pas la peine d'indiquer le chemin, Excel le trouve tout seul !
Voir le code ci-dessous qui fonctionne :
Workbooks("Fichier1.xlsm").Worksheets(1).Cells(i, 1).Value = Workbooks("Fichier2.xlsm").Worksheets(1).Cells(i, 1)
Encore Merci et à une prochaine !

Dadams
Répondre
  • Sujets similaires
    Réponses
    Vues
    Dernier message