Trie de données

Bonsoir tout le monde

j'ai une liste de données que j'ai importé sur excel. Afin de pouvoir l'utiliser j'ai besoins de dispatcher cette liste sur plusieurs feuilles.

quel serais le code pour:

si le texte de la colonne E est "aaa_aaa" et que sur la même ligne sur la colonne G le texte est "DE002" couper et coller la ligne sur la feuille "fluxDE002"

puis sur la feuille "fluxDE002" trouver tous les doublons de la colonne H et couper/coller les lignes vers la feuille "doublon fluxDE002"

https://www.excel-pratique.com/~files/doc/MFF.zip

voila, j'espers avoir été assez clair.

Cordialement

Salut le forum

Maguetlolo, tu aurais du mettre un exemple de l'extraction.

Mytå

RE:

ok, en fait en refaisant l'exemple je suis tombé sur un probleme. toute mes escuses j'espers que vous n'avez pas commencé.

en fait il faudrais dabord extraire les doublons comme expliqué sur le fichier joint et ensuite extraire les lignes vers DE002

https://www.excel-pratique.com/~files/doc/MFF2.zip

je ne suis pas doué en explication alors demandez si vous avez un doute.

Cordialement

Bonsoir tout le monde

afin que vous compreniez ce que je veux faire, je vais essayer de vous expliquer ou je veux arriver

DE002 et DE001 sont des points de dialogue ou transitent des articles

aaa_aaa est le message qui remonte lorsqu'un article passe par un de ces points de dialogue

Dans un premier temps, je veux savoir combien d'article passe par chacun de ces points de dialogue

Chacun des articles a un numéro unique. (colonne H)

les "doublons" sont des articles qui passent plusieur fois par ces point de dialogue ce qui fausse mes statistiques c'est pour cela que je veux les extraires (mais je les garde de coté pour pouvoir les repertorié et faire d'autre statistiques) mais un doublon peut faire un premier passage par "DE002" et un deuxieme par "DE001" et ce sont quand même des doublons

Ensuite en passant par ces points de dialogue, les article sont soit stockés, soit envoyer sur une autre direction car un défaut a été détecté. par l'intermediaire d'un autre message que "aaa_aaa" je vais répértorié ces derniéres afin de savoir le taux d'article avec défaut en les détaillant par style de défaut.

Une fois les données triées elle sont comptabilisées dans un tableau grace a une macro que Myta a mise en forme.

Je passe par cette méthode car je ne voit pas comment faire autrement, je ne connait pas l'étendu des possibilités d'excel et du VBA mais bien sur si vous avez une idée, elle serat la bienvenue

j'espers vous avoir éclairé car je pense que c'est plus facile si on connait le but de l'opération.

Cordialement

salut le forum

Un bout de code qui met en rouge les doublons, sur le premier fichier

Sub Trouver_Doublon()
Dim Unique As Object, Cel As Range
Set Unique = CreateObject("Scripting.Dictionary")
Columns("H:H").Interior.ColorIndex = xlNone
    For Each Cel In Range("H1:H" & [H65000].End(xlUp).Row)
        If Not Unique.Exists(Cel.Value) Then
        Unique.Add Cel.Value, Cel.Value
        Else
        If Not IsEmpty(Cel) And _
        Cel.Offset(0, -3) = "aaa_aaa" And _
        (Cel.Offset(0, -1) = "DE001" Or Cel.Offset(0, -1) = "DE002") Then
        Cel.Interior.ColorIndex = 3
        End If
        End If
    Next Cel
End Sub

Mytå

Bonsoir tout le monde

Afin de simplififié les tests j'ai réduit le fichier la macro de Myta fonctionne bien

une chose qui est bizarre: si je fait un essai avec la premiere ligne de mettre aaa_aaa au lieu de aaaa_aaa, il ne la colore pas alors qu'avec cette macro, il devrait

la ligne 22 n'est pas colorée non plus?

je n'arrive pas a trouver d'ou viennent ces incoherences

puis ce qu'il faudrais c'est que la premiere occurence des doublons ne soit pas colorée

cordialement

https://www.excel-pratique.com/~files/doc/Copie_de_MFFV1_0.xls

Salut le forum

Tu modifies les conditions de départ

