Microsoft 365 tri feuille

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 !

Usine à gaz

XLDnaute Barbatruc
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 😡
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...
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
 
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

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 🙂
 
La ligne qui tri les couleurs n'est pas dans le With End with mais avant. C'est la ligne :
VB:
ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add(Range("B1:B25"), _
        xlSortOnCellColor, xlAscending, , xlSortNormal).SortOnValue.Color = RGB(255, 0 _
        , 0)
 
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 🙂
 
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

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

- 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
17
Affichages
877
Réponses
11
Affichages
712
Réponses
6
Affichages
925
Retour