Extraction d'un nombre d'une cellule alphanumérique plus addition

Résolu
Bonjour,

Je travaille sur un projet personnel et je frappe un mur:

J'ai des cellules de formats standard dans un tableau
En simplifiant, chaque cellule peut avoir une des valeurs suivante: ANJ10, ANJ10+2 et ANJ10+5

Je désire extraire les nombres de la cellule et, si possible, faire l'addition suite à l'extraction.
Ainsi donc, ANJ10 donnerait un résultat 10, ANJ10+2 donnerait un résultat 12 et ANJ10+5 donnerait un résultat de 15

Merci de votre attention

10 réponses

Résumé de la discussion

Extraction d’un nombre dans des cellules contenant ANJ10, ANJ10+2 ou ANJ10+5 et l’addition du nombre extrait pour obtenir 10, 12 ou 15 selon le cas. Plusieurs formules Excel ont été proposées, notamment une solution qui vérifie les cinq premiers caractères et applique 10+DROITE(A2;1) afin d’obtenir 10, 12 ou 15 selon ANJ10, ANJ10+2 ou ANJ10+5. D’autres contributions proposent des versions équivalentes avec SI imbriqués ou des variantes adaptées à des préfixes différents, et certains échanges évoquent des tests et des limites liées au formatage des cellules. En cas de besoin, la méthode peut être adaptée pour gérer d’autres préfixes ou longueurs, par exemple en combinant GAUCHE et DROITE ou des formules plus générales.

