Le 31/08/10 17:45, Serge a écrit :
Grand merci à tous !
En réalité, c'est plus compliqué parce que les libellés peuvent
être divers (il y en a même du type : Le nombre d'occurrence
est compris entre ... et ...).
Donc je retiens l'idée de récupérer les formules "à la main" et de
faire ce que j'ai à faire.
Par contre, vos autres suggestions m'ont fait découvrir des
fonctions dont je n'avais pas idée.
Ce forum est une mine.
Je regrette seulement de n'avoir à ce jour jamais pu venir en aide.
Bonjour,
problème intrigant, donc intéressant.
Je m'y suis collé et voici une méthode que je propose. C'est un premier
jet, améliorable sans doute. Il y a des gisements de simplification.
Sous réserve de viabilité "tous usages", je compte bien me servir de ça
pour nettoyer certains fichiers "boiteux" qu'on me demande régulièrement
d'exploiter comme source de données.
Données du problème, telles que je les ai comprises
- les expressions varient arbitrairement,
- les valeurs sont de longueur variable, mais se trouvent toujours en
dernière position dans la cellule
Données du tableau de test : libellé+valeur
cellules A1:A7
mot1 mot2 mot3 mot4 mot5 mot6 MOT7 123
mot1 mot2 mot3 mot4 mot5 mot6 MOT7 123456789
mot1 mot2 mot3 mot4 mot5 mot6 MOT7 125
mot1 mot2 mot3 mot4 126
mot1 mot2 mot3 mot4 mot5 mot6 MOT7 127
mot1 mot2 mot3 mot4 mot5 mot6 128
mot1 mot2 mot3 DERNIERMOT
En B1, la formule =DROITE(A1;NBCAR(A1)-CHERCHE("-";SUBSTITUE(A1;"
";"-";NBCAR(A1)-NBCAR(SUBSTITUE(A1;" ";"")));1))
résultat : 123
En B7, la formule =DROITE(A7;NBCAR(A7)-CHERCHE("-";SUBSTITUE(A7;"
";"-";NBCAR(A7)-NBCAR(SUBSTITUE(A7;" ";"")));1))
résultat : DERNIERMOT
Explications sommaires
SUBSTITUE(A1;" ";"")
remplace toutes les espaces de la cellule A1
NBCAR(A1)-NBCAR(SUBSTITUE(A1;" ";"")
calcule la différence du nombre de caractères avec et sans espaces, ce
qui donne le rang (occurrence) de la dernière espace
SUBSTITUE(A1;" ";"-";NBCAR(A1)-NBCAR(SUBSTITUE(A1;" ";"")
remplace cette dernière espace, donc située avant le dernier mot
CHERCHE("-"
cherche la position exacte de ce "-",
par la soustraction
[nombre de caractères total]-[position du "-"]
on obtient le nombre de caractères à partir de la droite à extraire de
l'expression initiale pour ne récupérer que le dernier mot de la
cellule, c'est-à-dire la valeur.
J'espère être encore compréhensible malgré l'heure tardive.
C_Lucien
/Pourvu que ça serve/