Regrouper plusieurs tableau dans un seul

Bonjour,

Je vais essayer d'être le plus claire possible

Je travaille sous Excel 2010 (plus de limite en termes de ligne)

J’ai 95 tableaux Excel (ayant exactement la même structure en termes de colonne), ces 95 tableaux représentent 95 fichiers différents (1 tableau par fichier).

J'aimerais savoir comment je peux faire pour regrouper ces 95 tableaux dans un seul tableau (sans passer par le traditionnel mais rébarbatif copier/collier).

Infos complémentaires : chacun de ces tableaux ont un nombre de ligne différente (le nombre de ligne varie entre 30 et plus de 2.000).

Et pour faire simple je n'ai jamais touché au macro ou tous autres forme de programmation.

Je vous remercie par avance de votre aide car pour le moment je fais ça en copier /coller mais je perds un temps fou, et j’ai ce genre de fichier tous les 15 jours.

Bien cordialement

Axel

Bonjour et bienvenue

Tu peux joindre un fichier avec 3 feuilles de 10 lignes chacunes ?

Comment Joindre Un Fichier

Amicalement

Nad

Bonjour,

Merci pour votre interet a mon probleme.

Vous trouverez ci-joint les 2 fichiers excel (Tableau 1, Tableau 2,)

L'objectif serait de creer un nouveau fichier (exemple Tableau 3) ou j'aurai automatiquement l'ensemble des données contenues dans les fichiers : tableau1 + tableau 2.

Merci de votre aide

764tableau-1.xlsx (12.23 Ko)
987tableau-2.xlsx (12.29 Ko)

Re

  • Avec un dossier contenant un sous-dossier (nommé "LesFichiers" dans le code) dans lequel tu places tous tes fichiers TABLEAU
  • Tu ouvres un nouveau fichier dans lequel tu copies la ligne 1 d'un des fichiers TABLEAU
  • Tu enregistres ce nouveau fichier dans le même dossier (pas dans le sous-dossier)
  • Tu places ce code dans un module du nouveau fichier (code de Boisgontier)