Bobot (l’IA à votre service)
  1. Bonjour,

    C'est trop simplifié !
    Il y a toujours 3 lettres avant le premier chiffre ?

    Un fichier (test) mis sur https://www.cjoint.com/ permettait de répondre plus précisément à ta question et avec des exemples exhaustifs.

    Crdlmt
    0
    1. Bonsoir,
      Si j'ai bien compris ta requête :

      =SI($A1="ANJ10";"10";"")&SI($A1="ANJ10+2";"12";"")&SI($A1="ANJ10+5";"15";"")

      Formule à mettre dans la colonne où tu veux que se situe le résultat.

      $A1 de la formule est la colonne A et la cellule 1 si les données que tu veux transformer se situent dans cette colonne sinon, à toi de modifier.

      Formule à tirer vers le bas.

      Merci de préciser si je réponds à ta demande !
      0
      1. Merci, je suis en train de la tester... Ça semble marcher pour le moment... Mon tableau produit une erreur occasionnellement mais c'est probablement une erreur de formatage...

        Une petite question: A quoi sert le "$"? J'essaie de comprendre la logique derrière la formule.

        Merci
        0
      2. Le $ sert à figer soit la colonne soit la ligne.
        Quand tu "tires" une formule avec par exemple $A$1 dans celle-ci :
        si tu tires à droite ça t'évite de te retrouver avec B1 dans celle-ci
        si tu tires vers le bas, ça t'évite de te retrouver avec A2 dans celle-ci

        Ce $ peut s'avérer très pratique dans certaines situations !
        0
      3. Ah! Merci pour l'éclaircissement!
        0
    2. Il y a effectivement toujours trois lettres avant le premier chiffre.

      Bien entendu, le résultat (10, 12 ou 15) sera reporté dans une autre cellule...

      Ex: Si A1 = ANJ10+5 alors B1 = 15

      J'ai testé avec =SI(DROITE(A1;1)="5";15;10) mais ceci me donne des faux résultats de 10
      0
      1. As-tu essayé ma formule ?!
        0
    3. Bonjour à tous

      Avec une petite fonction personnalisée (macro)
      https://www.cjoint.com/c/IBjtBb2KIzB

      Cdlmnt
      0
      1. Quand j'essaie de cliquer sur le lien je tombe sur une page 404... :(
        0
      2. Essaies celui-là
        https://mon-partage.fr/f/NPHpcaVf/
        0
      3. C'est si simple que ça? =EVALUE et c'est tout?

        Merci, je teste immédiatement!
        0
      4. oui, le code de la macro est dans Module 1 (Alt-F11 pour y accéder)
        0
      5. Ok je ne connais pas le VBA... Comment est-ce que je pourrais l'appliquer sur ma feuille?
        0
    4. Bonjour,

      A l'ancienne !
      https://mon-partage.fr/f/VzJ26Xad/

      Crdlmt
      0
      1. Merci pour le tuto, je le garde pour usage ultérieur...

        Cependant, j'ai besoin du résultat dans une seconde cellule alors que votre solution la rapporte à la cellule initiale.

        Donc:
        Si A1 = ANJ10 B1 = 10
        Si A1 = ANJ10 + 2 B1 = 12
        Si A1 = ANJ10 + 5 B1 = 15
        0
      2. Tu retires le A1& dans la formule !!
        0
      3. Merci, je teste ça et je vous reviens...
        0
    5. Contributeur
      Bonjour,

      au plus simple :
      =10+DROITE(A2;1)

      eric
      0
      1. Simple et élégant... J'aime bien...
        Si je comprends bien, dans le cas ou A2 = ANJ10 alors le résultat serait 10+0 donc 10, c'est ça?

        Est-ce que l'on pourrait vérifier si la cellule contiens une valeur à priori?

        Genre: si A1 = ANJ10 alors B1 =10+DROITE(A1;1) sinon ne rien faire
        0
      2. Contributeur
        =SI(GAUCHE(A2;5)="ANJ10";10+DROITE(A2;1);"")
        0
      3. Merci... Je teste et je vous reviens!
        0
      4. Merci, ça fonctionne!
        0
    6. Merci à tous pour vos réponses... Vous m'avez tous apporté des éclairage qui me seront très utile

      Je vais prendre la solution de eriiic:

      =SI(GAUCHE(A2;5)="ANJ10";10+DROITE(A2;1);"0")
      0
      1. Voici l'intégralité des variables:

        https://www.cjoint.com/c/IBkwkxsogJI
        0
        1. Contributeur
          Et ?
          =SIERREUR(SI(CHERCHE("ANJ10";A1);10+DROITE(A1;1));"")
          ?
          eric
          0
        2. Et je remplace le ANJ10 pour une autre variable le cas échéant, c'est ça?

          Donc:
          =SIERREUR(SI(CHERCHE("ANJ10";A1);10+DROITE(A1;1));"")
          =SIERREUR(SI(CHERCHE("BGJ10";A1);10+DROITE(A1;1));"")
          =SIERREUR(SI(CHERCHE("MMJ10";A1);10+DROITE(A1;1));"")
          etc... ?

          Est-ce que cette formule pourrait chercher dans un tableau?

          ex:

          =SIERREUR(SI(CHERCHE("ANJ10";A1:P25);10+DROITE(A1;1));"")
          0
        3. Contributeur
          Dit tout en détail parce que là on va y passer la semaine
          0
        4. On oublie l'histoire du tableau, ce n'est pas une bonne idée anyway...

          Je peux savoir de quoi est composé la formule?
          Que font les SIERREUR et CHERCHE svp? J'essaie de comprendre comment vous en êtes venu a cette formulation.
          0
        5. Contributeur
          C'est très bien expliqué dans l'aide excel, je ne ferai pas mieux.
          Regarde pour chaque fonction que tu ne connais pas et revient si ça t'échappe toujours.
          Sinon pour en grouper plusieurs :
          =SI(SIERREUR(CHERCHE("ANJ10";A1);0)+SIERREUR(CHERCHE("BGJ10";A1);0+SIERREUR(CHERCHE("MMJ10";A1);0));10+DROITE(A1;1);"")


          ou si c'est tous ceux avec J10 :
          =SIERREUR(SI(CHERCHE("J10";A1);10+DROITE(A1;1));"")

          eric
          0
      2. Macro modifiée
        https://www.cjoint.com/c/IBln5xdyzRB

        RQ1. S'il y a d'autres signes d'opération autres que "+", il faudra modifier ....
        RQ2. merci à eric pour la rectification fichier avec extension .xlsm

        Cdlmnt
        0
        1. Merci, votre macro fait des merveilles... Elle règle 99% de mes problèmes...

          Merci infiniment pour votre temps et votre patience...
          0
      3. Merci a tous pour votre patience et votre temps... Mon problème est réglé...
        0
        1. De rien

          Si c'est fini, peux tu mettre le sujet à résolu (en haut à droite, la roue dentée)

          Cdlmnt
          0