Extraire un chiffre/nombre d'une fonction

AQUILA34 Messages postés 5 Statut Membre -  
pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,
je viens vers vous pour une simple question qui cependant me bloque dans la construction d'un tableau.
Si c'est possible, comment extraire un chiffre d'une fonction ?
Ex : =1*3000
Ma cellule m'affiche donc 3000, mais dans une autre cellule je souhaiterais indiquer 1 (ou 2,si je change le 1 dans la première cellule), ceci pour ne pas utiliser une troisième cellule.
Voilà
Merci d'avance.

4 réponses

  1. ccm81 Messages postés 11033 Statut Membre 2 434
     
    Bonjour

    peut être quelque chose dans ce sens (avec macro - Alt-F11 pour accéder au code)
    https://www.cjoint.com/?3LkohunRepS

    Cdlmnt
    1
    1. AQUILA34 Messages postés 5 Statut Membre
       
      Merci pour ton retour, regarde également la réponse de "pijaku" pour info
      0
  2. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    Bonjour,

    Par du VBA c'est possible. Voici une petite fonction personnalisée, dans laquelle tu entres :
    - la cellule ou se trouve ta formule,
    - l'opérateur,
    - le membre (l'opérande) de la formule que tu souhaites "sortir".

    Code VBA :
    Function ExtraitOperande(Cel As Range, Operat As String, NumOp As Integer) As Long
    Dim temp As String
    
    temp = Split(Cel.Formula, Operat)(NumOp - 1)
    If Left(temp, 1) = "=" Then temp = Right(temp, Len(temp) - 1)
    ExtraitOperande = CLng(temp)
    End Function


    Mise en place :
    1- depuis ton classeur Excel, taper ALT+F11 (=> visual basic editor s'ouvre),
    2- Insertion/Module,
    3- Copier-coller ce code dans le module
    4- fermer la fenêtre visual basic editor

    Utilisation :
    En A1, saisir la formule : =2*3000*10
    - pour extraire 2 :
    En A2 (par exemple), saisir : =ExtraitOperande(A1;"*";1)
    - pour extraire 3000 :
    En A2 (par exemple), saisir : =ExtraitOperande(A1;"*";2)
    - pour extraire 10 :
    En A2 (par exemple), saisir : =ExtraitOperande(A1;"*";3)
    etc...

    Note : Mais bon ça ne fonctionne qu'avec des opérations "simples"...
    Cordialement,
    Franck
    1
    1. AQUILA34 Messages postés 5 Statut Membre
       
      Merci, c'est parfait et simple d'utilisation. En plus on peut donc réappliquer une autre fonction sur le résultat.
      0
    2. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      En plus on peut donc réappliquer une autre fonction sur le résultat.
      Oui car la Function est déclarée "As Long", donc le résultat sera un nombre entier.


      Function ExtraitOperande(Cel As Range, Operat As String, NumOp As Integer) As Long
      0
    3. ccm81 Messages postés 11033 Statut Membre 2 434
       
      Salut pijaku

      je me suis permis une petite modif pour que ça fonctionne avec des "non entiers"

      Function ExtraitOperande(Cel As Range, Operat As String, NumOp As Byte)
      Dim temp As String
      temp = Split(Cel.FormulaLocal, Operat)(NumOp - 1)
      If Left(temp, 1) = "=" Then temp = Right(temp, Len(temp) - 1)
      ExtraitOperande = temp * 1
      End Function


      Bonne journée à toi

      Cordialement ccm81
      0
    4. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      Salut,

      Merci, tu as bien fait.
      Mais comme je préfères voir directement dans la déclaration de la fonction ce qu'elle va renvoyer, proposition (à partir de la tienne ;-)) :
      Function ExtraitOperande(Cel As Range, Operat As String, NumOp As Byte) As Double
      Dim temp As String
      
      temp = Split(Cel.FormulaLocal, Operat)(NumOp - 1)
      If Left(temp, 1) = "=" Then temp = Right(temp, Len(temp) - 1)
      ExtraitOperande = CDbl(temp)
      End Function
      0
  3. AQUILA34 Messages postés 5 Statut Membre
     
    Justement pas, je ne veux pas utiliser de 3ème cellule :

    Ex :
    A1 : =1*3000
    A2 : =1

    Ex :
    A1 : =2*3000
    A2 : =2

    Si je change en A1, ça impacte A2
    0
    1. Bruce Willix Messages postés 12376 Date d'inscription   Statut Contributeur Dernière intervention   2 639
       
      Scuse, j'aurais du être plus clair.

      Si c'est possible, comment extraire un chiffre d'une fonction ? 
      C'est pas possible. Excel n'est pas prévu pour ça. Si tu transformes tes fonctions en texte tu pourrais éventuellement extraire le 1 et le 2, mais tu perds l'intérêt même d'avoir un formule.
      0
  4. Bruce Willix Messages postés 12376 Date d'inscription   Statut Contributeur Dernière intervention   2 639
     
    Dans la cellule A1 tu mets 1
    et dans la cellule B1 tu mets =A1*3000

    -1