Créer une macro pour scinder un fichier Excel sur plusieurs fichiers

Si cela fonctionne très bien !

capture d ecran 531

Cette fois,ci, tu décompresses le fichier ...

Je ne sais pas quoi te dire, mais merci beaucoup pour ton aide. La personne m'a donné une version avec les informations utiles et ça marche parfaitement,

Juste un truc lol :p , est-ce que c'est possible de garder la mise en forme des colonnes ? comme le fichier de base

Les fichiers générés ont une autre mise en forme, je souhaite garder la largeur et l'alignement. Cela est possible STP ?

Merci encore une fois !!

Juste un truc lol :p , est-ce que c'est possible de garder la mise en forme des colonnes ? comme le fichier de base

Les fichiers générés ont une autre mise en forme, je souhaite garder la largeur et l'alignement. Cela est possible STP ?

Oui c'est pour cela qu'il y a un modèle, ajuste la largeur des colonnes. Tu peux le faire en copiant une feuille "épurée" et ensuite supprimer les informations, recopier l'en-tête ligne 3 et supprimer les 2 premières lignes pour supprimer le tableau excel.

Par contre, si tu veux une disposition en tableau, il faut que j'ajoute une instruction.

La macro marche parfaitement maintenant.

Juste un petit truc, est-ce que c'est possible de remplacer les chiffres dans les noms des fichiers générés par leur libellé ?

Juste les 14 premiers fichiers, là où il y a des chiffres à la fin (image partie colorée en jaune)

Chaque code avec son nom :

Exemple :

SUIVI_ETAORG_20200416_V1_750528

par

SUIVI_ETAORG_20200416_V1_PARIS HTS FCE DEXC

N'oubliez pas notre rdv à 20h :p

Merci tout le monde pour votre aide,

capture2 capture1

Elle est où la table de correspondance dans le fichier ?.

Il y a bien une colonne DEX mais qui ne donne pas la même désignation ! exemple :

750528             PARIS HAUTS DE FRANCE DEXC     

Le plus difficile est d'ouvrir des fichiers méga chargés ! pfttt, on aurait dû avoir un extrait !

C'est moi qui a créé cette table pour toi, pour expliquer chaque code.

Si non, si tu peux la faire avec la colonne DEX tant mieux, c'est la même signification. Mais uniquement pour les 14 premiers fichiers là où il y a ces chiffres.

Merci d'avance,

Si tu peux faire avec les noms de la table de correspondance, c'est mieux.

Merci, bonne soirée !

D'abord tu m'envoies un table au format image ! cela ne me permet pas de récupérer les valeurs.

Et ensuite, comme tu le dis je peux récupérer la colonne DEX. dans ce cas pourquoi ne pas utiliser cette colonne pour scinder le fichier au lieu de la colonne 1 ?

Option Explicit
Public critere%

