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

VBA Access Discussion :

Utilisation de If et ElseIF


Sujet :

VBA Access

  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Août 2005
    Messages : 660
    Par défaut Utilisation de If et ElseIF
    Bonjour,

    Je n’arrive pas à régler le code pour remplir ces différentes 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
    17
    18
    19
    20
    21
    If (Me.cmbCode > 1 And Me.txtMillLicence = CONS_ANNEE_N Or IsNull(Me.txtMillLicence) 
                                        And (Me.txtDateDépart = "") Or IsNull(Me.txtDateDépart) 
                                        And Champ_Montant > 0 And Me.Cocher97 = -1) Then
                                        Me.lblMessage.Caption =  "Renouvelé"
                  
    ElseIf (Me.cmbCode > 1 And Me.txtMillLicence = CONS_ANNEE_N Or IsNull(Me.txtMillLicence) 
                                               And (Me.txtDateDépart = "") Or IsNull(Me.txtDateDépart) 
                                               And Champ_Montant > 0 And Me.Cocher97 = 0) Then
                                               Me.lblMessage.Caption = "Chèque à saisir"
    
    ElseIf (Me.cmbCode > 1 And Me.txtMillLicence = CONS_ANNEE_N Or IsNull(Me.txtMillLicence)
                                               And (Me.txtDateDépart = "" Or IsNull(Me.txtDateDépart)) 
                                               And Champ_Montant > 0 And Me.Cocher97 = 0) 
                                               And Champ_DateAdhésion <= 364 Then
                                               Me.lblMessage.Caption = "Nouveau"
    
    ElseIf (Me.cmbCode > 1 And Me.txtMillLicence <> CONS_ANNEE_N 
                                               And (Me.txtDateDépart <> "") And Me.Cocher97 = -1) Then
                                               Me.lblMessage.Caption = "Non Renouvelée"             
    
    End if
    Pouvez-vous Svp m’aider.

    Salutations

  2. #2
    Expert éminent
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 935
    Par défaut
    bonjour,
    on veut bien aider à la condition que les règles du forum sont bien respectées http://club.developpez.com/regles/#LIII-C
    il faudrait donner un peu plus d'informations: s'agit-il d'erreur de syntaxe ou de compilation dans le code, si oui quelle est l'erreur, ou s'agit-il de résultats incorrects ?

    1) pour commencer si le code posté est ton code actuel je vois déjà qu'il manque le caractère de continuation de ligne, le souligné (_) pour indiquer que la ligne d'instruction continue à la ligne suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If (Me.cmbCode > 1 And Me.txtMillLicence = CONS_ANNEE_N Or IsNull(Me.txtMillLicence)  _
                                        And (Me.txtDateDépart = "") Or IsNull(Me.txtDateDépart)  _
                                        And Champ_Montant > 0 And Me.Cocher97 = -1) Then
                                        Me.lblMessage.Caption =  "Renouvelé"
    'etc.
    2) ensuite, on peut simplifier certaines expressions :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    If (Me.cmbCode > 1 And Me.txtMillLicence = CONS_ANNEE_N Or IsNull(Me.txtMillLicence)  _
                                        And (Me.txtDateDépart = "") Or IsNull(Me.txtDateDépart)  _
    peut s'écrire comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    If (Me.cmbCode > 1 And Me.txtMillLicence = Nz(Me.txtMillLicence, CONS_ANNEE_N) _
                                        And Nz(Me.txtDateDépart, "") = "" _
    cela permet de diminuer le nombre de conditions.

    3) Comme tes conditions sont nombreuses, je te conseille de mettre par écrit toutes les cas de ton algorithme pour t'y retrouver avant de le coder.

  3. #3
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Août 2005
    Messages : 660
    Par défaut
    Bonjour,

    Merci pour la réponse.

    Toutes mes excuses, je ne pensais pas avoir enfreint les règles du Forum.

    Pour les lignes de continuation c’est un oubli de ma part lors de l’écriture
    du message.

    Pour la simplification et le conseil j’en prends bien note.

    Je n’ai pas d’erreur de syntaxe ou de compilation, par contre suivant les cas
    je n’ai pas le Message Souhaité (Renouveler, chèque a saisir, Nouveau, Non renouvelé)

    Salutation.

  4. #4
    Expert éminent
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 935
    Par défaut
    bonsoir,
    Je n’ai pas d’erreur de syntaxe ou de compilation, par contre suivant les cas
    je n’ai pas le Message Souhaité (Renouveler, chèque a saisir, Nouveau, Non renouvelé)
    vu le nombre de conditions ce n'est pas étonnant ...
    Aurais-tu un exemple précis qui ne renvoie pas le bon texte ?
    As-tu essayé le mode débogage pour essayer de trouver d'où vient l'anomalie ?

  5. #5
    Expert éminent
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 935
    Par défaut
    bonsoir,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    ElseIf (Me.cmbCode > 1 And Me.txtMillLicence = Nz(Me.txtMillLicence, CONS_ANNEE_N) 
                                               And Nz(Me.txtDateDépart,"") = "" 
                                               And Champ_Montant > 0 And Me.Cocher97 = 0) Then
                                               Me.lblMessage.Caption = "Chèque à saisir"
    
    ElseIf (Me.cmbCode > 1 And Me.txtMillLicence = Nz(Me.txtMillLicence, CONS_ANNEE_N)
                                               And Nz(Me.txtDateDépart,"") = "" 
                                               And Champ_Montant > 0 And Me.Cocher97 = 0) 
                                               And Champ_DateAdhésion <= 364 Then
                                               Me.lblMessage.Caption = "Nouveau"
    ces 2 instructions ElseIf sont rigoureusement les mêmes à part la condition sur Champ_DateAdhésion sur la seconde, mais comme la première est moins restrictive, le code y passera toujours, il faudrait donc inverser l'ordre ou ajouter la condition inverse de And Champ_DateAdhésion <= 364

  6. #6
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Août 2005
    Messages : 660
    Par défaut
    Bonjour tee_grandBois,

    ajouter la condition inverse de And Champ_DateAdhésion <= 364
    Ajouter la condition inverse c'est faire cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    And (Champ_DateAdhésion <= 364 or Champ_DateAdhésion > 364)
    Salutations

  7. #7
    Expert éminent
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 935
    Par défaut
    bonsoir,
    houla ! cela faisait un bout de temps depuis mon dernier post... Je ne sais plus trop ce qu'il en est de mes propositions...
    Ajouter la condition inverse c'est faire cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    And (Champ_DateAdhésion <= 364 or Champ_DateAdhésion > 364)
    pas vraiment, je pensais plutôt à cela:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    ElseIf (Me.cmbCode > 1 And Me.txtMillLicence = Nz(Me.txtMillLicence, CONS_ANNEE_N) 
                                               And Nz(Me.txtDateDépart,"") = "" 
                                               And Champ_Montant > 0 And Me.Cocher97 = 0) Then
                                               And Champ_DateAdhésion > 364 Then
                                               Me.lblMessage.Caption = "Chèque à saisir"
     
    ElseIf (Me.cmbCode > 1 And Me.txtMillLicence = Nz(Me.txtMillLicence, CONS_ANNEE_N)
                                               And Nz(Me.txtDateDépart,"") = "" 
                                               And Champ_Montant > 0 And Me.Cocher97 = 0) 
                                               And Champ_DateAdhésion <= 364 Then
                                               Me.lblMessage.Caption = "Nouveau"
    puisque les 2 conditions sont les mêmes excepté la condition sur Champ_DateAdhésion

Discussions similaires

  1. Réponses: 2
    Dernier message: 14/05/2015, 23h49
  2. [XL-2010] erreur dans l'utilisation de if, elseif, else imbriqués
    Par Maude_84 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 18/02/2015, 11h41
  3. Utilisation valeurs if, elseif
    Par Fullmetal63 dans le forum Langage
    Réponses: 2
    Dernier message: 27/08/2013, 16h20
  4. utilisation du meta type ANY
    Par Anonymous dans le forum CORBA
    Réponses: 1
    Dernier message: 15/04/2002, 12h36
  5. Réponses: 2
    Dernier message: 20/03/2002, 23h01

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