Copier d'une feuille vers d'autres selon condition

Bonjour Forum,

Je recherche un code qui me permettrait de faire ceci :

J'ai un fichier excel dans lequel j'importe sur une page "Base" des données SAP.

Dans cette base, il y a un code sur chaque ligne qui désigne un département, disons A1234 par exemple. J'ai une dizaine de départements différents et plusieurs milliers de ligne.

La base importée n'est pas triée par département et je souhaiterais éviter que la macro le fasse.

J'ai crée un onglet par département, le 1er s'appelle donc A1234.

Je souhaiterais écrire une macro qui copie chaque ligne de la base sur l'onglet correspondant à son département.

En rajoutant chaque nouvelle ligne à la suite de la précédente.

Any idea ?

Merci d'avance,

Alci.

Bonjour

Pour éviter de te répondre à coté, merci de mettre un fichier exemple en ligne qui représente la structure de ton fichier

Amicalement

Oui bien sûr, le voici

Merci Dan

63exemple.xlsx (18.54 Ko)

Bonjour,

code inutile via un filtre avancé !

Et si vraiment un code est nécessaire, en activant le Générateur de macros …

re

essaie avec ce code à associer ton bouton

Sub test()
'Macro Dan
Dim i As Integer
With Sheets("base")
    For i = 2 To .Range("C" & .Rows.Count).End(xlUp).Row
        .Range("A" & i & ":C" & i).Copy Sheets(Range("C" & i).Value).Range("A" & (Sheets(Range("C" & i).Value).Range("A" & (Sheets(Range("C" & i).Value).Rows.Count)).End(xlUp).Row + 1))
    Next
End With
End Sub

Si ok, clique sur le V vert à coté du bouton EDITER lors de ta réponse, afin de cloturer le fil

Amicalement

Edit : Attention d'enregistrer ton fichier avec l'extension XLSM pour activer les macros

Ok merci

j'ai regardé le filtre avancé mais je ne vois vraiment pas comment donner la condition de coller sur l'onglet qui correspond au code de la ligne...tu peux me faire un print screen si tu y arrives ?

Merci


Génial Dan !

car marche au poil

Bonne journée

Edit : l'astuce consiste à effectuer le filtre avancé depuis la feuille de destination …

Plus il y a de lignes, plus une boucle classique sera longue à l'exécution …

Via un filtre avancé :

Sub Demo()
    Application.ScreenUpdating = False

    With Feuil1
        .Cells(5).Value = .Cells(3).Value

        For W& = 2 To Worksheets.Count
            .Cells(2, 5).Value = Worksheets(W).Name
             Worksheets(W).Cells(1).CurrentRegion.Clear
            .Cells(1).CurrentRegion.AdvancedFilter xlFilterCopy, .[E1:E2], Worksheets(W).Cells(1)
        Next

        .[E1:E2].Clear
    End With
End Sub

Merci Marc,

ca m’intéresse de tester aussi ta solution.

Bonne soirée

Rechercher des sujets similaires à "copier feuille condition"