Macro pour découper un fichier Excel en plusieurs en fonction d'un critère

Bonjour,

C'est ma 1ère demande dans ce forum, je suis novice et ma formation VBA n'est pas pour tout de suite.

Pourriez-vous m'aider sur un problème svp ?

Je souhaite créer une macro qui permet de découper un fichier Excel en plusieurs fichiers selon un critère défini.

Le critère de génération de chaque nouveau fichier est le changement de valeur contenu dans la colonne "A" (fichier de départ ci-joint "1_base travail-liste_des_donnees.xlsx").

Je voudrais qu'à chaque changement de valeur dans cette colonne, un nouveau fichier soit crée avec toutes les lignes correspondant à cette valeur, fichier d'arrivé "3_résultat-20220916_liste_des_ cheque_TIP_de_plus_de_1 mois-A0101.xlsx"

Pour cela, j'ai une matrice "2_matrice-20220916_liste_des_ cheque_TIP_de_plus_de_1 mois-A0101.xlsx" avec 2 onglets
le deuxième onglet est fixe une note, on copie les données sur le premier onglet uniquement en laissant le titre et un interligne

Le nom des colonnes des fichiers générés est identique au fichier de départ ci-joint "1_base travail-liste_des_donnees.xlsx".

Cependant, pour chaque fichier je souhaite insérer un total dans la colonne "F" si possible ?

Merci beaucoup de votre aide.

En annexe les fichiers

bonjour,

Sub Copieren()
     Dim NewWB
     With Sheets("F_Complet")
          If .AutoFilterMode Then .AutoFilterMode = False
          Application.ScreenUpdating = False

          Set c = .Range("A1").CurrentRegion
          .Columns("I").ClearContents
          c.Columns(1).AdvancedFilter xlFilterCopy, , .Range("I1"), Unique:=True
          Application.Goto .Range("A1"), 1

          For i = 2 To .Range("I" & Rows.Count).End(xlUp).Row

               Application.StatusBar = .Range("I" & i).Value: DoEvents
               With c
                    .AutoFilter 1, .Range("I" & i).Value
                    .SpecialCells(xlCellTypeVisible).Copy

                    Set NewWB = Workbooks.Add
                    NewWB.Sheets.Add(After:=Sheets(NewWB.Sheets.Count)).Name = .Range("I" & i).Value
                    NewWB.Activate
                    Range("A3").PasteSpecial xlAll
                    With Range("A3").CurrentRegion
                         .WrapText = False
                         .EntireColumn.AutoFit
                         .Cells(.Rows.Count + 2, 1).Value = "Total"
                         som = WorksheetFunction.Sum(.Columns(.Columns.Count))
                         .Cells(.Rows.Count + 2, 7).Value = som
                    End With
                    Range("A1").Value = "Montants TIP et CHEQUE de plus de 1 mois du 16/09/2022"

                    NewWB.SaveAs ThisWorkbook.Path & "\Liste-des-cheques-" & .Range("I" & i).Value & "__" & Format(Now, "yymmdd hhmmss")     'nom du nouveau fichier
                    NewWB.Close 0
               End With
          Next
     End With
     c.AutoFilter
     Application.StatusBar = ""
     MsgBox "prêt"
End Sub

Bonjour BsAlv,

Merci beaucoup pour votre aide, cela va me faire gagner un temps énorme :)

Je teste lundi dans l'entreprise et je vous fais un retour.

bonne journée

Bonjour BsAlv,

J'ai testé aujourd'hui dans l'entreprise.

Cela fonctionne correctement, Merci.

J'ai un souci cependant, il faut que je respecte une charte graphique comme dans l'annexe "2_matrice-20220916_liste_des_ cheque_TIP_de_plus_de_1 mois-A0101.xlsx".

Et en plus il faut que le deuxième onglet figure dans chaque fichier créé.

Croyez-vous que cela peut-être faisable via une macro ?

Au pire je rajouterais sur chaque fichier

Merci encore pour votre aide

bonne journée

si ce n'est qu'un image, c'est facile

Bonjour BsAlv,

J'ai retesté c'est nickel.

Merci, cela fonctionne correctement, .

vous pourriez m'aider à placer du code dans votre programme ?

Je m'explique, je voudrais ajouter une ligne me permettant de renommer le premier onglet de "Feuil1" en "Flash" et une autre me permettant de supprimer les "Feuil2" et "Feuil3".

En cherchant, j'ai vu qu'il était possible de le faire, mais je ne voudrais pas faire de bêtise dans votre programme

Merci encore pour votre aide

bonne journée

bonsoir,

j'ai ajouté des commentaires à côté de la macro & renommé la feuille "Flash". Je ne sais pas ce que vous voulez dire avec Feuil2 et 3.

Bonjour BsAlv,

Merci pour votre aide.

Désolé, Je vais essayer d’être plus clair.

À la création de chaque fichier, il y a l’onglet avec le tableau et 3 autres onglets

Le premier qui s’appelle feuil1 au lieu de « Flash »

Le deuxième « feuil2 » et troisième «feuil3 ».

Je voudrais supprimer la création automatique de ces deux derniers onglets.

Je viens de tester le nouveau fichier, c’est parfait il renomme bien l’onglet feuil1 en « Flash ».

Bonne journée

cela est parce qu'il y a une différence de réglage d'excel entre nous 2. Mon excel n'a qu'une feuille

Bonsoir BsAlv,

J'ai modifié pour n'avoir qu'une feuille :)

Nickel

Merci de ton aide sur ce sujet

Tu m'a fait gagner un temps énorme

Bonne soirée
Rechercher des sujets similaires à "macro decouper fichier fonction critere"