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 :

fonction puissance argument


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    450
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 450
    Par défaut fonction puissance argument
    Bonsoir , est ce que dans cette fonction que j'ai écrit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Function puiss(ByVal x As Long, ByVal n As Double) As Double
    If x <> 0 And n > 0 Then
        puiss = puiss(x) * n
    Else
        puiss = 1
    End If
    End Function
    vous voyez un probleme avec les arguments à cette ligne : puiss = puiss(x) * n

    merci

  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
    Oui, ta fonction attend deux arguments et, dans ta ligne, puiss(x), il n'y en a qu'un.
    Regarde ce que dit l'aide pour les arguments "Optional" à Function, instruction, exemple
    Mais je ne suis pas du tout certain que ce soit adapté à ton problème.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    450
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 450
    Par défaut
    j'ai modifié la fonction mais apparemment j'ai un probleme de pile , pourtant je sors de ma fonction comme il faut ... :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Function puiss(ByVal x As Long, ByVal n As Double) As Double
    If x <> 0 And n > 0 Then
        puiss = puiss(x, n) * n
    Else
        puiss = 1
    End If
    End Function

  4. #4
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Bonsoir.

    vous voyez un probleme avec les arguments à cette ligne : puiss = puiss(x) * n
    Je vois au moins 2 pb :
    - C'est une forme récursive non convergente ( On va revoir l'erreur 28)
    - la fonction puiss est censée avoir 2 arguments.

    Bon courage,

    PGZ

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    450
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 450
    Par défaut
    et là j'ai essayé de faire en sorte que ça converge mais bon çà met tjs l'erreur que tu as cité :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Function puiss(ByVal x As Long, ByVal n As Double) As Double
    If x <> 0 And n > 0 Then
        puiss = puiss(x, n) * (n - 1)
    Else
        puiss = 1
    End If
    End Function

  6. #6
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Tu appelles toujours la fonction avec les mêmes arguments : il n'y a donc jamais de fin.

    Voici par exemple une fonction récursive qui calcule x^n, avec x réel et n entier relatif.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Function puiss(ByVal x As Double, ByVal n As Integer) As Double
     
    If n > 0 Then
        puiss = puiss(x, n - 1) * x
    ElseIf n < 0 Then
        puiss = puiss(x, n + 1) / x
    Else
        puiss = 1
    End If
     
    End Function
    A chaque appel de la fonction puisssance, n est modifié, jusqu'à ce qu'il vaille 0, ce qui permet d'arrêter les appels récursifs.
    Le If porte donc sur n!
    Ici on traite le cas n>0 et n<0.

    Bon courage,

    PGZ

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    450
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 450
    Par défaut
    merci pgz en fait j'étais très proche de ton résultat car j'avais finir par écrire :

    puiss = puiss(x, n - 1) * n

    mais c'etait * x qu'il fallait écrire , tes explications m'ont été utiles dans ma compréhension de la récursivité je t'en remercie .

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. creer une fonction avec arguments
    Par niglo dans le forum ASP
    Réponses: 3
    Dernier message: 03/06/2005, 08h04
  2. Passer une fonction comme argument à une fonction
    Par Cocotier974 dans le forum Général Python
    Réponses: 4
    Dernier message: 29/06/2004, 13h41
  3. [VB.NET] Fonctions en argument ?
    Par BobLeNain dans le forum VB.NET
    Réponses: 8
    Dernier message: 03/06/2004, 12h47
  4. [LG]fonction puissance en pascal
    Par le 27 dans le forum Langage
    Réponses: 8
    Dernier message: 13/12/2003, 23h21
  5. Fonction divisant argument de type inconnu
    Par Nasky dans le forum C
    Réponses: 9
    Dernier message: 29/07/2003, 00h32

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