Filtrer plusieurs selections sur une colonne
Bonjour à tous,
Je viens vers vous car je rencontre un problème sur un travail que je souhaiterais automatiser.
Pour vous résumer, chaque mois, je recois de la DATA sur les opérations réalisées, sachant que c'est un fichier externe, il doit être retravaillé afin d'être présentable. Après avoir automatisé les premières donnés, je me retrouve avec un fichier dans l'onglet DATA
J'ai reussi à créer un VBA afin d'automatiser tout ça. Le dernier problème est le suivant :
dans la colonne 8 "Fee Coin", les donnés doivent être triées par ordre alphabétique, et par Market (Colonne 2)
L'objectif est le suivant :
dans un premier temps, filtrer le market, par ordre alphabétique, et par la suite, filtrer par Fee coin.
Detail important, à chaque fin de Feecoin, il doit y avoir un saut de 3 lignes, afin de laisser l'espace (et remettre le texte en jaune sur les cells R1C10: R1C12)
Cela va faire une semaine que j'essaye de trouver une solution, mais je ne sais pas filtrer plusieurs éléments dans une colonne avec VBA ...
Au passage, le PJ est un exemple, l'onglet DATA est le résultat final (Il manque juste ma demande de filtrage)
Merci à tous ceux qui liront ce message!
Hello,
J'ai pas compris ton histoire de 3 lignes ...
mais pour trier les deux colonnes, voici :
Sub Macro1()
'
' Macro1 Macro
'
'
ActiveWorkbook.Worksheets("DATA").AutoFilter.Sort.SortFields.Clear
ActiveWorkbook.Worksheets("DATA").AutoFilter.Sort.SortFields.Add2 Key:=Range( _
"B1:B1001"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets("DATA").AutoFilter.Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
ActiveWorkbook.Worksheets("DATA").AutoFilter.Sort.SortFields.Clear
ActiveWorkbook.Worksheets("DATA").AutoFilter.Sort.SortFields.Add2 Key:=Range( _
"H1:H1001"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets("DATA").AutoFilter.Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End SubHello,
Merci pour ton retour !abvo
Ce n'est pas exactement ce que j'attendais..
En effet, je voudrais que la colonne 2 "Market" garder son tri alphabétique, et dans un deuxième temps, avoir un filtre pour chaque sélection de la colonne 8 en orange (Séparé par deux sauts de ligne)
Comme dans l'écran ci-dessous, l'idée est qu'à chaque saut de ligne, la colonne en orange soit filtrée par ordre alphabétique. En fait, chaque sélection doit avoir son propre tri, qui est séparé par un saut de ligne.
Voici le fichier, qui permet d'avoir une meilleure vision
Merci encore ! :)
Bonjour à tous !
Une contribution (en espérant avoir correctement appréhendé le besoin....) via Power Query (nativement intégré à votre Excel) :
Bonjour !
Merci beaucoup pour cette réponse !Cependant, il s'agit d'un fichier d'exemple, et chaque semaine, je reçois de nouvelles données, donc cela varie beaucoup en fonction des lignes. Je me demandais s'il existait une formule VBA.
Je ne suis pas assez bon sur Power Query, je ne sais pas si elle peut être adaptée sur chaque fichier que je vais traiter.
Bonjour à tous de nouveau !
Cependant, il s'agit d'un fichier d'exemple, et chaque semaine, je reçois de nouvelles données, donc cela varie beaucoup en fonction des lignes. Je me demandais s'il existait une formule VBA.
Je ne suis pas assez bon sur Power Query, je ne sais pas si elle peut être adaptée sur chaque fichier que je vais traiter.
Lire, transformer et mettre à la disposition d'Excel sont les fonctions premières de cet outil. Alors oui.... Power Query est particulièrement adapté pour cette tâche.
Vous ne maîtrisez pas Power Query ? Il n'est jamais trop tard pour apprendre. La requête comporte sept lignes ! Fantastique non ?
Oui c'est une très bonne réponse, cela dit, mais il ne convient pas une fois de plus, pour être utilisée par la suite.
L'idéal de VBA, serait d'avoir un code, qui pourrait être importé sur chaque CSV, afin d'avancer rapidement dans le traitement
Bonjour à tous de nouveau !
Oui c'est une très bonne réponse, cela dit, mais il ne convient pas une fois de plus, pour être utilisée par la suite.
L'idéal de VBA, serait d'avoir un code, qui pourrait être importé sur chaque CSV, afin d'avancer rapidement dans le traitement
Votre message démontre que vous ne percevez pas, par méconnaissance, l'intérêt de Power Query.
Je ne peux que vous inviter à corriger cet a priori fautif.
Si vous êtes plus à l'aise avec un code VBA, poursuivez dans cette voie. Mais ne dites pas l'inverse de ce que pourquoi Power Query est fait.
Étant plus à l'aise avec VBA, c'était dans mon intérêt de demander un code comme celui-ci. Bien sûr, je vais me pencher sur Power Query ! Mais étant dans l'urgence, un code VBA, ainsi qu'un import automatique de module aurait été plus pratique pour moi ! Sachant que ce fichier est déjà complété par 3 autres modules VBA, c'est pourquoi j'ai voulu continuer sur VBA, afin de pouvoir tout regrouper en un bouton
Hello,
Voici :
Sub InsertRow()
Dim lngRow&, i&
Dim strMarket$
lngRow& = Worksheets("DATA").Cells(Rows.Count, "B").End(xlUp).Row
With Worksheets("DATA").AutoFilter.Sort
With .SortFields
.Clear
.Add2 Key:=Range("B1:B" & lngRow&), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
End With
.Header = xlYes
.Apply
With .SortFields
.Clear
.Add2 Key:=Range("H1:H" & lngRow&), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
End With
.Header = xlYes
.Apply
End With
For i = lngRow& To 3 Step -1
strMarket$ = Worksheets("DATA").Cells(i, 2)
If Worksheets("DATA").Cells(i, 2).Offset(-1) <> strMarket$ Then Rows(i).Insert: Rows(i).Insert
Next i
End Sub