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...

TooFatBoy

XLDnaute Barbatruc
ç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
Est-ce que le .Sort.... ne devrait pas être rattaché directement à ActiveSheet plutôt qu'à ActiveSheet.Rows ?
 

fhoest

XLDnaute Accro
Bonjour,
Est-ce que le .Sort.... ne devrait pas être rattaché directement à ActiveSheet plutôt qu'à ActiveSheet.Rows ?
Je n'ai aucun mérite si ça fonctionne mais en passant par ici je vois ta phrase et je pense que si c'est juste derrière ActiveSheet ça fonctionnera.
Bravo tout de même à vous tous pour ce code.
ou remettre directement devant comme ceci:
ActiveSheet.Sort.SortFields.Add(Range("B1:B25"), xlSortOnCellColor, xlAscending, , xlSortNormal).SortOnValue.Color = RGB(55, 86, 35)
Je répète pas de mérite si ça fonctionne, le Pouce bleu revient à

sylvanu

A+
 

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Bonjour à tous, ,

Merci pour vos message et vos efforts :)

@Marcel32 :
Est-ce que le .Sort.... ne devrait pas être rattaché directement à ActiveSheet plutôt qu'à ActiveSheet.Rows ?
J'ai tenté ça sans succès.

Je vais garder le code de sylvanu qui se rapproche de ce que je souhaite.
Merci sylvanu et merci à tous d'avoir été là pour moi;
Amicalement,
lionel :)
 

fhoest

XLDnaute Accro
Bonjour,
sur base des codes présent dans les différentes discussion et solution proposées voici un code pompé et retravailler comme tu le souhaites enfin je pense ??
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é
End With
.Sort.SortFields.Add(Range("B4:B" & .Range("a65536").End(xlUp).Row), _
xlSortOnCellColor, xlAscending, xlSortNormal).SortOnValue.Color = RGB(55, 86, 35)

End With
A+
 

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Bonsoir fhoest,
Merci pour ton codes :)

Je tri mes lignes sur les couleurs de la colonne L.
J'ai tenté ton code comme suit :
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é
End With
.Sort.SortFields.Add(Range("L4:L" & .Range("a65536").End(xlUp).Row), _
xlSortOnCellColor, xlAscending, xlSortNormal).SortOnValue.Color = RGB(55, 86, 35)
End With
ça ne beugue pas ... mais ça ne trie pas !
Peut-être ai-je mal fait ?
lionel,
 

fhoest

XLDnaute Accro
Bonsoir,
manipulation pour avoir le bon RGB d'une cellule sans le code:
1 sélectionner la cellule
2 clic droit, Format de cellule
3 Remplissage, puis autre couleur et personnalisées
4 le RGB correspond à la couleur actuelle de la cellule.
A+
 

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Bonjour fhoest, Marcel32, riton00, sylvanu, le Forum,
Bonne journée à toutes et à tous :)

@fhoest ; voir le fichier joint, j'ai pris le fichier de Sylvanu et j'y ai ajouté une feuille nommée Fhoest
J'ai modifié la couleur : pour le jaune "RGB(255, 255, 204)".
Feuille Sylvanu : ça tri,
Feuille Fhoest : ne fonctionne pas

Amicalement,
lionel,
 

Pièces jointes

  • Couleurs3.xlsm
    25.2 KB · Affichages: 4

fhoest

XLDnaute Accro
Bonjour,
avec un fichier ça va toujours mieux super..
en réalité tout est déjà dans le beau code de Sylvanu, il suffit d'une adaptation:
voici le code:
Sub TriCouleur2() 'Fhoest
Dim derniereLigne As Long
derniereLigne = ActiveSheet.Range("a65536").End(xlUp).Row

With ActiveSheet 'Feuil1 'CodeName
.Sort.SortFields.Clear
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é
End With
.Sort.SortFields.Add(.Range("B4:B" & derniereLigne), _
xlSortOnCellColor, xlAscending, , xlSortNormal).SortOnValue.Color = RGB(255, 255, 204)
.Sort.SetRange (.Range("B4:B" & derniereLigne))
.Sort.Apply
End With

Range("A1").Select
End Sub
il manquait simplement d'appliquer la mise en forme à la plage.
Bonne journée
 

Discussions similaires

Réponses
3
Affichages
550

Statistiques des forums

Discussions
311 725
Messages
2 081 939
Membres
101 844
dernier inscrit
pktla