Répondre à la discussion
Affichage des résultats 1 à 6 sur 6

Problème à propos d'une fonction dans excel



  1. #1
    Shark_13

    Problème à propos d'une fonction dans excel


    ------

    Bonjour, je débute le VBA et j'ai décidé de créer une fonction qui permet de résoudre une équation du second degré, malheureusement, lorsque je veut afficher le résultat sous forme de tableau, il ne m'affiche que la première solution lorsque j'utilise l'outil fonction. Voici le code:

    Code:
    Function equation(A As Double, B As Double, C As Double) As Variant
    Dim xa As Double
    Dim xb As Double
    Dim xc As Double
    Dim Q As Double
    
    'Q est le discriminant, xa la première solution, xb la seconde solution et xc le nombre de solutions'
    Q = B ^ 2 - (4 * A * C)
    If Q > 0 Then
    xa = (-B + Sqr(Q)) / (2 * A)
    xb = (-B - Sqr(Q)) / (2 * A)
    xc = 2
    End If
    
    If Q = 0 Then
    xa = -B / (2 * A)
    xb = -B / (2 * A)
    xc = 1
    End If
    
    If Q < 0 Then
    xa = "pas de solutions"
    xb = "pas de solutions"
    xc = 0
    End If
    
    'création d'un tableau pour mettre les résultats'
    Dim sol(2) As Double
    sol(0) = xa
    sol(1) = xb
    sol(2) = xc
    
    equation = sol
    
    End Function
    Merci d'avance

    -----

  2. #2
    Dormeur74

    Re : Problème à propos d'une fonction dans excel

    Normal, en VB le premier index n'est pas 0 comme dans la plupart des langages, mais 1.
    Essaye avec :

    Code:
    Dim sol(3) As Double
    sol(1) = xa
    sol(2) = xb
    sol(3) = xc
    Tu devrais prendre l'habitude d'indenter ton code.
    Dernière modification par Dormeur74 ; 08/12/2011 à 16h40.

  3. #3
    Shark_13

    Re : Problème à propos d'une fonction dans excel

    Bonsoir, j'ai fait ce que vous avez dit mais j'ai toujours le même problème, seulement une solution s'affiche. Le problème doit être du aussi à autre chose.
    On m'affiche {1,-2,2} juste en dessous du tableau pour choisir A, B et C (dans mon cas A=1 B=1 et C=-2) mais en résultat j'ai que "résultat=1"

    Pour l'indentation j'y ferais attention la prochaine fois.

    Merci d'avance

  4. #4
    Dormeur74

    Re : Problème à propos d'une fonction dans excel

    Code:
    Sub Macro1()
        Dim Solution() As Variant
        Dim A As Double, B As Double, C As Double
    
        A = 1: B = -2: C = 2
      
        Solution() = equation(A, B, C)
        MsgBox Solution(0)
        MsgBox Solution(1)
        MsgBox Solution(2)
    End Sub
    
    
    Function equation(A As Double, B As Double, C As Double) As Variant
        Dim xa As Variant
        Dim xb As Variant
        Dim xc As Variant
        Dim Q As Double
        Dim sol(0 To 2) As Variant
    
        'Q est le discriminant, xa la première solution, xb la seconde solution et xc le nombre de solutions'
        Q = B ^ 2 - (4 * A * C)
        
        If Q > 0 Then
            xa = (-B + Sqr(Q)) / (2 * A)
            xb = (-B - Sqr(Q)) / (2 * A)
            xc = 2
        End If
    
        If Q = 0 Then
            xa = -B / (2 * A)
            xb = -B / (2 * A)
            xc = 1
        End If
    
        If Q < 0 Then
            xa = "pas de solutions"
            xb = "pas de solutions"
            xc = 0
        End If
    
        'création d'un tableau pour mettre les résultats'
        sol(0) = xa
        sol(1) = xb
        sol(2) = xc
    
        equation = sol
    
    End Function
    Tu étais tout près du but, mais avec un gros bug. Quelques remarques :
    - si tu regardes bien ton code, lorsqu'il n'y a pas de solution, tu affectes la chaîne "pas de solution" aux variables xa et xb. Les types (xa, xb,xc) étant hétérogènes, tu ne peux pas travailler en double au sein de la fonction, mais en Variant, y-compris le tableau sol(). Seul le discriminant reste en Double.
    - prends l'habitude d'indenter ton code et de regrouper en tête les déclarations de variables : dim sol() était mal placé.

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

    Re : Problème à propos d'une fonction dans excel

    Oui en effet il faut mettre variant pour les solutions car il y a aussi du texte (je n'y avait pas fait attention...), et pour le tableau j'ai finalement affecté une solution par cellule via une macro pour afficher les solutions et cela marche nickel. Merci pour votre aide

  7. #6
    Dormeur74

    Re : Problème à propos d'une fonction dans excel

    Si ton truc fonctionne, tant mieux.

    Mais méfie-toi de ce type Variant qui t'a fait perdre pas mal de temps. Il ne vaut pas mieux que le transtypage automatique, car on ne sait jamais ce qui va sortir du chapeau.

    Si tu veux un code solide, n'utilise pas ce type ; tu gagneras un temps fou dans la mise au point de tes développements.

    Pour boucler la boucle : penche-toi sérieusement sur la gestion des erreurs, car elles sont assez bien renseignées.

Discussions similaires

  1. Appel d'une fonction Excel dans une macro
    Par Calia_Eowyn dans le forum Programmation et langages, Algorithmique
    Réponses: 8
    Dernier message: 26/10/2011, 10h01
  2. Comment insérer une fonction Matlab dans les paramètres d'entrée d'une autre fonction ??
    Par °Oo>>PCSI2<<oO° dans le forum Mathématiques du supérieur
    Réponses: 3
    Dernier message: 04/01/2010, 07h16
  3. Recherche fonction MAX SI dans excel
    Par Santépub dans le forum Logiciel - Software - Open Source
    Réponses: 7
    Dernier message: 09/11/2008, 09h41
  4. problème sous excel 2002 avec la fonction rechercheV
    Par kingax dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 14/02/2008, 15h58
  5. Probleme a propos de la fonction exponnentielle
    Par Tmax35 dans le forum Mathématiques du supérieur
    Réponses: 2
    Dernier message: 07/11/2005, 19h37