Macro copier coller d'un fichier choisi au fichier actif

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

kémitia

XLDnaute Nouveau
Bonjour à tous,

Je planche depuis 3 jours sur une macro qui me permettrait de copier coller des données,
avec:
- comme fichier de départ: un fichier que j'aurai sélectionné via une message box
- comme fichier de destination, le fichier actif (celui-sur lequel j'aurai lancé la macro).

Après de nombreuses tentatives, je me suis arrêté au code ci-dessous, qui pour moi, devrait se rapprocher le plus de la macro qui devrait me permettre de réaliser ce petit miracle. Mais évidemment, ça ne fonctionne pas!!!

Sub Macro_copier_coller()
Dim QuelFichier
QuelFichier = Application.GetOpenFilename(, , "Sélectionnez votre source de données (Estimé N-2)")
MsgBox QuelFichier
ActiveWorkbook = QuelFichier
Worksheets("ODT-160").Select
Cells.Select
Selection.Copy
ThisWorkbook.Activate
Worksheets("ODT-160").Select
Cells.Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False

Merci d'avance à tous pour votre aide.
 
Re : Macro copier coller d'un fichier choisi au fichier actif

bonjour à tous
à tester moi je m'en vais me coucher
Sub Macro_copier_coller()
Dim QuelFichier
QuelFichier = Application.GetOpenFilename(, , "Sélectionnez votre source de données (Estimé N-2)")
MsgBox QuelFichier
ActiveWorkbook = QuelFichier
Worksheets("ODT-160").Cells.Copy ThisWorkbook.Worksheets("ODT-160").Range("a1")
End Sub
a+
 
Re : Macro copier coller d'un fichier choisi au fichier actif

Bonjour a tous

cela ira mieux comme cela

Sub Macro_copier_coller()
Dim QuelFichier, Filtre$
Filtre = "Fchiers Excel (*.xlsx;*.xlsm;*.xls),*.xlsx;*.xlsm;*.xls"
QuelFichier = Application.GetOpenFilename(Filtre, 1, "Sélectionnez votre source de données (Estimé N-2)")
MsgBox QuelFichier
Workbooks.Open (QuelFichier)
Worksheets("ODT-160").Cells.Copy ThisWorkbook.Worksheets("ODT-160").Range("a1")
End Sub
a+
 
Dernière édition:
Re : Macro copier coller d'un fichier choisi au fichier actif

Bonjour,
Code:
 Dim QuelFichier
  QuelFichier = Application.GetOpenFilename(, , "Sélectionnez votre source de données (Estimé N-2)")
  MsgBox QuelFichier
Pour l'instant, tu n'as rien fait d'autre que de sélectionner le fichier
Maintenant, avant de copier, il faudrait peut-être l'ouvrir non ?!
Code:
Dim QuelFichier, wb As Workbook
QuelFichier = Application.GetOpenFilename("Feuille de calcul (*.xls), *.xls", , _
    "Sélectionnez votre source de données (Estimé N-2)")
If QuelFichier = False Then Exit Sub
Set wb = Workbooks.Open(QuelFichier)
With wb
    .Sheets("ODT-160").Cells.Copy ThisWorkbook.Sheets("ODT-160").Range("A1")
    .Close False
End With
A+
kjin
 
Re : Macro copier coller d'un fichier choisi au fichier actif

@jpb388: J'ai testé le nouveau code et il bugg au niveau de la ligne ci dessous:


Worksheets("ODT-160").Cells.Copy ThisWorkbook.Worksheets("ODT-160").Range("a1")

Mais le truc c'est que je me demande si je n'ai pas un souci avec mon classeur perso[/I] qui bloquerait les macros. Je m'explique. Depuis 2 jours, je ne sais absoluement pas pourquoi, je n'arrive pas à utliser la commande "sheets" dans mon classeur perso.
Exemple cette simple commande fonctionnait très bien avant.
sheets("Feuil2").Select
Maintenant je suis obligé d'écrire
Worksheets("Feuil2").Select sinon c'est le bugg.

@kjin. Salut kjin. oui je n'avais pas mis l'instruction d'ouvrir le classeur dans la macro volontairement car je travaille toujours avec les 2 fichiers ouverts. Et je voulais évité par ailleurs que ça bugg si ledit fichier était fermé. 🙂
 
Re : Macro copier coller d'un fichier choisi au fichier actif

Au risque d'insister 🙄, essaye d'activer ton workbook avant ta méthode:

Code:
Sub Macro_copier_coller()
Dim QuelFichier, Filtre$
Filtre = "Fchiers Excel (*.xlsx;*.xlsm;*.xls),*.xlsx;*.xlsm;*.xls"
QuelFichier = Application.GetOpenFilename(Filtre, 1, "Sélectionnez votre source de données (Estimé N-2)")
MsgBox QuelFichier
Workbooks.Open (QuelFichier)
Workbooks(Quelfichier).activate
Code:
Worksheets("ODT-160").Cells.Copy ThisWorkbook.Worksheets("ODT-160").Range("a1")
End Sub


Au plaisir de vous lire,


VB_T
 
Dernière édition:
Re : Macro copier coller d'un fichier choisi au fichier actif

re
je pense plutôt a une confusion des classeurs
essayes cela
Sub Macro_copier_coller()
Dim QuelFichier, Filtre$, Source$
Source = ThisWorkbook.Name
Filtre = "Fchiers Excel (*.xlsx;*.xlsm;*.xls),*.xlsx;*.xlsm;*.xls"
QuelFichier = Application.GetOpenFilename(Filtre, 1, "Sélectionnez votre source de données (Estimé N-2)")
MsgBox QuelFichier
Workbooks.Open (QuelFichier)
Workbooks(QuelFichier).Worksheets("ODT-160").Cells.Copy Workbooks(Source).Worksheets("ODT-160").Range("a1")
End Sub
 
Re : Macro copier coller d'un fichier choisi au fichier actif

Bonjour,
@kjin. Salut kjin. oui je n'avais pas mis l'instruction d'ouvrir le classeur dans la macro volontairement car je travaille toujours avec les 2 fichiers ouverts. Et je voulais évité par ailleurs que ça bugg si ledit fichier était fermé.
Alors pourquoi chercher à ouvrir un fichier déjà ouvert, il suffit juste de tester qu'il l'est bien, encore faut-il que tu connaisses son nom !!!
Je vais aller faire la sieste, c'est préférable....à moins que tu ne te décides à expliquer clairement ton pb
A+
kjin
 
Re : Macro copier coller d'un fichier choisi au fichier actif

Désolée !!!!!!!!!!!! Verba_Team j'avais oublié de te répondre mais j'ai testé . Et excel n'aime pas.

A la ligne Worbooks(Quelfichier).activate, il me met "erreur de compilation: sub ou fonction non défini".
 
Re : Macro copier coller d'un fichier choisi au fichier actif

kjn, tu as raison ce n'est pas très clair. Bonne sieste si tu siestes déjà 🙂

Au fait, ce que je voulais faire à la base, c'était mettre le nom et le chemin du classeur source( dont le nom change tout le temps) dans une cellule de mon classeur actif (cellule A1 de la feuille 1 par exemple).
J'aurai pu ainsi dire à ma macro , récupère moi les données à copier du fichier inscrit en A1 de la feuille 1 du classer actif...(l'équivalent de la fonction indirect d'excel quoi). Malheureusement je n'ai pas trouvé comment faire sur les différents forum.

Je me suis donc résignée à aller récupérer le nom du classeur manuellement grâce à la fonction getoppen.filename.

Mais le but premier n'était pas d'ouvrir le classeur qui est déjà ouvert à la base.... voili voilou. tu sais tout. Si tu as des idées suis preneuse...
 
Re : Macro copier coller d'un fichier choisi au fichier actif

re
mais oui flyonets44 a raison j'avais complètement oublié

Sub Macro_copier_coller()
Dim QuelFichier, Filtre$, Source$,DerLigne as long
Source = ThisWorkbook.Name
Filtre = "Fchiers Excel (*.xlsx;*.xlsm;*.xls),*.xlsx;*.xlsm;*.xls"
QuelFichier = Application.GetOpenFilename(Filtre, 1, "Sélectionnez votre source de données (Estimé N-2)")
MsgBox QuelFichier
Workbooks.Open (QuelFichier)
DerLigne = Workbooks(QuelFichier).Worksheets("ODT-160").Range("A" & Rows.Count).End(xlUp).Row
Workbooks(QuelFichier).Worksheets("ODT-160").range("a1:b" & derligne).Copy Workbooks(Source).Worksheets("ODT-160").Range("a1")
End Sub

le b en gras est à remplacer par la colonne que tu veux pareil pour déterminer la dernière ligne
a+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
18
Affichages
427
Réponses
10
Affichages
656
Réponses
2
Affichages
346
Réponses
17
Affichages
1 K
Retour