Rassembler plusieurs fichiers Excel sur une même feuille

Bonsoir à tous,

Je souhaiterais rassembler plusieurs fichiers excel sur une même feuille qui sera formatée d'une manière que celle d'ou provienne les cellules.

Je m'explique, je dispose de plusieurs fichiers excel qui porte comme nom "export_fiches_operations_" & Format(Date, "yyyymmdd") & "_" & Fichier, la variable "Fichier" étant un nombre, défini par une "box" qui demande le numéro de celui-ci et je souhaiterais que les données de ces fichiers soit collées sur une seule et même feuille.

J'ai, pour le moment, fait un bout de code ou excel me demande le numéro de fichier à traiter, l'ouvre, formate les données de la manière dont je le souhaite sur un nouvel onglet "Formatage" de ce même fichier et colle ces dernières sur l'onglet du fichier "Deal Tracker" souhaité.

Cependant, je n'arrive pas à coller les données du fichier suivant à la suite des autres cellules.

De plus, il faudrait que j'arrive à mettre en place une boucle pour que la macro tourne autant de fois que le nombre de fichier à traiter.

Le bout de code :

Sub MacroFichier()

'Identification

Dim Chemin As String

Dim Fichier As Long

Dim Row As Long

Dim cel As Range

'Demande à l'utilisateur le numéro du fichier à traiter

Fichier = InputBox("Entrer le numéro du fichier à traiter", "FICHIER")

If Fichier = False Then Exit Sub

'Ouverture du fichier

Chemin = "C:\Users\Documents\Deal Tracker\Fichiers\export_fiches_operations_" & Format(Date, "yyyymmdd") & "_" & Fichier

Workbooks.Open Filename:=Chemin

'Création d'un nouvel onglet pour formatage des données

ActiveSheet.Name = "Feuille1"

Sheets.Add After:=Sheets("Feuille1")

ActiveSheet.Name = "Formatage"

'Formatage des données du fichier

Sheets("Feuille1").Range("L:L").Copy

Sheets("Formatage").Range("A1").PasteSpecial

Sheets("Feuille1").Range("F:H").Copy

Sheets("Formatage").Range("B1").PasteSpecial

Sheets("Feuille1").Range("AG:AG").Copy

Sheets("Formatage").Range("E1").PasteSpecial

Sheets("Feuille1").Select

Range("K:K,Q:Q,V:W").Select

Selection.Copy

Sheets("Formatage").Range("F1").PasteSpecial

Sheets("Feuille1").Range("AI:AI,AV:AV,BJ:BJ").Select

Selection.Copy

Sheets("Formatage").Range("J1").PasteSpecial

'Selection des données

Sheets("Formatage").Select

Range("A1").Select

Range(Selection, Selection.End(xlToRight)).Select

Range(Selection, Selection.End(xlDown)).Select

Selection.Copy

'Coller les données sur l'onglet récapitulatif

Windows("Deal Tracker.xlsm").Activate

derlig = Range("A" & Rows.Count).End(x1Up).Row + 1

ActiveSheet.cel.EntireRow.Copy.Range ("A" & derlig)

End Sub

J'espère avoir été à peu près clair dans mes explications...

Merci par avance pour votre aide,

fval

Bonjour

Tu as 2016 donc compile avec PowerQuery intégré plutôt qu'en VBA (que tu ne maîtrises pas)

Bonjour @78chris,

