IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Executer une fonction stockée au format texte


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Mars 2023
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Mars 2023
    Messages : 1
    Par défaut Executer une fonction stockée au format texte
    Bonjour,

    Dans une feuille excel, je souhaite introduire une fonction (au format texte), qui devra ensuite être récupérée pour être appliquée à diverses cellules, mais avec le contenu d'une cellule (qui va varier de manière dynamique) via la fonction LET


    Par exemple :
    Fonction : x+x^(1/2) ou sin(x+1) ou 2*x^3-3*x^2+5*x-3
    Formule LET obtenu par concaténation : LET (x ; B40 ; x+x^(1/2) ) ou LET (x ; B40 ; sin(x+1) )
    Et ensuite, faire exécuter cette fonction à divers endroits, avec B40 qui va varier en fonction de la cellule où est créée LET : LET (x ; C40 ; x+x^(1/2) ) puis LET (x ; D40 ; x+x^(1/2) )

    Mais comment exécuter et calculer cette fonction stockée au format texte ?

    La fonction =LET (x ; B40 ; x+x^(1/2) ) utilisée directement dans une case donne un résultat, mais si la fonction (ici x+x^(1/2)) change, il faut réécrire tous les LET ...
    Alors qu'une composition dynamique permet d'avoir le bon LET partout, mais ... comment l'exécuter ensuite.
    La fonction VBA me donne des erreurs 2015.
    Je suis ouvert à toute piste de solution, même en VBA.
    Merci d'avance pour votre aide.

  2. #2
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 423
    Par défaut
    Bonjour,

    En fait il vaut mieux passer par la fonction LAMBDA. Un exemple avec 2 noms, l'un pour la cellule contenant la formule (nommée "Formule"), l'autre pour la fonction (nommée "Fxy") ... que l'on peut facilement modifier via VBA, par exemple ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Worksheet_Change(ByVal Target As Range)
        If Target.Address = Range("Formule").Address Then
            ActiveWorkbook.Names("Fxy").RefersToR1C1 = "=LAMBDA(x,y," & Range("Formule") & ")"
        End If
    End Sub
    Cordialement.
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. Réponses: 18
    Dernier message: 27/10/2006, 14h15
  2. executer une procedure stockée d'une BD depuis une autre BD
    Par MoTUmBo dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 29/08/2005, 16h02
  3. executer une fonction à la fermeture d'une fenêtre
    Par Oluha dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 22/02/2005, 09h46
  4. afficher la définition d'une fonction stockée
    Par bdkiller dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 03/09/2004, 13h28
  5. [Reflection] Executer une fonction dont le nom est contenu dans un String
    Par christobal dans le forum API standards et tierces
    Réponses: 8
    Dernier message: 05/07/2004, 15h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo