Importer plusieurs classeurs d'un même dossier et coller les données dans une feuille

robby98800

XLDnaute Nouveau
Bonjour,
J’ai un problème que je n’arrive pas à résoudre à l’aide d’ancien post et je n’ai pas les outils nécessaire pour le faire tout seul.
Je vous explique mon problème, je cherche à importer plusieurs classeurs qui sont compris dans le même dossier. L’idéal serait de choisir le dossier en dynamique avec un fenêtre Ouvrir.
Le nom de chaque classeur est différent par contre à l’intérieur les données sont rangées de la même manière. Il faut surement faire une boucle pour récupérer tous les classeurs dans le dossier.

Les classeurs a importé sont en .csv mais les données ne sont pas séparées par un séparateur justement ! En gros ils sont ouvert par Excel pour reste en .csv. Quand j’ouvre un fichier avec Application.Dialogs(xlDialogOpen).Show ça ne marche pas. Je ne sais pas trop comment faire, c’est du csv mais pas vraiment…:confused:

Si cela n’est pas possible au pire c’est pas grave je le convertirai manuellement avant de faire l’importation.
Voici la macro qui me permet d’importer un classeur en xlsx (ensuite je prend une certaines plage et juste les cellules qui répondent à une condition mais ça je me débrouillerai pour le faire tout seul)

Code:
Sub Importer()
Dim ladate As Date, Plage As Range

derli = Sheets("releve_erreur").Range("A" & Rows.Count).End(xlUp).Row 'definit la derniere ligne de la colonne A
ladate = DateAdd("d", -7, Date)

Set Destination = ActiveWorkbook
 
Source = Application.Dialogs(xlDialogOpen).Show 'permet de choisir un dossier dans une fenêtre ouvrir
    If Source = False Then
        MsgBox ("Aucun fichier sélectionné")
            Exit Sub
    Else
        Set Source = ActiveWorkbook

Source.Activate
Sheets(1).Select
           
        For i = 2 To Sheets(1).Range("A" & Rows.Count).End(xlUp).Row
            If Sheets(1).Range("A" & i).Value >= ladate Then
                If Plage Is Nothing Then
                    Set Plage = Sheets(1).Range("A" & i & ":" & "E" & i)
                Else
                    Set Plage = Union(Plage, Sheets(1).Range("A" & i & ":" & "E" & i))
                End If
            End If
        Next
  
Destination.Activate
Sheets("releve_erreur").Range("A2:E" & derli).ClearContents
Plage.Copy Destination:=Sheets(2).Range("A2")

Source.Activate
Application.CutCopyMode = False
ActiveWindow.Close SaveChanges:=False
        
    End If
 
End Sub

Merci beaucoup de votre aide !
 

Yaloo

XLDnaute Barbatruc
Re : Importer plusieurs classeurs d'un même dossier et coller les données dans une fe

Bonjour robby,

Si tu pouvais mettre ton fichier Destination et un fichier Source de façon à pouvoir d'aider au mieux.

A te relire

Martial
 

robby98800

XLDnaute Nouveau
Re : Importer plusieurs classeurs d'un même dossier et coller les données dans une fe

Voilà je joint le classeur source qui est un classeur parmis tous les autres contenus dans le même dossier.
Le classeur destination doit être rempli là où j'ai colorié les cellules en orange. Les colonnes Date_heure et Position sont ensuite remplies automatiquement avec des formules.

J'espère que ça sera possible :)

PS: j'ai effacé pas mal de ligne dans le fichier source pour pouvoir l'envoyer, il en compte normalement plusieurs milliers.
 

Pièces jointes

  • destination.xlsx
    11.7 KB · Affichages: 51
  • Source.zip
    1.6 KB · Affichages: 35
  • destination.xlsx
    11.7 KB · Affichages: 54
  • Source.zip
    1.6 KB · Affichages: 28
  • destination.xlsx
    11.7 KB · Affichages: 59
  • Source.zip
    1.6 KB · Affichages: 33

Yaloo

XLDnaute Barbatruc
Re : Importer plusieurs classeurs d'un même dossier et coller les données dans une fe

Bonjour robby, tout le monde,

Vois avec le fichier ci-dessous.

A te relire

Martial
 

Pièces jointes

  • destination.xlsm
    647.6 KB · Affichages: 71
  • destination.xlsm
    647.6 KB · Affichages: 75
  • destination.xlsm
    647.6 KB · Affichages: 118

robby98800

XLDnaute Nouveau
Re : Importer plusieurs classeurs d'un même dossier et coller les données dans une fe

Bonjour Yaloo,

Merci d'avoir répondu, le code à l'air bien construit mais je ne peux pas le tester car quand la fenêtre ouvrir s'ouvre les fichiers en .csv ne s'affichent pas.
Cela vient je pense de Application.Dialogs(xlDialogOpen).Show qui ne montre que les fichiers en xls ou xlsx, il me semble.

Peut être qu'il faudrait utiliser Application.GetOpenFilename("Fichiers Donnees (*.csv), *.csv").
Je vais essayer de faire des modif pour que les fichier csv s'affichent
 

Yaloo

XLDnaute Barbatruc
Re : Importer plusieurs classeurs d'un même dossier et coller les données dans une fe

Bonsoir robby,

Il faut mettre "Tous les fichiers" :

Tous les fichiers.jpg

A+
 

Yaloo

XLDnaute Barbatruc
Re : Importer plusieurs classeurs d'un même dossier et coller les données dans une fe

Re,

Bon je t'ai trouvé de quoi n'ouvrir que des fichiers CSV avec l'instruction GetOpenFilename, puis on ouvre le fichier sélectionné avec open.

