Effectuer un tri spécial
On peut parfois être obligé d'adopter une saisie particulière de données qui nous empêche par la suite de trier dans un ordre alphanumérique...Par exemple :
Il nous faut malgré tout se fixer une constante. Ici j'ai choisi le caractère . (point). Pour parvenir à nos fins, nous imbriquerons deux formules.
La première est =STXT(texte;no_départ;nb_car) ou pour la version anglaise =MIDB(texte,no_départ,nb_octets).
- "texte" sera l'adresse de la cellule à traiter
- "no_départ" est la position à partir de laquelle on va extraire les données qui nous intéressent
- "nb_car" définit la longueur de la chaîne de caractère extraite
Nous pourrions donc avoir comme formule =MIDB(A1;3;4) ce qui extrait 4 caractères à partir de la 3ème position de la chaîne contenue dans la cellule A1.
Seulement dans le cas qui nous occupe, ce n'est pas suffisant,il nous faut identifier un caractère spécifique. Nous allons avoir recours à la formule =TROUVE(texte_cherché;texte;no_départ) ou à la formule CHERCHE(texte_cherché;texte;no_départ). Je pense qu'il n'est point besoin d'explications supplémentaires pour comprendre, Il faut juste savoir que ces formules nous donnent un chiffre qui pourra nous être utile en combinaison avec la formule précédente....Si vous souhaitez de plus amples renseignements, je vous renvois à l'aide Excel qui sur ces deux formules est claire
Voici donc ce que l'on peut obtenir (il faut recopier cette formule dans l'entièreté de la colonne)
Nous allons maintenant automatiser le tri du tableau, car même si nous ajoutons des données dans la colonne C, le tableur réagira comme base de données et déplacera donc toute la ligne...Pour réaliser l'automation, nous plaçons le code sur l'événement changement dans la sélection active (généralement, la cellule). Lançons VBE et entrons le code suivant:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error Resume Next
Selection.Sort Key1:=Range("B1"), Order1:=xlAscending, Header:=xlNo, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
End Sub
Il nous reste à cacher la colonne B contenant la formule,non seulement parce qu'elle est un peu disgracieuse avec ces #VALEUR! (qui apparaissent tant que la colonne A n'est pas remplie) mais aussi pour la protéger d'un effacement
Nous obtenons en final...Remarquez que le nouveau venu "N.Cabotin" est venu se placer en position correcte dès que la saisie fût validée
Télécharger le fichier exemple TriAutoListeSpec