Sub Regroupe()
  sousRépertoire = "LesFichiers"
  [A2].CurrentRegion.Offset(1, 0).Clear
  Set maitre = ActiveWorkbook
  Repertoire = ThisWorkbook.Path
  nf = Dir(Repertoire & "\" & sousRépertoire & "\*.xls")
  Do While nf <> ""
    Workbooks.Open Filename:=Repertoire & "\" & sousRépertoire & "\" & nf
    n = [A1].CurrentRegion.Rows.Count - 1
    [A1].CurrentRegion.Offset(1, 0).Copy _
    maitre.Sheets(1).[A65000].End(xlUp).Offset(1, 0)
    ActiveWorkbook.Close False
    nf = Dir
  Loop
End Sub

- Tu lances la macro

Amicalement

Nad

Bonsoir,

Je te remercie de toutes ces informations mais j'aurai encore besoin de toi.

Comme je l'ai signale dans mon 1er message je n'y connais rien en macro et j'aurai besoin d'un complement d'informmation:

1° j'ai creer un dossier "Nouveau Dossier" dans lequel j'ai placé mes 2 Fichiers "Tableau" (Tableau 1 et Tableau 2).

2° Dans le dossier "Nouveau Dossier" j'ai creé un sous dossier que j'ai nomme "Lesfichiers"

3° j'ai ouvert un nouveau fichier (un nouveau tableau excel avec 3 feuilles) que j'ai Nommé "Classeur1" et que j'ai enregistré dans "Nouveau Dossier".

4° dans la feuille n°1 de mon fichier "Classeur1" j'ai copie la premiere ligne de mon fichier "Tableau 1" (Date, nom, prenom, etc.)

Deja ais-je bien effectué cette manipulation ?

Tu me dites:

  • "Tu places ce code dans un module du nouveau fichier (code de Boisgontier)" mais que veux-tu dire par "module"?
  • "Tu lances la macro" comment lance t-on une macro?

Merci de ton aide.

Axel

axel197 a écrit :

1° j'ai creer un dossier "Nouveau Dossier" dans lequel j'ai placé mes 2 Fichiers "Tableau" (Tableau 1 et Tableau 2).

2° Dans le dossier "Nouveau Dossier" j'ai creé un sous dossier que j'ai nomme "Lesfichiers"

Non, les 2 fichiers "Tableau" doivent être dans le sous dossier 'LesFichiers"

axel197 a écrit :

3° j'ai ouvert un nouveau fichier (un nouveau tableau excel avec 3 feuilles) que j'ai Nommé "Classeur1" et que j'ai enregistré dans "Nouveau Dossier".

4° dans la feuille n°1 de mon fichier "Classeur1" j'ai copie la premiere ligne de mon fichier "Tableau 1" (Date, nom, prenom, etc.)

3 et 4, c'est OK

Maintenant, tu ouvres "Classeur 1".

Tu appuies sur ALT + F11 (cela ouvre VBA)

Dans la partie gauche, tu sélectionnes ton fichier et tu fais INSERTION ==> Module

sans titre1

Tu copies le code que j'ai mis dans mon précédent message et tu le colles dans la partie droite

capture

Tu reviens sur excel et tu fais ALT + F8 - Tu sélectionnes "Regroupe" et tu cliques sur "Exécuter"

Si problème, reviens.

Nad

Bonsoir,

Super merci ca fonctionne je te remercie tu m'enleves un belle epine du pied.

Mais j'ai encore besoin de tes lumieres:

Les 95 fichiers que je recois ne sont pas en ".xls" mais en ".csv" (la macro ne fonctionne pas sur les fichiers en .csv), connaitrais-tu une mapilation pour passer automatiquement du .csv en .xls sans passer par la case "Enregistrer sous"?

Tu m'as deja bcp aide mais si tu as une solution pour le probleme si dessus tu seras definitivement mon sauveur.

Amicalement

Alex

Bonjour

Dans le code, remplace :

nf = Dir(Repertoire & "\" & sousRépertoire & "\*.xls")

par

nf = Dir(Repertoire & "\" & sousRépertoire & "\*.csv")

Amicalement

Nad

Bonjour,

Merci pour ton aide.

J'ai bien remplace la ligne de code que tu m'as donné dans ton message mais j'ai un souci de separateur de colonne. je t'ai attaché un exemple pour que tu comprennes mieux.

Merci encore de ton aide

Amicalement

axel

434classeur2.xlsx (11.93 Ko)

Bonjour,

bonjour, Nad

A la place d'un fichier ".xlxs", pourrais-tu joindre un fichier "*.csv", afin qu'on puisse mieux appréhender le problème?

@ te relire

Bonjour,

Tu trouveras ci-joint le fichier en .CSV

Merci de votre aide

Axel

6467annonces-1.csv (9.14 Ko)

Re-,

Au vu de ton fichier .csv, qu'est-ce que tu devrais obtenir, au final?

A partir de ce fichier, peux-tu faire un fichier excel, avec les bonnes données dans les bonnes colonnes?

Avec Excel 2003, voici ce que j'obtiens, rien qu'en double cliquant sur le fichier csv.

Je pense que les données ne sont pas dans les bonnes colonnes, notamment dans les dernières colonnes...

4867annonces-v1.zip (4.54 Ko)

Bonjour

tu trouveras ci-joint le fichier en .csv

merci de ton aide

Axel

4467annonces-1.csv (9.14 Ko)

Re-,

Inutile de mettre 2 fois le fichier csv...

Ce que je te demandais, c'était un fichier excel (.xlsx, vu que tu as 2010), avec les données dans les bonnes colonnes..

As-tu regardé le fichier que j'ai joint dans le post précédent?

@ te relire

Bonjour,

excuse moi pour mon dernier message mais j'ai cru qu'il n'etait pas envoye car trop lourd.

mon probleme n'est pas a l'ouverture en double cliquant dessus, mais en utilisant la macro les separateurs de colonne fonctionne de facon aleatoir , voir les exemles .XLS et .CVS deja envoye.

Merci

Axel

Re-,

on va un peu modifier le code d'importation.

Je passe par une requête (Données/Données Externes/Importer des données)

Sur le même principe que Nad, ton fichier Excel dans un répertoire, et tous tes fichiers csv dans un sous-répertoire d'icelui...

Le code :

Sub Regroupe()
Dim Repertoire As String
Dim SousRépertoire As String
Dim DerCell As Range
Application.ScreenUpdating = False
SousRépertoire = "Essai texte"
[A2].CurrentRegion.Offset(1, 0).Clear
Repertoire = ThisWorkbook.Path & "\" & SousRépertoire
nf = Dir(Repertoire & "\*.csv")
Do While nf <> ""
    Set DerCell = [A65000].End(xlUp)(2)
    With ActiveSheet.QueryTables.Add(Connection:= _
            "TEXT;" & Repertoire & "\" & nf, Destination:=DerCell)
        .TextFileSemicolonDelimiter = True
        .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, _
        1, 1, 1, 1)
        .Refresh BackgroundQuery:=False
        DerCell.EntireRow.Delete
    End With
    nf = Dir
Loop
End Sub

Bon courage

Bonjour

Je viens de changer le code de "nad" par ton code mais rien ne se passe.

encore merci

axel

Re-,

euh, tu as bien défini le sous-répertoire?

SousRépertoire = "Essai texte"

Sinon, on va faire du pas-à-pas...

Tu cliques au milieu de "nf" (entre le n et le f)

Tu fais "Débogage/Ajouter un espion", puis "OK"

Tu as une nouvelle fenêtre en bas

Tu te positionnes n'importe où dans le code, puis tu appuies sur F8 (mode pas-à-pas)

Le code va se dérouler une ligne à chaque fois que tu appuieras sur F8

arrivé à la ligne :

nf = Dir(Repertoire & "\*.csv")

appuie une nouvelle fois sur F8, et regarde la valeur que prend "nf", en bas, dans la fenêtre "espion"

@ te relire

Bonjour

Essaye avec ce code :

 Sub Regroupe()
       Application.ScreenUpdating = False
      SousRépertoire = "LesFichiers"
      [A2].CurrentRegion.Offset(1, 0).Clear
      Set maitre = ActiveWorkbook
      Repertoire = ThisWorkbook.Path
      nf = Dir(Repertoire & "\" & SousRépertoire & "\*.csv")
      Do While nf <> ""
        Workbooks.Open Filename:=Repertoire & "\" & SousRépertoire & "\" & nf
        n = [A1].CurrentRegion.Rows.Count - 1
        [A1].CurrentRegion.Offset(1, 0).Copy _
        maitre.Sheets(1).[A65000].End(xlUp).Offset(1, 0)
        ActiveWorkbook.Close False
        nf = Dir
      Loop
      For Lig = 2 To Range("A65536").End(xlUp).Row
            Conv = Split(Cells(Lig, 1), ";")
            For i = 0 To UBound(Conv) - 1
                Cells(Lig, i + 1) = Conv(i)
            Next i
        Next Lig
    End Sub

Amicalement

Nad

Bonjour,

Le probleme ete que je n'avais pas mis le nom du fichier maintenant je l'ai changer et ca fonctionne

Par-contre j'ai mis mes 95 fichiers .csv dans le bon dossier mais lorsque j'applique la macro les fichiers ne sont pas les 1 a la suite des autres mais les un a cote des autres.

Il faudrait qu'ils soient les uns a la suites des autres

Merci d'avance

Axel

Rechercher des sujets similaires à "regrouper tableau seul"