Exportation de données d'un classeur a un autre

Ci joint 2 fichiers exemple de ce que je souhaite faire...

En gros, le fichier ess comporte des données dans des onglets differents mais dans les memes champs, je souhaite faire une boucle sur tous les onglets du classeur ess pour copier les données des differents champs dans un autre classeur nommé Database situé sur un autre chemin que le fichier ess.

Je ne sais pas comment faire pour "peupler" le fichier database en changeant de ligne a chaque fois que l'on change d'onglet ni comment ne pas ecraser les données deja existantes.

Si quelqu'un peut m'eclairer un peu, ca serait apprecié

14database.xlsx (8.42 Ko)
22ess.xlsx (8.63 Ko)

Salut,

Dans le fichier "Database" ci-joint, il y a une macro qui ouvre le fichier "Ess" (même s'il n'est pas placé dans le même dossier que le fichier "database", qui passe en revue toutes ses feuilles et qui en reporte le nom dans la colonne A et les Champs 1, 2 et 3 dans les colonnes B, C et D.

Il faut modifier le chemin dans la macro en fonction de ta configuration. Pour l'instant la ligne Chemin = "C:\Users\Lacy\Documents\" fait référence à l'endroit où j'ai placé le fichier "Ess" sur mon ordinateur. Sais-tu modifier cela ?

Les noms des onglets (les dates) sont reportés tels quels (ce n'est pas vraiment un format "Date"). Est-ce qu'il faut modifier cela ? Si oui, est-il envisageable de modifier le nom de des onglets de ton fichier "Ess" ?

Si tu ne sais pas modifier le nom du "Chemin" tel qu'indiquer ci-dessus, tu peux déjà placer ton fichier "Ess" et le deuxième fichier

ci-joint "Database_Même dossier" et tu devrais ainsi quand même voir le résultat possible.

A te relire.

20database.xlsm (19.61 Ko)

Oui pas de soucis pour adapter les lignes de codes a ma sauce mais la ta proposition va me mettre les memes donnees les unes a la suite des autres a chaque fois que je vais lancer la macro...

Comment controler si la date est deja existante dans les lignes precedentes ? et ne pas copier les donnees si c'est le cas...

Je transformerai le format des dates exotiques avec un replace avant l'import.

Liocor a écrit :

Je ne sais pas comment faire pour "peupler" le fichier database en changeant de ligne a chaque fois que l'on change d'onglet ni comment ne pas ecraser les données deja existantes.

Désolé, j’ai loupé ce passage

Voici un nouveau fichier corrigé selon ta demande. Si une feuille est par exemple effacée dans le fichier «Ess», les données dans le récapitulatif restent en place.

Cordialement.

18database-v2.xlsm (21.03 Ko)

Merci de ton aide, j'ai adapter le code pour moi et j'aimerais pouvoir a present importer des donnees de plusieurs fichiers differents (3 en tout) mais comme les fichiers ont les memes onglets, ca ne copieras pas les lignes avec la meme date...

En gros j'aimerais avoir pour trois fichiers differents 3 lignes avec la meme date mais des donnees dans les colonnes issues des 3 fichiers

Une idee de comment faire ?

Sub populer()

Dim Chemin As String, i As Integer, j As Integer, DerLig As Integer

Application.ScreenUpdating = False

Chemin = "M:\"

Fichier1 = "Rapport Journalier - LAM D - Tests.xlsm"

Fichier2 = "Rapport Journalier - LAM E - Tests.xlsm"

Fichier3 = "Rapport Journalier - LAM F - Tests.xlsm"

For i = 1 To 3

Workbooks.Open Filename:=Chemin & Fichier & i

For j = 3 To Sheets.Count

Sheets(j).Activate

With ThisWorkbook.Sheets(1)

If WorksheetFunction.CountIf(.Range("B2:B1000000"), Sheets(j).Name) > 0 Then GoTo Etiquette

DerLig = .Range("B1000000").End(xlUp).Row + 1

.Range("B" & DerLig) = Sheets(j).Name

.Range("G" & DerLig) = Sheets(j).Range("B2")

.Range("H" & DerLig) = Sheets(j).Range("E7")

.Range("N" & DerLig) = Sheets(j).Range("E16")

.Range("O" & DerLig) = Sheets(j).Range("E16")

.Range("P" & DerLig) = Sheets(j).Range("B7")

.Range("Q" & DerLig) = Sheets(j).Range("B12")

.Range("R" & DerLig) = Sheets(j).Range("B3")

End With

Etiquette:

Next

Windows(Fichier & i).Close

Next

End Sub

Salut,

Ca aurait été plus simple d’expliquer ton problème dans son entièreté dès le départ.

Comment se présentent le dossier dans lequel tu as ces trois fichiers à visiter ? N’y a-t-il que ces trois fichiers ou également d’autres fichiers ? S’il y a d’autres fichiers, ne serait-il pas envisageable de placer les trois fichiers à visiter seuls dans un sous-dossier séparé ? A première vue, ce serait plus simple de boucler sur tous les fichiers d’un dossier ou sous-dossier sans devoir les nommer ni indiquer d’exception plutôt que d’ouvrir 3 fichiers spécifiques. Bien que……On verra selon ta réponse.

Ensuite, sur la feuille récapitulative, ne serait-il pas intéressant d’ajouter une colonne avec le nom du fichier visité, de manière à ce que tu saches quelles données viennent de quel fichier ?

A te relire.

C'est sur mais je trouve que ca fait beaucoup a expliquer et c'est pas forcement clair...et puis j'aime bien aussi adapter les solutions proposées a mes besoins mes des fois je n'y arrive pas vraiment.

Je peux te forwarder mon fichier en MP et tu pourras me donner ton avis sur la meilleure façon de faire.

J'ai effectivement un dossier recapitulatif ou se trouve tous les fichiers de base (machine D,E,F) nomme machine X

Le but est d'avoir un fichier database recapitulatif avec toutes les donnees journalieres pour obtenir les datas et faire ensuite un tableau croise dynamique pour analyser ces donnees.

Je n'ai pas le fichier presentement mais je pourrais te le faire parvenir plus tard.

Bonjour,

La macro du fichier ci-joint passe en revue tous les fichiers d'un dossier défini dans le code et en reporte les données identiquement au précédent fichier avec en plus le nom du fichier concerné dans la colonne E (me suis-je compris )

Est-ce que ça te permet d'avancer ?

Cordialement.

24database-v3.xlsm (20.30 Ko)

Je t'ai envoyé en MP les fichiers, j'ai hate de savoir si on peux faire de quoi avec cette demande

Merci beaucoup de ton aide en tous les cas.

Salut,

Liocor a écrit :

Bonjour yvouille,

Ci-joint les fichiers que je cherche a traiter correctement...

J'aurais 3 fichiers nommés [...] LAM D / E / F dans un repertoire, les données a importer sont toujours a la meme place mais dans une cellule différente pour les equipes de jour et de nuit, un onglet par date.

Le fichier database est peuplé a la main pour l'exemple. Je pourrais faire un tri par date des données une fois l'importation effectuée.

Ce que je ne veux pas c'est etre oblige de reimporter a chaque fois toutes les données quand j'ai une nouvelle date sur le fichier original mais seulement les nouvelles.

Merci de ton aide !

Merci de rester sur le Forum pour continuer la discussion ou est-ce tu es passé en message privé parce que tes fichiers ne peuvent absolument pas être mis en ligne ?

Tu te répètes un peu dans tes explications. Je t'ai assez bien compris depuis le début, mais tu m'envoies des fichiers qui évoluent au fur et à mesure qu'on avance Si tu avais fourni tout de suite tes fichiers réels, on aurait gagner pas mal de temps.

Dans ton exemple "Rapport Journalier LAM D", tu as des feuilles qui ne comportent pas de date dans leur nom ; je présume qu'il faut les ignorer. Une modification du code sera nécessaire à cause de cela. Afin de ne traiter que les feuilles comportant des dates dans leur nom, est-il possible de faire une comparaison entre la cellule B1 de la feuille et le nom inscrit dans l'onglet et considérer que la feuille ne doit être traitée que si ces deux données concordent ?

Ensuite, pourquoi n'as-tu pas de dates à un format de date dans cette cellule B1 et dans le nom de l'onglet ? Si tu veux que la date soit reportée au format inscrit dans la colonne B du fichier Database Lam, il faudra soit la transformé par macro, ce qui risque d'être un peu compliqué, soit modifier tes fichiers. Qu'en penses-tu ?

Cordialement.

Rechercher des sujets similaires à "exportation donnees classeur"