Division d'un fichier global en plusieurs petits fichiers

Bonjour le forum,

J’ai encore besoin une nouvelle fois d’aide pour savoir comment créer autant de « petits fichiers » qu’il y a de noms différents dans la colonne 4 du fichier test en PJ.

Je m’explique. Dans un fichier qui comporte plus de 300 lignes je souhaiterai le scinder en autant de petits fichiers qu'il y a de noms différents dans la colonne 4. Ces fichiers doivent avoir le même nom que celui de la colonne 4 et se situés dans un répertoire commun appelé « répartition ».

Je ne sais si je m’explique bien donc je vous donne un exemple. Dans le fichier test de 20 lignes en PJ je dois me retrouver avec 5 petits fichiers car j’ai cinq noms différents dans la colonne 4. Il y aurait par exemple le fichier « MOBI.xls » qui reprendrait toutes les infos des 5 lignes (surlignées en jaune pour l’exemple) « L1 à L5 » et L13 car on trouve « MOBI » en colonne 4. Ce fichier serait dans le répertoire « répartition ».

Le nombre de noms différents dans la colonne 4 n’est pas connu mais il ne devrait pas dépasser 40 ce qui signifie qu’au maximum il y aurait 40 petits fichiers dans le répertoire « répartition » en plus du fichier principal.

En espérant qu’une solution me soit proposée, je vous remercie par avance.

14repartition.xlsx (12.73 Ko)

Bonjour philippe

Perso je poserai des questions :

que voulez-vous faire exactement de ces 5 fichiers par la suite ?
pourquoi ne pas faire des onglets différents ?

A+

Salut BrunoM45,

Pourquoi je souhaite scinder ce fichier en petits fichiers correspondant à la valeur de la colonne 4 ? Tout simplement pour transmettre ces derniers aux personnes qui devront travailler dessus et dont leurs domaines de travail correspondent au nom de la colonne 4. En clair la personne qui traite "MOBI" n'a pas à avoir accès aux infos qui concernent "UTILITAIRE" par exemple.

Après plusieurs recherche j'ai trouvé une macro que j'ai adaptée partiellement à mon fichier. Elle fait une partie du travail à savoir me scinder le fichier principal en autant de "petits fichiers" mais dans le même répertoire que le fichier principal et non pas un répertoire appelé « répartition » en nommant ces fichiers avec le nom de la colonne "A" et non pas celui de la colonne D.

Ce qui faudrait mais je n'arrive pas à le faire c'est qu'au-lieu de prendre le nom de la colonne A pour nommer les "petits fichiers", la macro me prenne celui de la colonne D (colonne 4) et au-lieu de commencer son exécution en ligne 3 elle commence en ligne 1. Pour le répertoire si je ne peux pas avoir la création d'un avec le nom « répartition » lors de l'exécution de la macro, je me débrouillerai autrement en mettant directement le fichier principal dans un répertoire ayant ce nom et en exécutant la macro à ce moment là .

La macro en question que j'ai mise dans le nouveau fichier en PJ :

Sub CreationFichiers()
Dim Mondico As Object
Dim DicoKey
Dim J As Long, NbLg As Long
Dim Chemin As String

  Application.ScreenUpdating = False
  Chemin = ThisWorkbook.Path & Application.PathSeparator
  NbLg = Range("A" & Rows.Count).End(xlUp).Row
  Set Mondico = CreateObject("Scripting.dictionary")
  For J = 4 To NbLg
    Mondico(Range("A" & J).Value) = ""
  Next J
  With Sheets("Feuil2")
    .Cells.Clear
    Range("A1:P2").Copy .Range("A1")
    Range("B" & NbLg + 5) = Range("A3")
    For Each DicoKey In Mondico.keys
      Range("B" & NbLg + 6) = DicoKey
      Range("A3:P" & NbLg).AdvancedFilter Action:=xlFilterCopy, _
                                           criteriarange:=Range("B" & NbLg + 5).Resize(2, 1), _
                                           copytorange:=.Range("A3:P3")
      .Copy
      With ActiveWorkbook
        .Sheets(1).Name = DicoKey
        Application.DisplayAlerts = False
        .SaveAs Chemin & "Fichier " & DicoKey
        Application.DisplayAlerts = True
        .Close
      End With
    Next DicoKey
    .Cells.Clear
  End With
  Range("B" & NbLg + 5).Resize(2, 1).ClearContents
  MsgBox "Création des fichiers terminée"

   Application.ScreenUpdating = True
End Sub

Je pense qu'au regard de la macro que pour certains ce que je n'arrive pas à voir sera une évidence mais quand on ne trouve pas on ne trouve pas

13repartition.xlsm (21.27 Ko)

Bonjour à tous !

Avez-vous étudié la piste Power Query ? (Complément gratuit Microsoft à installer pour Excel 2010 et 2013. Nativement intégré dans les versions postérieures)

En quelques clics (...), la requête sera opérationnelle. A dupliquer en tant que de besoin en modifiant le filtre.

Bonjour JFL,

Avec PQ il y aurai trop de requêtes à dupliquer. Le nombre de petits fichiers pouvant être de 40 cela signifierait qu'il faudrait que je créée 40 requêtes...

En plus avec PQ si extraire les infos correspondant à un critères est assez simple mais lui faire créer un fichier automatiquement je ne suis pas sûr que c'est possible en tout cas je ne sais pas faire.

Une macro me semble peut-être dans ce cas la plus adapter mais l'idée de PQ est une piste éventuelle.

Bonjour à tous de nouveau !

Une requête identique avec un simple critère de filtre à modifier. Le tout.... une seule fois. Après c'est l'affaire d'une simple actualisation des données (données filtrées automatiquement intégrées dans le classeur individualisé).

Bonsoir,

Je clôture le sujet. La macro même si pas adaptée vraiment à ce que je voulais a pu faire quand même le TAF.

Bonsoir à tous !

Je clôture le sujet. La macro même si pas adaptée vraiment à ce que je voulais a pu faire quand même le TAF.

Tant mieux !

Je vous remercie de ce retour.

Rechercher des sujets similaires à "division fichier global petits fichiers"