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 SubMytå
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 SubMytå
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 SubMytå
Bonsoir
tester sur fichier original, un vrai bonheur!
45 000 lignes quand même
Merci Myta
Cordialement