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/
  • ... Serge
    • ... Gabriel
      • ... François Gatto
    • ... Jean Michel PIERRE
      • ... c c
        • ... c c
          • ... c c
            • ... Serge
              • ... lutch
                • ... christianwtd
                • ... christianwtd
              • ... RAZAFIMAHARO Manganiaina (Chargé d'études a ssocié) - CETE Est/Infra/DCS
                • ... yves dutrieux
                • ... RAZAFIMAHARO Manganiaina (Chargé d'études a ssocié) - CETE Est/Infra/DCS
                • ... yves dutrieux
                • ... Samuel Mounier (Liste CGO)
                • ... RAZAFIMAHARO Manganiaina (Chargé d'études a ssocié) - CETE Est/Infra/DCS

Répondre à