TrierAutoListeSpec

Retour vers Excel

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

FIN