XL 2010 tri date avec la formule =DatSem(B$1;B3;C3)

shitoryu

XLDnaute Occasionnel
Bonsoir,
j'ai une colonne qui génère automatiquement la date dans une colonne : =DatSem(B$1;B3;C3); =DatSem(B$1;B4;C4); etc.
Cela donne les dates : lundi 28 septembre 2020, mardi, etc.

Tout fonctionne bien sauf que je n'arrive pas à faire le tri par date, le menu déroulant ne me propose que le choix A-Z ou Z-A ou part contenu.

J'ai essayé de transformer le format du contenu des cellules mais ça ne marche pas.

Une idée ?
En vous remerciant,
S.
 

goube

XLDnaute Impliqué
Bonjour,

Avec du VBA cela reste possible.
VB:
Sub Tri()

    ActiveSheet.Unprotect
    
    Range("Tableau1[Colonne1]").Select
    ActiveWorkbook.Worksheets("Feuil1").ListObjects("Tableau1").Sort.SortFields. _
        Clear
    ActiveWorkbook.Worksheets("Feuil1").ListObjects("Tableau1").Sort.SortFields. _
        Add2 Key:=Range("E5"), SortOn:=xlSortOnValues, Order:=xlAscending, _
        DataOption:=xlSortTextAsNumbers
    With ActiveWorkbook.Worksheets("Feuil1").ListObjects("Tableau1").Sort
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .Apply
    End With
    
    ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
        
End Sub

Cordialement.
 

shitoryu

XLDnaute Occasionnel
cool, merci beaucoup !
L'objet est que le tri soit possible pour chacune des colonnes et que la saisie de la date dans la colonne D soit verrouillée pour les utilisateurs (le tableau sera partagé).
j'ai fait quelques essais, mais je n'y arrive pas.
Merci à vous !
 

Pièces jointes

  • Calendrier des activités (2020-21) MAJ 08 janvier 2020.xlsm
    289.2 KB · Affichages: 11

shitoryu

XLDnaute Occasionnel
merci pour votre temps.
j'ai essayé, cela m'indique "erreur d'exécution 438", j'ai lancé le débogage mais c'est resté en erreur.
1601477655604.png
 

goube

XLDnaute Impliqué
re,
la macro a été écrite avec l'enregistreur de macro. Essaie sur ton poste pour voir si la syntaxe est la même.

VB:
 ActiveWorkbook.Worksheets("2020 (janv-juillet)").ListObjects("Tableau1").Sort. _
        SortFields.Clear
    ActiveWorkbook.Worksheets("2020 (janv-juillet)").ListObjects("Tableau1").Sort. _
        SortFields.Add2 Key:=Range( _
        "Tableau1[[#All],[Ne pas écrire la date" & Chr(10) & "(ne pas modifier la formule)]]"), _
        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortTextAsNumbers
    With ActiveWorkbook.Worksheets("2020 (janv-juillet)").ListObjects("Tableau1"). _
        Sort
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .Apply
    End With
Cordialement.
 

goube

XLDnaute Impliqué
re,

Une version modifiée, avec une formule à la place de la fonction et une activation du tri au changement de valeur dans la colonne C (C3:C498)
Cordialement.
 

Pièces jointes

  • Calendrier des activités (2020-2021) MAJ 08 janvier 2020.xlsm
    294.1 KB · Affichages: 5

shitoryu

XLDnaute Occasionnel
merci encore ! très bonne idée pour la colonne C, parfait.
par contre si je comprends bien, il faut être en lecture seule pour que la colonne D ne soit pas modifiable. Par contre le tri à partir de la cellule D2 est inopérante dans ce cas. Je m'y prends mal ?
 

goube

XLDnaute Impliqué
re,
Je ne comprend pas le sens de ta question, les cellules D3 : D498 sont verrouillées.
le verrouillage n'est effectif qu'à partir du moment où la protection de la feuille est activée.
Onglet Révision, Protéger, Ôter la protection de la feuille ou Protéger la feuille.
La macro tri retire la protection, fait le tri et remet la protection.
Cordialement.
 

Discussions similaires

Statistiques des forums

Discussions
312 084
Messages
2 085 194
Membres
102 811
dernier inscrit
caroline29260