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

Résolu
Shaman96 Messages postés 21 Statut Membre -  
ccm81 Messages postés 11033 Statut Membre -
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.

Généré automatiquement par IA
sur la base des meilleures réponses
  1. DjiDji59430 Messages postés 4278 Date d'inscription   Statut Membre Dernière intervention   717
     
    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
  2. Yoyo01000 Messages postés 1720 Date d'inscription   Statut Membre Dernière intervention   168
     
    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. Shaman96 Messages postés 21 Statut Membre
       
      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. Yoyo01000 Messages postés 1720 Date d'inscription   Statut Membre Dernière intervention   168
       
      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. Shaman96 Messages postés 21 Statut Membre
       
      Ah! Merci pour l'éclaircissement!
      0
  3. Shaman96 Messages postés 21 Statut Membre
     
    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. Yoyo01000 Messages postés 1720 Date d'inscription   Statut Membre Dernière intervention   168
       
      As-tu essayé ma formule ?!
      0
  4. ccm81 Messages postés 11033 Statut Membre 2 434
     
    Bonjour à tous

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

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

      Merci, je teste immédiatement!
      0
    4. ccm81 Messages postés 11033 Statut Membre 2 434
       
      oui, le code de la macro est dans Module 1 (Alt-F11 pour y accéder)
      0
    5. Shaman96 Messages postés 21 Statut Membre
       
      Ok je ne connais pas le VBA... Comment est-ce que je pourrais l'appliquer sur ma feuille?
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. DjiDji59430 Messages postés 4278 Date d'inscription   Statut Membre Dernière intervention   717
     
    Bonjour,

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

    Crdlmt
    0
    1. Shaman96 Messages postés 21 Statut Membre
       
      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. DjiDji59430 Messages postés 4278 Date d'inscription   Statut Membre Dernière intervention   717
       
      Tu retires le A1& dans la formule !!
      0
    3. Shaman96 Messages postés 21 Statut Membre
       
      Merci, je teste ça et je vous reviens...
      0
  7. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    Bonjour,

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

    eric
    0
    1. Shaman96 Messages postés 21 Statut Membre
       
      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. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      =SI(GAUCHE(A2;5)="ANJ10";10+DROITE(A2;1);"")
      0
    3. Shaman96 Messages postés 21 Statut Membre
       
      Merci... Je teste et je vous reviens!
      0
    4. Shaman96 Messages postés 21 Statut Membre
       
      Merci, ça fonctionne!
      0
  8. Shaman96 Messages postés 21 Statut Membre
     
    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
  9. Shaman96 Messages postés 21 Statut Membre
     
    Voici l'intégralité des variables:

    https://www.cjoint.com/c/IBkwkxsogJI
    0
    1. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      Et ?
      =SIERREUR(SI(CHERCHE("ANJ10";A1);10+DROITE(A1;1));"")
      ?
      eric
      0
    2. Shaman96 Messages postés 21 Statut Membre
       
      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. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      Dit tout en détail parce que là on va y passer la semaine
      0
    4. Shaman96 Messages postés 21 Statut Membre
       
      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. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      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
  10. ccm81 Messages postés 11033 Statut Membre 2 434
     
    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. Shaman96 Messages postés 21 Statut Membre
       
      Merci, votre macro fait des merveilles... Elle règle 99% de mes problèmes...

      Merci infiniment pour votre temps et votre patience...
      0
  11. Shaman96 Messages postés 21 Statut Membre
     
    Merci a tous pour votre patience et votre temps... Mon problème est réglé...
    0
    1. ccm81 Messages postés 11033 Statut Membre 2 434
       
      De rien

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

      Cdlmnt
      0