Sub Trouver_Doublon()
Dim Unique As Object, Cel As Range
Set Unique = CreateObject("Scripting.Dictionary")
Columns("H:H").Interior.ColorIndex = xlNone
    For Each Cel In Range("H1:H" & [H65000].End(xlUp).Row)
        If Not Unique.Exists(Cel.Offset(0, -3).Value & Cel.Value) Then
        Unique.Add Cel.Offset(0, -3).Value & Cel.Value, Cel.Offset(0, -3).Value & Cel.Value
        Else
        If Not IsEmpty(Cel) And _
        (Cel.Offset(0, -1) = "DE001" Or Cel.Offset(0, -1) = "DE002") Then
        Cel.Interior.ColorIndex = 3
        End If
        End If
    Next Cel
Set Unique = Nothing
End Sub

Mytå

re:

ok, ca a l'air de fonctionner (j'ai juste remis : Cel.Offset(0, -3) = "aaa_aaa" And _)

qu'il n'y avais plus dans ta macro.

Maintenant, pour reprendre au début, au lieu de coloré tout ces doublons, je voulais les couper coller vers une autre feuille (nommer doublon par exemple)

ensuite dans la liste sans doublons, extraire tout ceux qui ont le message "aaa_aaa" DE001 vers une feuille specifique et "aaa_aaa" DE002 vers une autre feuille (nommées flux DE001 et Flux DE002)

maguetlolo

Re le forum

J'avais supprimer volontairement la condition car c'est des doublons cela

Ligne 2 et 3 Non !

00:06:04.52 aaaa_aaa DE002 ABCDEFG01015459164    ####
et
00:06:04.53 aaaa_aaa DE002 ABCDEFG01015459164    ####

Mytå

re:

oui bien sur mais souviens toi , ceux qui m'interesse pour l'instant ce sont ceux qui ont le message aaa_aaa c'est pour cela que tu avais mis cette condition.

le message aaaa_aaa a une autre signification et je m'en occuperais plus tard en adaptant ta macro.

maguetlolo

Re le forum

Pour suivre la ficelle, la dernière macro

Sub Trouver_Doublon()
Dim Unique As Object, Cel As Range
Set Unique = CreateObject("Scripting.Dictionary")
Sheets("fluxDE001").Cells.Delete
Sheets("fluxDE002").Cells.Delete
Sheets("doublons").Cells.Delete
Columns("H:H").Interior.ColorIndex = xlNone
    For Each Cel In Range("H1:H" & [H65000].End(xlUp).Row)
        If Not Unique.Exists(Cel.Offset(0, -3).Value & Cel.Value) Then
        Unique.Add Cel.Offset(0, -3).Value & Cel.Value, Cel.Offset(0, -3).Value & Cel.Value
        'Traitement de DE001 et DE002
        If Cel.Offset(0, -3) = "aaa_aaa" Then
            Select Case Cel.Offset(0, -1).Value
            Case "DE001"
                Range(Cells(Cel.Row, 1), Cells(Cel.Row, 9)).Copy
                With Sheets("fluxDE001").Range("A" & Sheets("fluxDE001").Range("A65535").End(xlUp).Row + 1)
                    .PasteSpecial Paste:=xlPasteAll
                    .PasteSpecial Paste:=xlPasteColumnWidths
                End With
                Application.CutCopyMode = False
            Case "DE002"
                Range(Cells(Cel.Row, 1), Cells(Cel.Row, 9)).Copy
                With Sheets("fluxDE002").Range("A" & Sheets("fluxDE002").Range("A65535").End(xlUp).Row + 1)
                    .PasteSpecial Paste:=xlPasteAll
                    .PasteSpecial Paste:=xlPasteColumnWidths
                End With
                Application.CutCopyMode = False
            End Select
        End If
        Else
        'Traitement des doublons
        If Not IsEmpty(Cel) And _
        Cel.Offset(0, -3) = "aaa_aaa" And _
        (Cel.Offset(0, -1) = "DE001" Or Cel.Offset(0, -1) = "DE002") Then
        'Cel.Interior.ColorIndex = 3
            Range(Cells(Cel.Row, 1), Cells(Cel.Row, 9)).Copy
            With Sheets("doublons").Range("A" & Sheets("doublons").Range("A65535").End(xlUp).Row + 1)
                .PasteSpecial Paste:=xlPasteAll
                .PasteSpecial Paste:=xlPasteColumnWidths
            End With
            Application.CutCopyMode = False
        End If
        End If
    Next Cel
Set Unique = Nothing
End Sub

Mytå

Bonsoir

tester sur fichier original, un vrai bonheur!

45 000 lignes quand même

Merci Myta

Cordialement

Rechercher des sujets similaires à "trie donnees"