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

Affichage des résultats du sondage: Qu'en pensez vous?

Votants
1. Vous ne pouvez pas participer à ce sondage.
  • Impossible

    0 0%
  • Difficile

    1 100,00%
  • Facila

    0 0%
  • Heuuu je ne sais pas !

    0 0%
Macros et VBA Excel Discussion :

Fonction SI sous VBA


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 19
    Par défaut Fonction SI sous VBA
    onjour à tous,

    Bonjour le forum,

    J'ai une question SVP, pour que je puisse mettre une fonction SI sous VBA pouvez vous m'orienter vers le bon chemin SVP
    Car sous VBA il n'accepte pas les ;

    Voici ma formule :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SI(G15=O14;O15;SI(G15=P14;P15;SI(G15="Non acquis";0;"")))
    Sous VBA je mets ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IF(A15=B14;B15;IF(A15=C14;C15;IF(A15="Critère";0;" ")))
    J'ai lu un article sur Internet qui dis que le virgule doit être remplacé par "Then" mais le problème je ne suis pas arrivé à le faire

    Merci pour votre aide

    En PJ un exemple pour voir clair
    Fichiers attachés Fichiers attachés

  2. #2
    Membre émérite
    Homme Profil pro
    retraité
    Inscrit en
    Mai 2006
    Messages
    542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Mai 2006
    Messages : 542
    Par défaut
    Bonsoir à tous
    Bonsoir tdaoui

    Sous VBA le SI s'écris comme cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    If A15=B14 then
    B15  'la il faut une "égalité" cad "la cellule active=B15"
    else    'l'équivalent de "sinon"
    "la cellule active" = xxxxx ou on peut relancer un IF mais attention au cumul, on 'est vite perdu
    'et on fini par 
    end if
    en clair
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If A15=B14 then
    A17=B15
    else
    A17=B18
    end if
    Eric

  3. #3
    Membre chevronné
    Inscrit en
    Janvier 2008
    Messages
    483
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 483
    Par défaut Imbrication de plusieurs «SI» en VBA
    Bonsoir à toutes et à tous,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    x = [If(G15=O14,O15,If(G15=P14,P15,If(G15="Nom acquis",0,"")))]
    MsgBox x
    Cordialement Abed_H

  4. #4
    Membre chevronné
    Avatar de Bigalo
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    445
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 445
    Par défaut
    Bonsoir,

    L’équivalent de la fonction SI() des feuilles de calcul est IIf (2 "i" à la suite) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Label4 = IIf(Range("B11") = Range("H1"), Range("H2"), IIf(Range("B11") = Range("I1"), Range("I2"), IIf(Range("B11") = "Non acquis", 0, " ")))
    devrait correspondre à ton attente.

    IIf est une fonction extrêmement pratique que beaucoup méconnaissent, sous prétexte qu’existe aussi If, qui a un rôle complètement différent : If est un élément qui permet de structurer un morceau de programme. En voici un exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        If Condition Then
            ' Ton traitement si la condition est remplie
        End If
    avec des variantes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        If Condition Then
            ' Ton traitement si la condition est remplie
        Else
            ' Ton traitement si la condition n’est pas remplie
        End If
    Voire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        If Condition Then
            ' Ton traitement si la condition est remplie
        ElseIf Condition2 Then
            ' Ton traitement si la condition n’est pas remplie, mais que la condition 1 l’est
        Else
            ' Ton traitement si aucune des 2 conditions n’est remplie
        End If
    Lorsqu’il n’y a qu’une instruction à exécuter si la condition est remplie, on peut tout écrire sur une ligne, et dans ce cas, le End If ne s'emploie pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        If Condition Then ' Une instruction unique
    Quand, au contraire, le nombre d’options à prendre en compte est important, il vaut mieux utiliser la structure

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
        Select Case Range("B11")
            Case 1
                ' Groupe d’instructions N° 1
            Case 3
                ' Groupe d’instructions N° 2
            Case 8
                ' Groupe d’instructions N° 3
            '...
            Case Else
                ' Groupe d’instructions N° N
        End Select
    Regarde l’aide pour plus d’info.

    C’est par que If existe en tant qu’élément de structure dans de nombreux langages de programmation, qu’il a fallu imaginer cette orthographe particulière pour l’équivalent du SI() de la feuille de calcul.

    Cordialement,

  5. #5
    Membre chevronné
    Avatar de Bigalo
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    445
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 445
    Par défaut
    Bonsoir, et bienvenue ici

    Dan ce cas précis cela marche, mais :

    • Tu aurais pu lui préciser que les crochets sont un raccourci pour la fonction Evaluate.
    • D’autre part, tu ne réponds pas sur un plan général à sa question : comment avoir en VBA l’équivalent du SI() de la feuille de calcul : s’il a besoin de faire références à des variables définies dans VBA, il ne pourra utiliser ni les crochets, ni Evaluate !


    Cordialement,

    Citation Envoyé par Abed_H Voir le message
    x = [If(G15=O14,O15,If(G15=P14,P15,If(G15="Nom acquis",0,"")))]

  6. #6
    Membre chevronné
    Inscrit en
    Janvier 2008
    Messages
    483
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 483
    Par défaut
    Merci Bigalo pour ces remarques.

  7. #7
    Membre chevronné
    Avatar de Bigalo
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    445
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 445
    Par défaut
    De rien

    Citation Envoyé par Abed_H Voir le message
    Merci Bigalo pour ces remarques.

  8. #8
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 19
    Par défaut
    Merci à vous tous

    Question bête : Comment afficher le résultat en %

    PS : je ne veux pas faire ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Label4 = IIf(Range("B11") = Range("H1"), Range("H2"), IIf(Range("B11") = Range("I1"), Range("I2"), IIf(Range("B11") = "Non acquis", 0, " "))) * 100 & "%"
    Merci d'avance

  9. #9
    Membre chevronné
    Avatar de Bigalo
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    445
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 445
    Par défaut
    Bonsoir,

    Désolé de répondre si tard, mais j’étais à l’extérieur !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Label4 = Format(IIf(Range("B11") = Range("H1"), Range("H2"), IIf(Range("B11") = Range("I1"), Range("I2"), IIf(Range("B11") = "Non acquis", 0, " "))), "0.00%")
    Cordialement,

  10. #10
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 19
    Par défaut
    Merci à toi Bigalo :-D

    Bon boulot !

  11. #11
    Membre chevronné
    Avatar de Bigalo
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    445
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 445
    Par défaut
    De rien

    Citation Envoyé par tdaoui Voir le message
    Merci à toi Bigalo :-D

    Bon boulot !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2003] Incrémentation de réponses avec Fonction Inputbox sous VBA
    Par thé-citron dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 09/03/2011, 17h06
  2. Fonction IF sous VBA
    Par RussellD dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 06/04/2010, 17h41
  3. [AC-2003] fonction aperçu sous VBA
    Par zoulou153 dans le forum VBA Access
    Réponses: 4
    Dernier message: 10/04/2009, 02h30
  4. L'équivalent de la fonction "PREVISION" sous VBA
    Par etorria dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 29/03/2008, 00h00
  5. [VBA-E]Fonction Racine sous VBA
    Par vuong1 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 12/04/2007, 00h48

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