Erreur #Valeur en VBA Excel
Répondre à la discussion
Affichage des résultats 1 à 6 sur 6

Erreur #Valeur en VBA Excel



  1. #1
    f6exb

    Erreur #Valeur en VBA Excel


    ------

    Bonjour,
    J'essaye de me mettre au VBA et pour un exemple simple, qu'il suffit de recopier, je tombe sur une erreur #Valeur que je n'arrive pas à comprendre :
    Calcul de factorielle par boucle et par récursivité.
    Nombre entré en C3
    Résultat du calcul par boucle en C5, ça marche.
    Résultat du calcul par récursivité en C8 et j'obtiens l'erreur ci-dessus.

    En C3 j'ai l'expression: =Factorielle_boucle(C3)
    La fonction Factorielle_boucle(Nb) est :
    Code:
    Function Factorielle_boucle(Nb As Long) As Long
    
    Nb = Range("C3")
    Factorielle_boucle = 1
    
    For i = 1 To Nb
        Factorielle_boucle = Factorielle_boucle * i
    Next i
    End Function
    En C8 j'ai =Factorielle_recursive(C3) dont le code est :
    Code:
    Function Factorielle_recursive(Nb As Long) As Long
    
    Nb = Range("C3")
     If Nb = 0 Then
     Factorielle_recursive = 1
    Else
    Factorielle_recursive = Factorielle_recursive(Nb - 1) * Nb
    End If
    
    End Function
    Et là ça coince.
    Que se passe-t-il docteur ?

    -----
    Seuls les faucons volent. Les vrais restent au sol.

  2. #2
    pm42

    Re : Erreur #Valeur en VBA Excel

    Je ne suis pas expert de VBA mais le code récursif me semble très faux.

    Nb est passé en argument mais la 1ère instruction le surcharge avec la valeur de C3.
    Donc Nb va tout le temps valoir la même chose et la fonction se transformer en boucle sans fin.

    Il faudrait virer la ligne "Nb = Range("C3")" de Factorielle_recursive.

    Au passage, il faudrait aussi la virer de Factorielle_boucle. Elle ne l'empêche pas de fonctionner mais elle calcule toujours la factorielle de C3.

    Dernier point, tu dis :

    En C3 j'ai l'expression: =Factorielle_boucle(C3)
    Je suppose que tu voulais dire en C8 ou C9... Parce que tu ne peux pas mettre en C3 une fonction dont l'argument est la valeur de C3.

  3. #3
    f6exb

    Re : Erreur #Valeur en VBA Excel

    Merci, je vais voir ça et essayer de tout comprendre.
    Pour ta dernière remarque, c'est une faute de rédaction :
    En C5 j'ai l'expression: =Factorielle_boucle(C3)

    Edit : J'ai supprimé le "Nb = Range("C3")" de Factorielle_recursive et tout baigne.
    Merci
    Dernière modification par f6exb ; 13/01/2020 à 13h33.
    Seuls les faucons volent. Les vrais restent au sol.

  4. #4
    f6exb

    Re : Erreur #Valeur en VBA Excel

    Supprimé également de la première fonction.
    Seuls les faucons volent. Les vrais restent au sol.

  5. A voir en vidéo sur Futura
  6. #5
    pm42

    Re : Erreur #Valeur en VBA Excel

    Citation Envoyé par f6exb Voir le message
    Supprimé également de la première fonction.
    Ok. Si tu as besoin de plus d'explications n'hésite pas.

    Mais globalement, modifier une valeur passée en argument d'une fonction est une mauvaise idée.

    Et pour une fonction simple comme celle là, passer les arguments quand on l'appelle et ne pas laisser la fonction aller les chercher quelque part dans la feuille Excel est un bon choix.

  7. #6
    f6exb

    Re : Erreur #Valeur en VBA Excel

    J'ai compris. Merci pour les trucs.
    Seuls les faucons volent. Les vrais restent au sol.

Discussions similaires

  1. Excel - Valeur mini d'un tableau
    Par invite2b1d492e dans le forum Logiciel - Software - Open Source
    Réponses: 5
    Dernier message: 07/11/2019, 16h38
  2. Macro Excel pour modifier la valeur des cellules d'une table excel
    Par invitee383f345 dans le forum Programmation et langages, Algorithmique
    Réponses: 11
    Dernier message: 15/11/2017, 19h19
  3. scruter valeur colonne Excel avec VBA
    Par invitebb1eae45 dans le forum Programmation et langages, Algorithmique
    Réponses: 28
    Dernier message: 26/04/2016, 15h28
  4. Problème excel : Valeur
    Par invitebfb0bb71 dans le forum Logiciel - Software - Open Source
    Réponses: 7
    Dernier message: 06/05/2012, 13h06
  5. Incrementation jusqu'a valeur cible excel
    Par invite3d13ca3a dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 29/09/2008, 15h21