Copier d'une feuille vers d'autres selon condition Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
a
alcibiade
Membre habitué
Membre habitué
Messages : 97
Inscrit le : 29 juillet 2014
Version d'Excel : 2010 FR

Message par alcibiade » 10 février 2015, 12:49

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.
:D
Avatar du membre
Dan
Modérateur
Modérateur
Messages : 5'952
Appréciations reçues : 81
Inscrit le : 27 avril 2007
Version d'Excel : 2010, 2000, Mac 2011

Message par Dan » 10 février 2015, 13:02

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
@+ Dan ;)
a
alcibiade
Membre habitué
Membre habitué
Messages : 97
Inscrit le : 29 juillet 2014
Version d'Excel : 2010 FR

Message par alcibiade » 10 février 2015, 13:20

Oui bien sûr, le voici
Merci Dan
Exemple.xlsx
(18.54 Kio) Téléchargé 52 fois
Avatar du membre
Marc L
Membre dévoué
Membre dévoué
Messages : 821
Appréciation reçue : 1
Inscrit le : 27 janvier 2015
Version d'Excel : 2003 / 2007

Message par Marc L » 10 février 2015, 13:34

 

Bonjour,

code inutile via un filtre avancé !

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

Tous unis, tous Charlie
Avatar du membre
Dan
Modérateur
Modérateur
Messages : 5'952
Appréciations reçues : 81
Inscrit le : 27 avril 2007
Version d'Excel : 2010, 2000, Mac 2011

Message par Dan » 10 février 2015, 13:38

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
@+ Dan ;)
a
alcibiade
Membre habitué
Membre habitué
Messages : 97
Inscrit le : 29 juillet 2014
Version d'Excel : 2010 FR

Message par alcibiade » 10 février 2015, 13:40

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 :D
Bonne journée
Avatar du membre
Marc L
Membre dévoué
Membre dévoué
Messages : 821
Appréciation reçue : 1
Inscrit le : 27 janvier 2015
Version d'Excel : 2003 / 2007

Message par Marc L » 10 février 2015, 13:42

 

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

 
Comme la vitesse de la lumière est supérieure à celle du son, certains ont l'air brillant avant d'avoir l'air con !
Avatar du membre
Marc L
Membre dévoué
Membre dévoué
Messages : 821
Appréciation reçue : 1
Inscrit le : 27 janvier 2015
Version d'Excel : 2003 / 2007

Message par Marc L » 10 février 2015, 14:26

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
Comme la vitesse de la lumière est supérieure à celle du son, certains ont l'air brillant avant d'avoir l'air con !
a
alcibiade
Membre habitué
Membre habitué
Messages : 97
Inscrit le : 29 juillet 2014
Version d'Excel : 2010 FR

Message par alcibiade » 10 février 2015, 15:58

Merci Marc,

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

Bonne soirée
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message