Sub dispatcher()
Dim Tbl As Variant, data As Variant, i As Long
Dim dico1 As Object, cle1 As Variant, result1 As Variant
Dim wb As Excel.Workbook
Dim MonRepertoire, Repertoire As FileDialog, racine As String
Dim colonne$

    critere = 1 ' colonne A

    racine = Split(ThisWorkbook.Name, ".")(0)

    Set Repertoire = Application.FileDialog(msoFileDialogFolderPicker)
    Application.FileDialog(msoFileDialogFolderPicker).Title = "Choix du répertoire de stockage des fichiers générés"
    Repertoire.Show
    If Repertoire.SelectedItems.Count = 0 Then Exit Sub
    MonRepertoire = Repertoire.SelectedItems(1)

    Dim c As Range
    Set c = Rows(1).Find("Colonne*")
    If Not c Is Nothing Then
        data = Range(Cells(1, 1), Cells(Range("A1").End(xlDown).Row, Rows(1).Find("Colonne*").Column))
    Else
        data = Cells(1, 1).CurrentRegion
    End If

    Set dico1 = CreateObject("Scripting.Dictionary")
    For i = LBound(data) + 1 To UBound(data) ' hors en-tête
        dico1(data(i, critere)) = ""
    Next

    Application.ScreenUpdating = False
    For Each cle1 In dico1.Keys
        result1 = filtreArray(data, critere, cle1)
        Set wb = Workbooks.Open(ThisWorkbook.Path & "\" & "Model.xlsx")
        wb.Sheets(1).Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Resize(UBound(result1, 1), UBound(result1, 2)) = result1
        If Not cle1 Like "750*" Then
            wb.SaveAs (MonRepertoire & "\" & racine & "_" & cle1 & ".xlsx")
        Else
            wb.SaveAs (MonRepertoire & "\" & racine & "_" & Cells(2, 7) & ".xlsx")
        End If
        wb.Close
        Set wb = Nothing
    Next
    Application.ScreenUpdating = True

    MsgBox "Terminé, fichiers sauvegardés sous """ & MonRepertoire & "\" & """ !"
End Sub

avec un jeu d'essai allégé

26model.xlsx (11.16 Ko)

Merci beaucoup Steelson, tu me sauves vraiment la vie (y) (y) .

A part ça, j'ai fait un petit test à côté, en modifiant la date du fichier où on exécute la macro : à la place du "SUIVI_ETAORG_20200416_V3" j'ai mis par exemple "SUIVI_ETAORG_20200420_V3" ;

J'ai remarqué que la macro copie plutôt la date du fichier qui porte la macro, moi je veux la date du fichier où on exécute la macro (c'est-à-dire ""SUIVI_ETAORG_20200420_V3"); et faire ça automatiquement..

Est-ce que c'est possible ça ?

Merci bcp pour ton aide,

Salutations,

La macro prend comme nom le nom du fichier origine suivi du paramètre.

Exemple sur mon fichier SUIVI_ETAORG_jeu essai.xlsm

capture d ecran 533

Oui c'est-ce que j'ai moi aussi.

L'objectif est plutôt de récupérer la date inscrite dans le nom du fichier ouvert où on exécute la macro, pas le fichier original. Est-ce que c'est possible ça ?

Merci,

Je ne sais pas faire ... c'est compliqué pour ma petite cervelle.

A quoi sert cette date dans le nom du fichier alors ?

Poste un nouveau sujet pour savoir comment récupérer cette date, d'autant qu'il faudra préciser si c'est lors de sa dernière sauvegarde qui peut être la veille ou plus ancien ou si c'est la date en cours.

Je n'aime pas trop les trucs qui ne sont pas standards, c'est difficile à maintenir.

Je ne sais pas faire ... c'est compliqué pour ma petite cervelle.

A quoi sert cette date dans le nom du fichier alors ?

Poste un nouveau sujet pour savoir comment récupérer cette date, d'autant qu'il faudra préciser si c'est lors de sa dernière sauvegarde qui peut être la veille ou plus ancien ou si c'est la date en cours.

Je n'aime pas trop les trucs qui ne sont pas standards, c'est difficile à maintenir.

En fait, il y a des extractions de ce fichier excel 3 fois par semaine (exemple : le 20/04/2020, 23/04/2020, 24/04/2020). Le mieux c'est de récupérer la date ce fichier (inscrite dans son nom) et la coller sur les 18 fichiers générés.

Je suis d'accord, c'est difficile. Au pire, je la ferai manuellement, tkt.

J'en posterai un sujet concernant ça.

Merci,

J'en posterai un sujet concernant ça.

Oui, demande comment récupérer cette date ...

Merci beaucouuuuuuuuuuuuuuuuuuuuuup !!

Steelson,

Un forumier m'a donné ça, on peut l'adapter ?

x = ActiveWorkbook.Name

Lien :

https://forum.excel-pratique.com/viewtopic.php?p=859688&sid=e10b6c75037c0756c401b6afd9f7fecc#p859688

Réponse 2 :

avant l'enregistrement sous le nom du fichier est "Model.xlsx"

voir ligne:

Set wb = Workbooks.Open(ThisWorkbook.Path & "\" & "Model.xlsx")

après l'enregistre sous

NouveauNom = wb.name

Je mets laquelle ? ça ne marche toujours pas de mon côté.

Réponse 2 :

avant l'enregistrement sous le nom du fichier est "Model.xlsx"

voir ligne:

Set wb = Workbooks.Open(ThisWorkbook.Path & "\" & "Model.xlsx")

après l'enregistre sous

NouveauNom = wb.name

Je mets laquelle ? ça ne marche toujours pas de mon côté.

pas facile de suivre 2 fils !...

Rechercher des sujets similaires à "creer macro scinder fichier fichiers"