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 :

SImplification de IF


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Inscrit en
    Mai 2011
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Mai 2011
    Messages : 61
    Par défaut SImplification de IF
    Bonjour à tous!

    J'ai un petit problème tout simple mais dont je en me rappelle plus comment on fait...

    J'aimerai simplifier mon code pour qu'il y ait moins de IF.
    Mon code ici marche très bien, mais je le trouve long.
    (j'ai bien essayé avec select case, mais j'arrive pas à le faire tourner)

    En gros j'ai des lignes de conditions:

    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
    If typeachat.Value = True And devise1.Value = True Then
    prix1.Value = pricers(typeoption, s, k, rf, rd, sigma, maturité())
    End If
     
    If typeachat.Value = True And devise2.Value = True Then
    prix1.Value = pricers(typeoption, s, k, rf, rd, sigma, maturité())
    End If
     
     
    If typevente.Value = True And devise1.Value = True Then
    prix1.Value = pricers(typeoption, s, k, rf, rd, sigma, maturité())
    End If
     
    If typevente.Value = True And devise2.Value = True Then
    prix1.Value = pricers(typeoption, s, k, rf, rd, sigma, maturité())
    End If


    Merci!

  2. #2
    Expert confirmé
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Par défaut
    Bonjour,

    ce n'est pas tant le nombre de if qu'il faut voir, mais la logique, ici tu testes 2 fois tes Value de Typeachat et vente, il faut tester une fois et imbriquer un deuxième if pour tester la devise, tu élimines 2 tests répétitifs inutiles.
    Ensuite voir ton contexte, si tu as 2 devises et qu'elles ne peuvent être toutes les 2 à True (ce qui semblerait logique), nul besoin de tester les deux, si la 1ère est true, l'autre est False et inversement donc un If Then Else sur l'une des 2 suffirait...


    Cordialement,

    Ps : si le côté technique de la réponse = OK ou pas => pensez à cliquer sur les pouces et quand question résolue à la taguer résolue, et chaque action vous rapporte des points

    Didier

  3. #3
    Membre émérite

    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Ardèche (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 652
    Par défaut
    Bonjour,

    rssaies
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =If (devise1+devise2)*(typeachat+typevente) then...
    nota: tes variables étant des booléens, tu n'as pas besoin de mettre variable.value=true

  4. #4
    Membre actif
    Inscrit en
    Mai 2011
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Mai 2011
    Messages : 61
    Par défaut
    Au temps pour moi!
    J'ai voulu simplifier le code au maximum et donc du coup je n'ai pas trop fait attention.

    En fait j'ai une troisième devise: Donc elle peuvent être TRUE ou FALSE.
    Du coup je ne peux pas utilisé je pense...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =If (devise1+devise2)*(typeachat+typevente) then...
    Je vais essayer le if imbriqué.
    Mais si on peut encore réduire le code je suis preneur

    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
    If typeachat.Value = True And devise1.Value = True Then
    prix1.Value = pricers(typeoption, s, k, rf, rd, sigma, maturité())
    End If
     
    If typeachat.Value = True And devise2.Value = True Then
    prix1.Value = pricers(typeoption, s, k, rf, rd, sigma, maturité())
    End If
     
    If typeachat.Value = True And devise3.Value = True Then
    prix1.Value = pricers(typeoption, s, k, rf, rd, sigma, maturité())
    End If
     
    If typevente.Value = True And devise1.Value = True Then
    prix1.Value = pricers(typeoption, s, k, rf, rd, sigma, maturité())
    End If
     
    If typevente.Value = True And devise2.Value = True Then
    prix1.Value = pricers(typeoption, s, k, rf, rd, sigma, maturité())
    End If
     
    If typevente.Value = True And devise3.Value = True Then
    prix1.Value = pricers(typeoption, s, k, rf, rd, sigma, maturité())
    End If

  5. #5
    Membre émérite

    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Ardèche (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 652
    Par défaut
    Ben si! le principe est le même :-(

  6. #6
    Membre confirmé
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Décembre 2011
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien réseau
    Secteur : Service public

    Informations forums :
    Inscription : Décembre 2011
    Messages : 91
    Par défaut suite réponse
    Voici ton code encore un peu factorisé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    If (typeachat.Value And devise1.Value) Then
     
    prix1.Value = pricers(typeoption, s, k, rf, rd, sigma, maturité())
     
    ElseIf (typeachat.Value And devise2.Value) Then
    prix1.Value = pricers(typeoption, s, k, rf, rd, sigma, maturité())
     
    ElseIf (typevente.Value And devise1.Value) Then
    prix1.Value = pricers(typeoption, s, k, rf, rd, sigma, maturité())
     
    ElseIf (typevente.Value And devise2.Value) Then
    prix1.Value = pricers(typeoption, s, k, rf, rd, sigma, maturité())
     
    End If

  7. #7
    Expert confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    6 814
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 6 814
    Par défaut
    Sinon, j'utilise des trucs du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Select Case True
        Case (typeachat.Value And devise1.Value)
            prix1.Value = pricers(typeoption, s, k, rf, rd, sigma, maturité())
        Case (typeachat.Value And devise2.Value)
            prix1.Value = pricers(typeoption, s, k, rf, rd, sigma, maturité())
        Case (typevente.Value And devise1.Value)
            prix1.Value = pricers(typeoption, s, k, rf, rd, sigma, maturité())
        Case (typevente.Value And devise2.Value)
            prix1.Value = pricers(typeoption, s, k, rf, rd, sigma, maturité())
    End Select
    je trouve ça plus lisible que les elseif - mais c'est sans doute mon coté vieux con.

Discussions similaires

  1. Evaluation/simplification d'expression arithmetique
    Par Premium dans le forum Algorithmes et structures de données
    Réponses: 12
    Dernier message: 08/12/2005, 12h19
  2. Analyse de code HTML et simplification par l'XML
    Par Punky65250 dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 10/11/2005, 10h24
  3. simplification d'un graphe
    Par arnobidul dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 22/09/2005, 18h44
  4. Simplification d'une requête UNION
    Par eautret dans le forum Langage SQL
    Réponses: 6
    Dernier message: 18/01/2005, 14h51
  5. [Kylix] Simplifications de l'écriture Kylix/Pascal"
    Par Mr Vincent KLEIN dans le forum EDI
    Réponses: 1
    Dernier message: 11/03/2003, 11h07

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