Dans le fichier, ci-dessous, j'ai inclus cette nouvelle instruction.

J'ai mis également une macro avec un Tablo (dans le module 2), je débute dans les Tablo donc ce n'est surement pas parfait. Mais il semble que cela soit plus rapide sur les grosses quantités de lignes à traiter.

A te relire

Matial
 

Pièces jointes

  • destination.xlsm
    653.4 KB · Affichages: 58
  • destination.xlsm
    653.4 KB · Affichages: 66
  • destination.xlsm
    653.4 KB · Affichages: 59

robby98800

XLDnaute Nouveau
Re : Importer plusieurs classeurs d'un même dossier et coller les données dans une fe

Re,

Oui, passer par des tableaux accélère grandement l'exécution. L'ouverture du fichier csv fonctionne désormais, mais j'obtiens l'erreur "argument ou appel de procédure incorrect" à la dernière ligne Range(Cells(DerLi, 1), Cells(DerLi + f - 1, 5)).Value = Application.WorksheetFunction.Transpose(Tablo)
 

Yaloo

XLDnaute Barbatruc
Re : Importer plusieurs classeurs d'un même dossier et coller les données dans une fe

Bonjour robby, le forum,

Oui, en effet, lorsque j'ai fait les tests, j'avais changé la date à rechercher, car elle était bien trop proche.

Cela génère une erreur car le tablo est vide, il faut donc faire une vérification avant de copier le tablo.

Je n'ai pas le temps aujourd'hui, vois si tu peux de débrouiller tout seul, sinon je regarderai ce soir.

A te relire

Martial
 

robby98800

XLDnaute Nouveau
Re : Importer plusieurs classeurs d'un même dossier et coller les données dans une fe

Bonjour,

Ahh oui exact je l'ai testé avec des dates adéquat et ça marche! Comment dois-je faire pour importer tous les fichiers qui sont compris dans le même dossier?
Il n'y a pas de souci si tu ne peux pas répondre aujourd'hui car je suis en Nouvelle Calédonie et ici il est bientôt le soir.
Je vais tenter de mettre un message d'erreur si le tableau est vide.

A plus tard

Robin
 

robby98800

XLDnaute Nouveau
Re : Importer plusieurs classeurs d'un même dossier et coller les données dans une fe

Un petit détail je tiens juste à expliquer le but de la macro. Comme tu as pu le voir, on sélectionne des données par rapport à une date, or les fichiers sources sont créés par mois donc si on souhaite prendre les données de 7 jours avant il faut des fois jongler sur deux fichiers.
Et si on veut prendre des données de x jours avant, il faut ouvrir plusieurs fichiers. Donc je me suis dit autant ouvrir tous les fichiers dans le dossier (il y en a 12 ce qui représente une année) et faire le test sur chacun d'eux.
Voilà c'est pas forcément utile pour le code mais avoir un contexte ça fixe les idées :)
 

Yaloo

XLDnaute Barbatruc
Re : Importer plusieurs classeurs d'un même dossier et coller les données dans une fe

Re,

J'ai eu quelques minutes entre 12h et 14h.

Regarde si le fichier te convient. Il faut que le fichier destination soit dans le même répertoire que tes fichiers CSV.

Et il ne faut que les 12 fichiers en CSV, s'il y en a d'autres ça les prendra en compte.

A te relire

Martial
 

Pièces jointes

  • destination.xlsm
    655.2 KB · Affichages: 66
  • destination.xlsm
    655.2 KB · Affichages: 73
  • destination.xlsm
    655.2 KB · Affichages: 72

robby98800

XLDnaute Nouveau
Re : Importer plusieurs classeurs d'un même dossier et coller les données dans une fe

Bonjour,

C'est génial ça marche parfaitement. Dis moi si je fais une erreur mais pour importer les données de chaque fichier, je dois aller les chercher un par un en relançant la macro c'est bien cela? Ca me convient tout à fait, je voulais juste ne pas passer à côté de l'opportunité si le programme allait chercher automatiquement dans le dossier tous les fichiers. S'il le fait déjà, quelle manip dois-je faire quand je lance la macro.
Je n'ai plus qu'à mettre un message d'erreur "les données ne correspondent pas à la date voulue" pour ne pas qu'il renvoie un bog et ça sera fini.

En tout cas merci beaucoup ça faisait longtemps que ça trainait.

Robin
 

Yaloo

XLDnaute Barbatruc
Re : Importer plusieurs classeurs d'un même dossier et coller les données dans une fe

Bonsoir robby et oui chez nous c'est bonsoir il est 23h38 !!!!

Si tu veux le faire, fichier par fichier ou 1 fichier de temps en temps, utilise plutôt la macro d'hier (cela te permettra de choisir ton fichier). Tu rajoutes juste le TabloOK à chaque endroit dans la dernière macro, cela devrait faire ce que tu souhaite (comme ça tu n'aura pas d'erreur si ton Tablo est vide).

A+
 

robby98800

XLDnaute Nouveau
Re : Importer plusieurs classeurs d'un même dossier et coller les données dans une fe

Re bonsoir alors :p

Je fais mal la manip alors, en fait avec la macro d'aujourd'hui je sélectionne fichier par fichier comment dois-je faire pour qu'en lancant la macro elle aille "checker" tous les fichiers?
Tu pourras me répondre plus tard, c'est vrai qu'il est tard en France!
Merci
 

Discussions similaires

Statistiques des forums

Discussions
312 215
Messages
2 086 320
Membres
103 178
dernier inscrit
BERSEB50