Microsoft 365 tri feuille

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Bonjour à toutes,
Je vous souhaite une belle journée :)

Je bute sur mon code de tri et je n'arrive pas à trouver le bon code
J'ai un code fait avec excel :
VB:
    ActiveWorkbook.Worksheets("Appels").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Appels").Sort.SortFields.Add(Range("J4:J10000"), xlSortOnCellColor, xlAscending, , xlSortNormal).SortOnValue.Color = RGB(55, 86, 35)
    With ActiveWorkbook.Worksheets("Appels").Sort
        .SetRange Range("A4:zz10000")
        .Header = xlGuess
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With

Je voudrais utiliser le code que m'avait donné job75 :
Code:
    With ActiveSheet 'Feuil1 'CodeName
    If .FilterMode Then .ShowAllData 'si la feuille est filtrée
    With .Rows("4:" & .Range("a65536").End(xlUp).Row)
        If .Row < 4 Then Exit Sub 'sécurité
        .Sort .Columns(1), xlAscending, Header:=xlNo
    End With
    End With
en y incluant le tri sur la couleur des cellules :
SortOnValue.Color = RGB(55, 86, 35)


Mais je n'y arrive pas :mad:
Pourriez-vous m'aider ?
(si besoin, je ferai un petit fichier test)
Un grand remerciement,
Amicalement,
lionel,
 
Dernière édition:
Solution
Oups!
Prenez cette PJ, dans le précédent la plage pour la couleur était fixe.
VB:
Sub TriCouleur()
    DL = ActiveWorkbook.Worksheets("Sheet1").Range("B65536").End(xlUp).Row
    
    ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add(Range("B4:B" & DL), _
        xlSortOnCellColor, xlAscending, , xlSortNormal).SortOnValue.Color = RGB(55, 86, 35)
    ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range("B4:B" & DL) _
        , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        
    
    Set Plage = ActiveWorkbook.Worksheets("Sheet1").Range("B4:B" & DL)
    With ActiveWorkbook.Worksheets("Sheet1").Sort
        .SetRange Plage...

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Lionel,
Que voulez vous colorez ?
A voir votre formule on peut supputer que vous voulez colorer la zone de tri, dans ce cas pourquoi ne pas faire simplement :
VB:
    With .Rows("4:" & .Range("a65536").End(xlUp).Row)
        If .Row < 4 Then Exit Sub 'sécurité
        .Sort .Columns(1), xlAscending, Header:=xlNo
        .Interior.Color = RGB(55, 86, 35)
    End With
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Re bonjour,
Un exemple en PJ issu de la doc MS.
Il tri déjà les cellules fond rouge, puis tri par ordre alpha dans les rouges, puis dans le reste avec :
VB:
Sub TriCouleur()
    Range("B1:B25").Select
    ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add(Range("B1:B25"), _
        xlSortOnCellColor, xlAscending, , xlSortNormal).SortOnValue.Color = RGB(255, 0 _
        , 0)
    ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range("B1:B25") _
        , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Sheet1").Sort
        .SetRange Range("B1:B25")
        .Header = xlGuess
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    Range("A1").Select
End Sub
Si c'est cela que vous vouliez faire. 😂
 

Pièces jointes

  • Couleurs.xlsm
    18.4 KB · Affichages: 10

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Merci sylvanu pour ton retour :)

Effectivement, j'avais aussi ce code qui fonctionne et qui fait le travail.
Mais je souhaite faire la même chose sous la forme du code de Gérard :
VB:
    With ActiveSheet 'Feuil1 'CodeName
    If .FilterMode Then .ShowAllData 'si la feuille est filtrée
    With .Rows("4:" & .Range("a65536").End(xlUp).Row)
        If .Row < 4 Then Exit Sub 'sécurité
        .Sort .Columns(1), xlAscending, Header:=xlNo
    End With
    End With

En remplaçant : .Sort .Columns(1), xlAscending, Header:=xlNo
par le code Microsoft : .Sort.SortFields.Add(Range("B1:B25"), xlSortOnCellColor, xlAscending, , xlSortNormal).SortOnValue.Color = RGB(255, 0 , 0)

Est-ce possible à ton avis ?
lionel :)
 

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Re Marcel,

ça Beug :
VB:
 With ActiveSheet 'Feuil1 'CodeName
    If .FilterMode Then .ShowAllData 'si la feuille est filtrée
    With .Rows("4:" & .Range("a65536").End(xlUp).Row)
        If .Row < 4 Then Exit Sub 'sécurité
        .Sort.SortFields.Add(Range("B1:B25"), xlSortOnCellColor, xlAscending, , xlSortNormal).SortOnValue.Color = RGB(55, 86, 35)
    End With
    End With
1620750712693.png

lionel :)
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Re bonsoir,
Un ultime et dernier essai mixant les deux codes :
VB:
Sub TriCouleur()
    ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add(Range("B4:B28"), _
        xlSortOnCellColor, xlAscending, , xlSortNormal).SortOnValue.Color = RGB(55, 86, 35)
    ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range("B4:B28") _
        , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        
    DL = ActiveWorkbook.Worksheets("Sheet1").Range("B65536").End(xlUp).Row
    Set Plage = ActiveWorkbook.Worksheets("Sheet1").Range("B4:B" & DL)
    With ActiveWorkbook.Worksheets("Sheet1").Sort
        .SetRange Plage
        .Header = xlGuess
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    Range("A1").Select
End Sub
 

Pièces jointes

  • Couleurs2.xlsm
    19.3 KB · Affichages: 5

sylvanu

XLDnaute Barbatruc
Supporter XLD
Oups!
Prenez cette PJ, dans le précédent la plage pour la couleur était fixe.
VB:
Sub TriCouleur()
    DL = ActiveWorkbook.Worksheets("Sheet1").Range("B65536").End(xlUp).Row
    
    ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add(Range("B4:B" & DL), _
        xlSortOnCellColor, xlAscending, , xlSortNormal).SortOnValue.Color = RGB(55, 86, 35)
    ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range("B4:B" & DL) _
        , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        
    
    Set Plage = ActiveWorkbook.Worksheets("Sheet1").Range("B4:B" & DL)
    With ActiveWorkbook.Worksheets("Sheet1").Sort
        .SetRange Plage
        .Header = xlGuess
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    Range("A1").Select
End Sub
 

Pièces jointes

  • Couleurs3.xlsm
    19.6 KB · Affichages: 9

Discussions similaires

Réponses
3
Affichages
574

Statistiques des forums

Discussions
312 185
Messages
2 086 012
Membres
103 093
dernier inscrit
Molinari