Récupérer une valeur entre crochet

Bonjour à tous,

Je souhaiterai savoir comment récupérer une information se trouvant entre crochet.

J'ai une cellule A1 --> 10.10.10.[20-60] et je souhaiterai récupérer la longueur du scope qui se trouve entre crochet.

J'ai essayé avec la fonction STXT mais je n'en ressors aucun résultat

Si quelqu'un a une idée je suis preneur

Amicalement

Bonjour dds69,

En utilisant cette formule :

=DROITE(A1;NBCAR(A1)-CHERCHE("[";A1)+1)

Cordialement,

Bonjour,

=STXT(A1;CHERCHE("[";A1)+1;CHERCHE("]";A1)-CHERCHE("[";A1)-1)

Cordialement.

Bonjour,

@IronBoule, @MFerrand

Merci pour la fonction, seulement celle-ci me renvoi [20-60]/20-60 mais mon but est que je dois récupérer 40 autrement dit la soustraction de la deuxième valeur par la première valeur.

Re,

Rien à voir avec ta question initiale ! Il conviendrait de formuler ta question dès le départ...

On peut faire par formule, mais trop long pour moi, je procèderai plutôt en VBA, beaucoup plus simple pour obtenir le résultat...

Re, et bonjour MFerrand,

Je ne suis pas super doué avec les formules, il doit y avoir plus simple, mais en utilisant la solution de MFerrand :

Par exemple :

  • En B1 : =STXT(A1;CHERCHE("[";A1)+1;CHERCHE("]";A1)-CHERCHE("[";A1)-4)
  • En C1: =STXT(A1;CHERCHE("[";A1)+4;CHERCHE("]";A1)-CHERCHE("[";A1)-4)
  • En D1: =D1-C1

Comme j'ai dit, il y a peut-être plus simple...

Cordialement,

Re,

Calcul sous forme macro :

Sub Test()
    Dim tx, scope, v
    tx = Split(Replace(ActiveSheet.Range("A1"), "]", "["), "[")
    scope = Split(tx(1), "-")
    v = Val(scope(1)) - Val(scope(0))
    MsgBox v
End Sub

Pour avoir le résultat sur la feuille il suffit de remplacer le message par l'affectation à une cellule;

Si l'on en a plusieurs à traiter, on fait une boucle sur la plage concernée, et on remplace la réf. unique à A1 par une variable...

Cordialement.

La même, mais sous forme de fonction personnalisée, à utiliser dans une formule comme les fonctions Excel :

Function LSCOPE(txt As String)
    Dim tx, scope
    Application.Volatile
    tx = Split(Replace(txt, "]", "["), "[")
    scope = Split(tx(1), "-")
    LSCOPE = Val(scope(1)) - Val(scope(0))
End Function

En mettant en B1 la formule :

=LSCOPE(A1)

le résultat s'affichera en B1.

La ligne Application.Volatile fait recalculer la formule lors des recalculs. Si cela n'apparaît pas nécessaire, supprimer cette ligne.

Cordialement.

Bonsoir dds69, le forum,

je te propose ce fichier Excel :

33exo-dds69.xlsm (7.65 Ko)

merci de me dire si ça te convient.

dhany

Bonsoir le forum,

=DROITE(STXT(A1;CHERCHE("[*]";A1)+1;CHERCHE("]";A1)-CHERCHE("[*]";A1)-1);CHERCHE("]";A1;1)-(CHERCHE("-";A1;1)+1))*1-GAUCHE(STXT(A1;CHERCHE("[*]";A1)+1;CHERCHE("]";A1)-CHERCHE("[*]";A1)-1);CHERCHE("-";A1;1)-1-(CHERCHE("[";A1;1)))*1
soustraction

Bonjour à tous,

@MFerrand

Merci Beaucoup pour cette fonction personnalisée qui donne le résultat attendue

@mbbp

Je me suis perdu dans la fonction mais elle donne le résultat attendu et je vais voir si je peux optimiser cela. Merci beaucoup pour ton aide

@dhany, @Ironboule

Un peu plus long mais cela va me servir pour d'autres cas.

Je vous remercie à tous pour votre aide. Je passe le sujet en "Résolu"

Bonne continuation.

Bonsoir,

Dhany n'étant pas revenu sur ce sujet, je me permets de demander si le point principal sur lequel sa solution repose a bien été perçu ? Pour la réutiliser il est utile de comprendre comment le calcul est fait.

Subtil !

Bonjour MFerrand, le forum,

c'est une réponse tardive ; merci pour ton retour !

peut-être que si dds69 revient sur son sujet,

cette version le convaincra mieux ?

17exo-dds69.xlsm (9.49 Ko)

(présentation en ligne, et quelques infos)

dhany

Ça me chiffonne toujours qu'on ne cherche pas à savoir comment un résultat est obtenu (surtout quand ça mérite qu'on s'y penche).

merci MFerrand !

dhany

Rechercher des sujets similaires à "recuperer valeur entre crochet"