Mais si l'on désire avoir, dans une colonne voisine, les mêmes données qui se ré-agencent en ordre alphabétique automatiquement, au fur et à mesure qu'on rajoute des données dans la première, alors là, c'est plus ardu ==> la fonction RANG() est très bien pour cela, mais elle ne fonctionne qu'avec les nombres.
Je vous propose donc le procédé suivant, dont voici le cœur :
Code : Tout sélectionner
SOMMEPROD($A1>liste)
Comment ça fonctionne ?
- Ne pas oublier d'abord que SOMMEPROD() est une fonction matricielle, même si la validation se fait par Entrée :
- A1 est comparé au premier mot de la liste, s'il est supérieur (ce qui veut dire après, alphabétiquement), alors la comparaison retourne un 1 (=VRAI), sinon 0
- puis A1 est comparé au deuxième mot de la liste, la comparaison là aussi retourne 0 ou 1
- etc.
- SOMMEPROD() fera la somme de ces 0 et 1 ==> plus le mot dans A1 sera élevé alphabétiquement (plus proche de la fin du dictionnaire), plus la somme sera élevée : nous avons trouvé un indice de classement alphabétique, qui va de 0 à n.
- Nous avons utilisé la remarquable propriété le l'opérateur > qui accepte du texte aussi bien que des nombres !
Si, dans la liste de mots, il y a des doublons, il faudra aussi ajouter à l'indice une valeur de distinction (par exemple le n° de ligne/100).
Une mise en œuvre dans le fichier joint. Une autre récente.
Ajout : J'ai mis à jour le fichier en ajoutant deux autres méthodes, avec une gestion des vides et des doublons, données par gerard24 => merci Gérard ![]() Les explications sont dans le fichier. |
Jean-Louis