Merci pour ton renvoi vers PowerQuery (que je viens d'utiliser) mais cela reste bien plus long qu'une macro VBA. C'est pour cela que j'aimerais bien avoir des conseils de personnes expérimentées pour m'aider à créer cette macro.

De plus, après création de cette première macro, j'aimerais en créer une deuxième qui viendrait comparer certaines valeurs du premier fichier à un deuxième fichier et m'indiquer si ces dernières sont similaires ou non. Cette macro VBA me permettrait de gagner un temps très important.

Merci par avance pour ton (ou votre) aide,

bonjour à vous

comme Chris

si tu trouves que PQuery n'est pas rapide, c'est que tu ne l'as pas "utilisé", tu l'as programmé. Car il suffit de cliquer "actualiser"

note : utiliser VBA pour comparer des données, c'est imiter ton doigt quand il suivait des lignes sur 2 papiers pour que tu puisses les comparer, comme en 1970.

en informatique, il y a mieux.

joins un fichier de 2 onglets de 3 colonnes et 8 lignes et le résultat attendu

amitiés

Bonjour jmd,

Pour essayer d’expliquer plus clairement ce que je souhaiterais faire :

  • Je dispose d’un fichier (deal tracker) sur lequel je souhaiterais lancer ma macro qui ira chercher dans un fichier (sous dropbox) des extractions csv (fichier 1 et fichier 2) et qui les combinera sur un nouvel onglet (du fichier deal tracker) qui sera nommé : « mm_yyyy ».
  • Le nombre de fichier d’extractions est incertain (il peut-être de 3 parfois, comme de 5 ou plus), c’est pour cela que j’avais commencé la macro avec une msgbox pour que je puisse gérer les fichiers à traiter un par un.
  • Ces extractions contenant beaucoup de colonnes (dont certaines inutiles) j’aimerais les formater d’une certaine manière. Ex : la colonne L des extractions devient la première colonne sur le nouvel onglet, suivie par la colonne F, … (cf. fichier deal tracker)

Une fois cette première action effectuée :

- Je souhaiterais comparer les valeurs de trois cellules du nouvel onglet (H, I, J) au fichier (données recensées), pour savoir si la personne est recensée dans notre base de données et si ce n’est pas le cas l’intégrer. En conséquence, il faudrait que la colonne K du fichier deal tracker affiche si les personnes en colonnes (H, I ou J) sont répertoriées.

Je n’ai certainement pas la bonne méthode de programmation et comme tu dis il y a certainement mieux en informatique, c’est pour cela que je suis ouvert à toute proposition.

Merci à vous deux,

PS: les fichiers contiennent beaucoup plus de lignes normalement mais je les ai réduis pour qu'ils ne soient pas trop lourds.

PS2: l'onglet sur le fichier deal tracker est déjà créé pour que vous puissiez voir le résultat voulu mais il devrait être créé par la macro.

6deal-tracker.xlsm (13.46 Ko)
6fichier1.csv (5.07 Ko)
4fichier2.csv (3.57 Ko)

RE

Je confirme que c'est faisable dans PQ en traitant l'ensemble des csv d'un dossier par exemple

- Je souhaiterais comparer les valeurs de trois cellules du nouvel onglet (H, I, J) au fichier (données recensées), pour savoir si la personne est recensée dans notre base de données et si ce n’est pas le cas l’intégrer. En conséquence, il faudrait que la colonne K du fichier deal tracker affiche si les personnes en colonnes (H, I ou J) sont répertoriées.

Tu as plusieurs personnes liste dans une même cellule. Certaines peuvent être dans la BD, d'autres non

Qu'est supposée dans ce cas contenir la dernière colonne ?

Salut 78chris,

Très bien, je vais essayer d'apprendre "d'utiliser PQ et non le programmer" s'il peut m'apporter le résultat recherché.

En effet, je peux avoir plusieurs entreprises voir même plusieurs personnes dans une même cellule que j'aurais aimé comparer à la BD. La dernière colonne devrait donc contenir un "existant" (OK) ou "n'existe pas" (A créer), quelque chose dans cette idée. Puis-je aussi le faire avec PQ?

Merci à toi,

Re

...La dernière colonne devrait donc contenir un "existant" (OK) ou "n'existe pas" (A créer), quelque chose dans cette idée. Puis-je aussi le faire avec PQ?

Oui faisable sans PB, mais si tu as un ou des existants et un ou des non existants sur une même ligne, on fait quoi ?

Semaine chargée. Je repasse ce soir...

Salut 78chris,

Excuse moi pour le délai de réponse, j’étais un peu sous l’eau ces derniers jours.

Ta question est très juste puisque c’est ce que je me demandais sans avoir vraiment de réponse. L’idéal serait de scinder la ligne en deux si existance de deux entreprises dans la même cellule pour pouvoir insérer le résultat (OK; A créer) dans la dernière colonne.

Aurais tu une meilleure idée? Et est ce faisable sous PQ?

Rechercher des sujets similaires à "rassembler fichiers meme feuille"