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 :

ERFC dans les macros


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    134
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 134
    Par défaut ERFC dans les macros
    Bonjour,

    je souhaiterais utiliser la fonction ERFC() dans une macro. Voici le schéma de ce que je voudrais faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    function()
        boucle for()
            ERFC()
        End loop
    End Function
    A priori, selon ce que j'ai lu, il est impossible de faire appel à la fonction ERFC dans VBA. J'essaye donc de remplir une cellule de ma feuille Excel (VBA) avec une valeur, faire le calcul dans Excel et lire la valeur calculée grâce à la fonction ERFC (VBA).

    Voici le code que j'ai commencé à écrire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Public Function BER_ref()
        Dim value_EbN0 As Double
     
        value_EbN0 = 15
     
        Sheets("Calcul").Select
        Range("J5").Select
        ActiveCell.FormulaR1C1 = "=0,5*ERFC(10^(value_EbN0/20))"
     
        MsgBox(Range("J5").value)
     
    End Function
    Déjà, juste cela ne fonctionne pas (alors que j'ai crée une macro automatique qui donne ce même code). Je ne comprends pas pourquoi !

    Y'a-t-il une autre solution que ce que je suis en train de faire. Sinon, pourquoi mon début de code ne fonctionne-t-il pas ?

    Merci d'avance pour votre aide.

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Normal ! Tu n'isoles pas la valeur value_EbN0 et tu utilises la virgule alors qu'ici tu dois utiliser le point (!!!)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        value_EbN0 = 15
        ActiveCell.FormulaR1C1 = "=0.5*ERFC(10^(" & value_EbN0 & "/20))"
    Bonne journée

    PS - Tu peux remplacer tes trois lignes par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Sheets("Calcul").Range("J5").FormulaR1C1 = "=0.5*ERFC(10^(" & value_EbN0 & "/20))"
    Autant que possible, évite les selects dans ton code, ils te contraignent ici de sélectionner d'abord la feuille puis la cellule... et ça ne sert à rien

  3. #3
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    134
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 134
    Par défaut
    Si je simplifie, et mets ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Sheets("Calcul").Select ' J'aurai besoin de l'utiliser plusieurs fois donc je laisse la feuille sélectionnée  
    Range("J5").FormulaR1C1 = "25"
    J'ai toujours une erreur (le msgBox ne s'affiche pas). Si j'enlève la dernière ligne, ça marche ?

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Je ne comprends pas ton pb !
    Teste ça sur un fichier tout neuf, chez moi ça fonctionne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub test()
        value_EbN0 = 15
        Worksheets("feuil2").Range("J5").FormulaR1C1 = _
        "=0.5*ERFC(10^(" & value_EbN0 & "/20))"
        MsgBox Worksheets("feuil2").Range("J5").Value
    End Sub
    Si ça ne fonctionne pas chez toi c'est que tu n'as pas de feuille "feuil2" dans ton classeur tout neuf, donc pas de feuille "Calcul" dans ton classeur à toi

    PS - Tes feuilles ne sont pas protégées ? Tes cellules ne sont pas verrouillées ?

  5. #5
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    134
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 134
    Par défaut
    J'ai copié le code et je l'ai passé en "function" plutôt qu'en "sub" et ça ne fonctionne pas.

    Je ne sais pas si ça vient de "function" ou de "sub", je débute et je ne connais pas bien la différence (j'ai seulement remarqué que =test(), ça ne marche dans Excel que si c'est une "function").

  6. #6
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Montre ton code et explique ce que tu veux obtenir dans la cellule. Ce n'est certes pas un msgbox (!)
    Jusqu'à présent, d'après le code que tu as proposé, on écrivait une formule dans une cellule.
    Si tu veux obtenir le résultat d'un fonction alors tu dois faire une fonction, et là il semble bien que tu aies un pb. Une fonction est faite pour renvoyer un résultat, non pour écrire une formule dans une cellule. De là à ne pas pouvoir utiliser ERFC dans une fonction...
    La seule solution que je vois est d'écrire la formule qui va bien dans une cellule (1), cellule qui fait référence à une cellule contenant la valeur (2), et tu récupères le résultat dans la cellule désirée(3).
    1 -> La formule qui va bien en B1 "=0,5*ERFC(10^(A1/20))"
    2 -> La valeur en A1 = 15 dans ton exemple
    3 -> La formule en C1 "= B1"

Discussions similaires

  1. Expressions régulières dans les macros
    Par Dionyzos dans le forum NetBeans
    Réponses: 0
    Dernier message: 26/03/2013, 11h56
  2. utilisation de la fonction condition dans les macros Access
    Par DjeDje94 dans le forum Macros Access
    Réponses: 1
    Dernier message: 05/12/2012, 10h59
  3. Réponses: 6
    Dernier message: 23/07/2012, 11h13
  4. Nouveautés 2010 en vidéo - des paramètres dans les macros
    Par Maxence HUBICHE dans le forum Access
    Réponses: 6
    Dernier message: 16/01/2010, 12h05
  5. Réponses: 28
    Dernier message: 09/01/2007, 16h30

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