Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

VBA- Trier avec multicritères

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Arnaud81

XLDnaute Junior
Bonjour,

Dans un fichier Excel, j'ai trois onglets :

  • Un onglet "Données sources"
  • Un onglet "Param"
    1. Colonne A : la liste des participants
    2. Colonne B : le numéro de l'atelier
    3. Colonne C : la date de l'atelier
    4. Colonne D : l'heure de l'atelier (format 00:00)
  • Un onglet "Par intervenants"

Dans l'onglet "données sources", je saisie les dates, participants, les lieux... et via VBA je renseigne plusieurs autres onglets (plusieurs autres onglets non détaillés ici) dont l'onglet "Par participants". Dans cet onglet, je rapatrie les données sources et les réorganise par participants (numéro de l'ateliers, dates, heures,...) à partir de la cellule B2 (pour "données sources" et "par intervenants")

J'utilise actuellement la macro suivante qui me fait le tri par intervenant :

Sub Listing()


Sheets("Param").Select

Lfin1 = Cells(1, "A").End(xlDown).Row
Cfin1 = 1
tab1 = Range(Cells(2, "A"), Cells(Lfin1, Cfin1)).Value
Lfin1 = Lfin1 - 1


Sheets("Données sources").Select

Lfin4 = Cells(2, "B").End(xlDown).Row
Cfin4 = Cells(2, "B").End(xlToRight).Column
tab4 = Range(Cells(3, "B"), Cells(Lfin4, Cfin4)).Value
Lfin4 = Lfin4 - 2

tot1 = 2


Sheets("Par intervenants").Select
'par intervenants


For i = 1 To Lfin1
For j = 1 To Lfin4

If tab1(i, 1) = tab4(j, 10) Then
tot2 = tot2 + 1
For w = 1 To Cfin4 - 1
Cells(tot2, w + 1) = tab4(j, w)
Next w
End If

Next j
Next i

For i = tot2 + 2 To 600
For w = 1 To Cfin4 - 1
Cells(tot2 + 1, w + 1) = ""
Next w
Next i

tot3 = 2


Je souhaiterai que ce tri soit fait sur plusieurs échelons : par intervenant, puis par date, puis par heure. Et je sèche...
Si quelqu'un à une idée?
 
Re : VBA- Trier avec multicritères

J'ai trouvé une solution barbare mais qui fonctionne

Je rajoute un Excel run avec la macro suivante

Sub Trier_inter()
'
'
Application.ScreenUpdating = False
'
Range("B2:K600").Select

ActiveWorkbook.Worksheets("Par intervenants").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Par intervenants").Sort.SortFields.Add Key:=Range( _
"K3:K600"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
ActiveWorkbook.Worksheets("Par intervenants").Sort.SortFields.Add Key:=Range( _
"G3:G600"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
ActiveWorkbook.Worksheets("Par intervenants").Sort.SortFields.Add Key:=Range( _
"H3:H600"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets("Par intervenants").Sort
.SetRange Range("B2:K600")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub

Merci
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
705
Réponses
2
Affichages
185
Réponses
4
Affichages
581
Réponses
8
Affichages
647
Réponses
8
Affichages
270
  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
370
Réponses
10
Affichages
533
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…