Rassembler plusieurs fichiers excel sur une même feuille

Forum pour toutes vos questions à propos d'Excel (avec ou sans macros) ...
fval
Nouveau venu
Nouveau venu
Messages : 5
Inscrit le : 12 novembre 2018
Version d'Excel : 2016 FR

Message par fval » 12 novembre 2018, 18:53

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
Avatar du membre
78chris
Membre impliqué
Membre impliqué
Messages : 2821
Appréciations reçues : 159
Inscrit le : 9 juillet 2017
Version d'Excel : 2010 à 2019

Message par 78chris » 12 novembre 2018, 19:16

Bonjour

Tu as 2016 donc compile avec PowerQuery intégré plutôt qu'en VBA (que tu ne maîtrises pas)
Chris
Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.
Confucius
fval
Nouveau venu
Nouveau venu
Messages : 5
Inscrit le : 12 novembre 2018
Version d'Excel : 2016 FR

Message par fval » 13 novembre 2018, 10:40

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,
jmd
Passionné d'Excel
Passionné d'Excel
Messages : 9259
Appréciations reçues : 146
Inscrit le : 8 décembre 2007
Version d'Excel : 365 + PowerBI

Message par jmd » 13 novembre 2018, 11:17

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
Avant de penser VBA, voir les fonctions d'Excel.
Exemple "Mettre sous forme de tableau", TCD, "Récupérer des données". Power BI Desktop gratuit :)
Apprendre les fonctionnalités "récentes".
fval
Nouveau venu
Nouveau venu
Messages : 5
Inscrit le : 12 novembre 2018
Version d'Excel : 2016 FR

Message par fval » 13 novembre 2018, 15:15

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.
Fichiers joints
fichier2.csv
(3.57 Kio) Téléchargé 3 fois
fichier1.csv
(5.07 Kio) Téléchargé 4 fois
Données recensées.xlsx
(10.11 Kio) Téléchargé 3 fois
Deal Tracker.xlsm
(13.46 Kio) Téléchargé 4 fois
Avatar du membre
78chris
Membre impliqué
Membre impliqué
Messages : 2821
Appréciations reçues : 159
Inscrit le : 9 juillet 2017
Version d'Excel : 2010 à 2019

Message par 78chris » 13 novembre 2018, 22:30

RE
Je confirme que c'est faisable dans PQ en traitant l'ensemble des csv d'un dossier par exemple
fval a écrit :
13 novembre 2018, 15:15
- 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 ?
Chris
Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.
Confucius
fval
Nouveau venu
Nouveau venu
Messages : 5
Inscrit le : 12 novembre 2018
Version d'Excel : 2016 FR

Message par fval » 14 novembre 2018, 11:22

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,
Avatar du membre
78chris
Membre impliqué
Membre impliqué
Messages : 2821
Appréciations reçues : 159
Inscrit le : 9 juillet 2017
Version d'Excel : 2010 à 2019

Message par 78chris » 14 novembre 2018, 13:51

Re
fval a écrit :
14 novembre 2018, 11:22
...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...
Chris
Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.
Confucius
fval
Nouveau venu
Nouveau venu
Messages : 5
Inscrit le : 12 novembre 2018
Version d'Excel : 2016 FR

Message par fval » 16 novembre 2018, 11:24

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?
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message