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 :

[VBA-E] Définition et résolution d'équation 3ième degré


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Avril 2007
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 3
    Points : 1
    Points
    1
    Par défaut [VBA-E] Définition et résolution d'équation 3ième degré
    Bonjour,

    Je débute en VBA.
    Je suis en train de programmé une feuille de calcul destinée à résoudre des équations d'hydraulique.

    Ces équations sont du type ax^3+bx^2+cx+d =0

    Pour les résoudre, je dois effectuer un changement de variable, calculer le discrimant et choisir les solutions réelles. Dans la théorie, y a pas de souci.

    Seulement, le nombre d'équations que je veux résoudre est variable, je ne peux donc pas les définir classiquement dans une feuille Excel; il faut que je les définisse dans le programme: et c'est là que le bât blesse.

    Comment définir dans une boucle une équation du type:

    a(i) * X(i)^3 + b(i)*X(i)^2+c(i)*X(i)+d(i) = 0

    Et là je bloque...

  2. #2
    Nouveau Candidat au Club
    Inscrit en
    Avril 2007
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Pas de réponse
    Ma question n'est elle pas assez claire? N'est-ce pas possible à faire?

    N'ayant ni avis, ni réponse à mon interrogation, je me demande ce qui ne vas pas...merci de me donner votre avis sur la faisabilité ou pas d'un tel problème!

    Merci d'avance

  3. #3
    Membre habitué
    Inscrit en
    Juillet 2005
    Messages
    141
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 141
    Points : 148
    Points
    148
    Par défaut
    Bonjour
    Quand tu dis
    le nombre d'équations que je veux résoudre est variable
    , que veux tu dire?
    N'aurais tu pas moyen de stocker toutes les valeurs pour chaque coefficients dans un tableau que tu parcourerais ensuite??
    rémi

  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
    Points : 15 543
    Points
    15 543
    Par défaut
    Si c'est pour effectuer un calcul, regarde , ça te donnera des idées, mais si c'est pour résoudre ton équation, c'est sur le web que tu dois chercher. Une adresse Maintenant, si c'est avoir le résultat pour chaque valeur de i, une boucle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For i = 1 to valeurMax
       'ton calcul
    Next
    Bref, tout comme gruget, je n'ai pas compris ta question

  5. #5
    Nouveau Candidat au Club
    Inscrit en
    Avril 2007
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 3
    Points : 1
    Points
    1
    Par défaut eclaircissement de la question
    Merci pour l'aide.
    En effet je stocke bien les coefficients dont j'ai besoin dans un tableau (dont le nombre d'éléments varie en fonction des hypothèses de calcul) et je souhaite les récupérer pour effectuer mon changement de variables et c'est là que ça plante:

    Pas de souci pour effectuer les calculs avec des coef. fixes mais il ne reconnait pas mes coef. variables. Je joins les quelques lignes critiques:

    0 (Début de la boucle, pour le changement de variable)
    1 For i = 0 To nbre_bass + 1
    2
    3 (je lui demande d'effectuer un calcul et de stocker les résultats dans des lignées dépendant de i; jusque là tout roule)
    4 Range("A" & lig_donnees + 60 + 1 * i).Select
    5 Range("A" & lig_donnees + 60 + 1 * i).Formula = "=($O$8)^2 * ($P$8)^6 2 * 2*9.81"
    7
    8 (je lui demande d'aller chercher un certain nombre que j'ai calculé préalablement et de le stocker sous la variable zeau pour le réutiliser ultérieurement)
    9 Range("G" & lig_donnees + 8 + 4 * i).Select
    10 zeau = ActiveCell.Value
    11
    12 Range("H" & lig_donnees + 8 + 4 * i).Select
    13 zfond = ActiveCell.Value
    14
    15 (je lui demande d'effectuer un calcul dépendant de zeau et zfond et de le stocker; et là il ne comprend pas les valeurs zeau et zfond...)
    16 Range("B" & lig_donnees + 60 + 1 * i).Select
    17 Range("B" & lig_donnees + 60 + 1 * i).Formula = "=($O$8)^2 * ($P$8)^18 2 * 2*9.81*2*(zeau-zfond)+($S$8)^2*($R$8)^2*($Q$8)^2*2*9.81"
    19
    20 Next i


    voici la base de mon problème...

  6. #6
    Membre habitué
    Inscrit en
    Juillet 2005
    Messages
    141
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 141
    Points : 148
    Points
    148
    Par défaut
    bonjour
    alors c'est normal qu'il ne comprenne pas les variables parcequ'en fait ce que tu fait c'est que tu rempli tes cellules avec des formules qui font références à tes variables. en particulier pour être précis quand tu dis:
    (je lui demande d'effectuer un calcul et de stocker les résultats dans des lignées dépendant de i; jusque là tout roule)
    Range("A" & lig_donnees + 60 + 1 * i).Select
    5 Range("A" & lig_donnees + 60 + 1 * i).Formula = "=($O$8)^2 * ($P$8)^6 2 * 2*9.81"
    en fait c'est pas le résultat que tu stockes mais la formule
    pour que ca marche il faudrait faire qqchose comme ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
     '(Début de la boucle, pour le changement de variable)
    For i = 0 To nbre_bass + 1
     
     '(je lui demande d'effectuer un calcul et de stocker les résultats dans des lignées dépendant de i; jusque là tout roule)
     
     Worksheets("nom de ta feuille").cells(lig_donnees + 60 + i, 1).Value = (cells(8, 15).Value) ^ 2 * 2 * (cells(8, 16).Value) ^ 6 * 2 * 9.81
     
     '(je lui demande d'aller chercher un certain nombre que j'ai calculé préalablement et de le stocker sous la variable zeau pour le réutiliser ultérieurement)
     
     zeau = Worksheets("nom de ta feuille").cells(lig_donnees + 8 + 4 * i, 7).Value
     
     zfond = Worksheets("nom de ta feuille").cells(lig_donnees + 8 + 4 * i, 8).Value
     
     '(je lui demande d'effectuer un calcul dépendant de zeau et zfond et de le stocker; et là il ne comprend pas les valeurs zeau et zfond...)
     Range("B" & lig_donnees + 60 + 1 * i).Select
     Worksheets("nom de ta feuille").cells(lig_donnees + 8 + 4 * i, 8).Value = (cells(8, 15).Value) ^ 2 * 2 * (cells(8, 16).Value) ^ 18 * 2 * 9.81 * (zeau - zfond) + cells(8, 19).Value ^ 2 * cells(8, 18).Value ^ 2 * cells(8, 17).Value ^ 2 * 2 * 9.81
     
     Next i
    par contre je suis pas sur des formules math pasque comme tu peux le voir sur le code que ta fourni il manque des signes non?
    adaptes et dis moi ce que t'en pense
    rémi

Discussions similaires

  1. Résolution d'équations de plan
    Par _iri_ dans le forum Calcul scientifique
    Réponses: 1
    Dernier message: 29/10/2006, 16h29
  2. [VBA-E]Définition d'un chemin
    Par Ania dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 01/06/2006, 08h24
  3. [VBA-E] Définition d'un tableau avec lien WebService
    Par Carrel dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 11/05/2006, 16h31
  4. [VB6] Résolution d'équations
    Par joquetino dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 27/03/2006, 08h44
  5. Réponses: 8
    Dernier message: 22/02/2006, 15h09

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