Extraction d'un nombre d'une cellule alphanumérique plus addition [Résolu] - Excel

A voir également:Extraction d'un nombre d'une cellule alphanumérique plus additionDefinir nombre de caractere cellule excel - Forum - Excel Limiter nombre de caractere cellule excel ✓ - Forum - Excel Le nombre dans cette cellule est au format texte ou précédé d'une apostrophe ✓ - Forum - Excel Comment faire pour limiter le nombre de caractères dans excel - Forum - Excel Comment enlever les zéro devant un nombre dans une cellule ✓ - Forum - Excel

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

Forum

A voir également:Extraction d'un nombre d'une cellule alphanumérique plus additionDefinir nombre de caractere cellule excel - Forum - Excel Limiter nombre de caractere cellule excel ✓ - Forum - Excel Le nombre dans cette cellule est au format texte ou précédé d'une apostrophe ✓ - Forum - Excel Comment faire pour limiter le nombre de caractères dans excel - Forum - Excel Comment enlever les zéro devant un nombre dans une cellule ✓ - Forum - Excel

Web: www.shapebootstrap.net

10 réponses

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

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

Reply

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

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 !

Reply
réponses:
  • auteur

    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

  • auteur

    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 !

  • auteur

    Ah! Merci pour l'éclaircissement!

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

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

Reply
réponses:
  • auteur

    As-tu essayé ma formule ?!

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Bonjour à tous

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

Cdlmnt

Reply
réponses:
  • auteur

  • auteur

    Quand j'essaie de cliquer sur le lien je tombe sur une page 404... :(

  • auteur

    Essaies celui-là
    https://mon-partage.fr/f/NPHpcaVf/

  • auteur

    C'est si simple que ça? =EVALUE et c'est tout?

    Merci, je teste immédiatement!

  • auteur

    oui, le code de la macro est dans Module 1 (Alt-F11 pour y accéder)

  • auteur

    Ok je ne connais pas le VBA... Comment est-ce que je pourrais l'appliquer sur ma feuille?

  • auteur

    1. Alt-F11
    2. Insertion/Module pour créer le Module 1
    3. Tu copies tout le code dans ce module
    3. Retour à la feuille
    4. tu appliques
    5. Il te faudra enregistrer le fichier avec le type .xlsx (Fichier/enregistrer sous/ type ... prenant en charge les macros)

    RQ. si le nombre de lettres au début est différent de 3 il faudra modifier le code, tu dis.

    Cdlmnt

  • auteur

    Merci, je vais définitivement y jeter un coup d’œil...

  • auteur

    Petite étourderie de ccm :
    5. Il te faudra enregistrer le fichier avec le type .xlsm (Fichier/enregistrer sous/ type ... prenant en charge les macros)
    et non .xlsx

  • auteur

    Bonjour, je lie une copie de toutes les variables possible.

    https://www.cjoint.com/c/IBkwkxsogJI

    Votre macro est extraordinaire mais je peine a faire tout les changements.

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Bonjour,

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

Crdlmt

Reply
réponses:
  • auteur

    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

  • auteur

    Tu retires le A1& dans la formule !!

  • auteur

    Merci, je teste ça et je vous reviens...

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Bonjour,

au plus simple :

=10+DROITE(A2;1)

eric

Reply
réponses:
  • auteur

    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

  • auteur

    =SI(GAUCHE(A2;5)="ANJ10";10+DROITE(A2;1);"")

  • auteur

    Merci... Je teste et je vous reviens!

  • auteur

    Merci, ça fonctionne!

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

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")

Reply

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Voici l'intégralité des variables:

https://www.cjoint.com/c/IBkwkxsogJI

Reply
réponses:
  • auteur

    Et ?

    =SIERREUR(SI(CHERCHE("ANJ10";A1);10+DROITE(A1;1));"")
    ?
    eric

  • auteur

    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));"")

  • auteur

    Dit tout en détail parce que là on va y passer la semaine

  • auteur

    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.

  • auteur

    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

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

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

Reply
réponses:
  • auteur

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

    Merci infiniment pour votre temps et votre patience...

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Merci a tous pour votre patience et votre temps... Mon problème est réglé...

Reply
réponses:
  • auteur

    De rien

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

    Cdlmnt

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed