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

Turbo Pascal Discussion :

[TP] Conversion Turbo Pascal en VBA


Sujet :

Turbo Pascal

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 5
    Par défaut [TP] Conversion Turbo Pascal en VBA
    Bonjour à tous,

    Je suis sur un projet informatique et je dois convertir un programme en Turbo Pascal en un programme en VBA. Le problème c'est que je ne connais rien en Pascal et j'ai un problème avec une boucle repeat. J'ai regardé comment fonctionne la boucle et j'ai essayé de l'adapter en VBA mais les résultats ne sont pas concordants.

    Voici le code Pascal :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    PM:=(DEN*VSR);
    PPS:=(PV*1000+PM);
    LP:=40;
    REPEAT
      LP:=LP+20;
      S1:=((((OS*1E+3)+30)*((OS*1E+3)+30)*PI)/4);
      S2:=(((OS*1E+3)-(2*(LP-15)))*((OS*1E+3)-(2*(LP-15)))*PI/4);
      SP:=(S1-S2);
      PM1:=PM*10;
      PV1:=PV*1000*10;
      CNS:=(((1.35*PV1+1.5*PM1)/SP)+((TE/(2*1.75))/SP));
    UNTIL CNS<3.5;(*MPA*)
    Voici le code en vba :
    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
    20
    21
    22
    23
    24
    PM = DEN *VSR
    PPS = PV * 1000 + PM
     
    'codage du repeat until'
    LP = (40)
    S1=((((OS*1E+3)+30)*((OS*1E+3)+30)*PI)/4);
                                S2=(((OS*1E+3)-(2*(LP-15)))*((OS*1E+3)-(2*(LP-15)))*PI/4);
                                SP=(S1-S2);
                                PM1=PM*10;
                                PV1=PV*1000*10;
                                CNS=(((1.35*PV1+1.5*PM1)/SP)+((TE/(2*1.75))/SP));
     
    Do
     
                LP = LP + 20
               S1=((((OS*1E+3)+30)*((OS*1E+3)+30)*PI)/4);
                                S2=(((OS*1E+3)-(2*(LP-15)))*((OS*1E+3)-(2*(LP-15)))*PI/4);
                                SP=(S1-S2);
                                PM1=PM*10;
                                PV1=PV*1000*10;
                                CNS=(((1.35*PV1+1.5*PM1)/SP)+((TE/(2*1.75))/SP));
     
     
                Loop While CNS < 3.5
    En faisant des tests avec les 2 programmes, les résultats sont différents. Si quelqu'un connait un meileur équivalent pour la boucle until en VBA ou voit l'erreur je suis preneur.
    Merci d'avance

  2. #2
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 967
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 967
    Par défaut
    Gio,

    Pourquoi avoir sorti le code pour l'exécuter une fois hors de la boucle, il ne sert à rien.

    Tel quel, et en dehors de la remarque ci-dessus, ça a l'air d'aller, mais il faut tout de même mettre un sérieux bémol : il faut connaître les types définis pour les variables en Pascal, car le VB ne travaille pas de la même manière, avec ses variables qui prennent le type nécessaire pour stocker au mieux le résultat (sauf si on a précisé le type à utiliser pour la variable ).

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 5
    Par défaut
    Merci pour ta réponse droggo. En effet, ca ne sert à rien de sortir la première boucle. Par contre j'ai changé le signe de la condition et je retombe sur les bons résultats, est-ce que tu sais pourquoi?

    Encore merci pour la rapidité de ta réponse.

  4. #4
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 967
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 967
    Par défaut
    Lio,
    Citation Envoyé par whykiki Voir le message
    Merci pour ta réponse droggo. En effet, ca ne sert à rien de sortir la première boucle. Par contre j'ai changé le signe de la condition et je retombe sur les bons résultats, est-ce que tu sais pourquoi?

    Encore merci pour la rapidité de ta réponse.
    Ouais, je n'avais pas fait gaffe à ça, lecture un peu rapide.

    Tant que (le while) n'est pas équivalent à Jusqu'à (le Until)

    Pour avoir l'équivalent de Jusqu'à condition, il faut faire Tant que Non(condition)

Discussions similaires

  1. [Turbo Pascal] Turbo Pascal sous Windows XP
    Par MichelR dans le forum Turbo Pascal
    Réponses: 21
    Dernier message: 17/03/2011, 10h10
  2. [TP7] Conversion de sources Turbo Pascal 7 vers Delphi 6
    Par M.Tamisier dans le forum Turbo Pascal
    Réponses: 2
    Dernier message: 21/04/2006, 21h08
  3. conversion de Turbo Pascal vers Delphi 5
    Par samir1674 dans le forum Langage
    Réponses: 5
    Dernier message: 28/11/2005, 17h03
  4. Conversion Turbo Pascal 5 -> C
    Par Metal Tom dans le forum Turbo Pascal
    Réponses: 4
    Dernier message: 09/07/2003, 17h19
  5. [Turbo Pascal] Recherche cours ou livre sur le Turbo Pascal
    Par killarg dans le forum Turbo Pascal
    Réponses: 6
    Dernier message: 02/03/2003, 16h12

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