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

Microsoft 365 tri feuille

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

TooFatBoy

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

Usine à gaz

XLDnaute Barbatruc
Bonjour riton00, le Forum,
Bonne journée à toutes et à toutes
Merci riton00 pour ton code, ça semble très bien
Je teste plus avant dans mon fichier de travail dès que j'ai un moment et je reviendrai te dire,
lionel
 

Usine à gaz

XLDnaute Barbatruc
Re-Bonjour riton00,
Encore merci pour ton code
ça fonctionne bien.
Toutefois dans mon fichier, il n'est pas évident d'ajouter une col et de la supprimer ensuite.
Mais c'est aussi une bonne solution.
Bonne journée
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 ??
A+
 

Usine à gaz

XLDnaute Barbatruc
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,
attention est ce bien le bon RGB ?
RGB(55, 86, 35), on ne sait jamais.
faire un test en mettant les cellules au préalable avec Ce RGB pour test et ensuite faire le test inverse du code.
 

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
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:
il manquait simplement d'appliquer la mise en forme à la plage.
Bonne journée
 

Discussions similaires

Réponses
8
Affichages
404
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…