Copie de données de fichiers avec un nom variable

Bonjour,

Etant ultra débutant en VBA, je me retrouve en difficulté pour effectuer un travail de fusion d’informations contenus dans plusieurs fichier Excel dans un fichier unique.

Voici ce que j’aimerais faire :

J’ai 3 fichiers (dans l’exemple je me limite à 3 fichiers) :

  • 2015_A : Fichier de données 1
  • 2015_B : Fichier de données 2
  • Fichier Fusion : Fichier de destination des deux autres fichiers

J’aimerais créer une macro dans le fichier Fusion qui vienne chercher le nom du fichier de données 1, l’ouvre, copie les données et le referme. Puis la macro fait la même chose pour le fichier de données 2.

Exemple :

- Dans le Fichier 2015_A, Copie de la cellule A2 « Chien » dans le fichier Fusion en cellule « B2 » :

Fichier de données 1

Donnée 1 Donnée 2

Chien Chat

Fichier Fusion :

Nom fichier donnée à copier 1 donnée à copier 2

2015_A Chien Chat

2015_B Vache Cochon

Je vous joint les 3 fichiers pour illustrer ma demande.

Vous remerciant par avance pour votre aide pour créer cette macro.

Liens :

http://www.fichier-xls.fr/2015/09/16/2015-a/

http://www.fichier-xls.fr/2015/09/16/2015-b/

http://www.fichier-xls.fr/2015/09/16/fichier-fusion/

bonjour

sujet récurrent je te propose d'aller voir un code que j'ai déjà fait pour un autre membre. le prinicpe c'est de mettre tous les fichiers que tu veux fusionner dans un dossier et la macro passe en revus tous les fichiers du dossier sans se soucier du nom

https://forum.excel-pratique.com/excel/fusion-de-plusieurs-fichiers-excel-t64222.html

et de telecharger le fichier natou.xlsm

et d'adapter les cellules a copiées dans la fonction :

Sub lire_donnees(nom_fichier_source As String, chemin As String, fichier_a_ouvrir As String, lig As Integer)
Workbooks.Open (chemin & "\" & fichier_a_ouvrir)           ' ouverture du fichier
    Sheets(1).Range("B5:B7,B9:B12,B14,B17:B20,B23:B27,B29,B32:B34").Copy
    Workbooks(nom_fichier_source).Sheets(1).Range("A" & lig).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=True
ActiveWorkbook.Close (False)
End Sub

fred

Bonjour Fred,

Merci pour ton retour rapide sur ma question. La formule fonctionne à merveille sur mes fichiers !

Cependant, je n'arrive pas à tout copier. En effet, dans le fichier "natou", les données sont copiées toujours depuis la même colonne (colonne B). Cependant, dans mes fichiers, je dois récupérer des données de plusieurs colonnes différentes.

Du coup j'ai modifié le code en conséquence :

Sub lire_donnees(nom_fichier_source As String, chemin As String, fichier_a_ouvrir As String, lig As Integer)

Workbooks.Open (chemin & "\" & fichier_a_ouvrir) ' ouverture du fichier

Sheets(1).Range("D4:D8,C53:C54,D53:D54").Copy

Workbooks(nom_fichier_source).Sheets(1).Range("A" & lig).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

:=False, Transpose:=True

ActiveWorkbook.Close (False)

End Sub

J'ai un message d'erreur sur cette ligne. Je pense que c'est parce qu'il ne s'agit pas de la même colonne. Comment puis-je dans ce cas débugguer la macro?

Merci !

Bonjour

en effet ce qui pose problème c'est que tu as deux colonnes différentes

donc il faut le faire en deux fois ou trois fois suivant dans quel ordre tu as besoin de tes données d'arrivée

Sheets(1).Range("D4:D8,D53:D54").Copy
    Workbooks(nom_fichier_source).Sheets(1).Range("A" & lig).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=True

    Sheets(1).Range("C53:C54").Copy
        Workbooks(nom_fichier_source).Sheets(1).Range("H" & lig).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=True

fred

Merci pour ton retour, ça fonctionne à merveille !

Bonjour

Dans ce as

Merci

Fred

Rechercher des sujets similaires à "copie donnees fichiers nom variable"