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

Access Discussion :

Si... alors dans une requête


Sujet :

Access

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 111
    Points : 32
    Points
    32
    Par défaut Si... alors dans une requête
    Hello,

    Je suis débutant et la fonction SI ALORS était bien pratique sur excel.

    Deux petits problèmes avec si... alors:

    1) on m'a montré le code pour créer une fonction "si...alors" que j'insère ensuite dans le critère de ma requête. Seulement ça ne marche plus avec le nouveau filtre que j'ai fait. Quand je suis dans VBA, le formulaire filtre avec des zone de listes déroulantes auxquelles je veux faire référence n'apparait pas dans les "access object". Du coup, il m'est impossible de faire référence à mes zone de liste dans ma fonction.
    une idée?

    2) y a til un autre moyen plus simple de faire des "si... alors"? Par exemple avec le générateur d'expression (je n ai pas réussi)

    je sais que ça semble bizarre mais je bloque vraiment et ne sais pas pour quoi, surtout en ce qui concerne le 1)

    Merci

  2. #2
    Provisoirement toléré Avatar de charleshbo
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    222
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 222
    Points : 125
    Points
    125
    Par défaut
    Voici la structure d'un SI...ALORS

    Il s'agit d'un IF THEN END IF

    Tu dois procéder comme ceci...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    If condition1 Then
    instruction1
    End If
    tu peux aussi mettre plusieurs conditions ou des SINON (ELSE, ELSEIF)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    If condition1 Or/And condition2 Then
    instruction1
    ElseIf condition3 Then
    instruction2
    Else
    instruction3
    End If
    en esperant t'avoir éclairci un peu...
    Charles Bergeron - Webmaster/Infographe/Photographe

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 111
    Points : 32
    Points
    32
    Par défaut
    oui, c'est sympa merci.

    Mais je connaissais. Et justement, le truc bizarre c'est que ça ne marche plus avec mon nouveau formulaire (qui me sert de filtre pour faire des états selon plusieurs listes déroulantes)...: mes nouveaux fomulaires créés ne semble pas reconnu dans le code, c'est possible?

  4. #4
    Provisoirement toléré Avatar de charleshbo
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    222
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 222
    Points : 125
    Points
    125
    Par défaut
    post ton code pour voir
    Charles Bergeron - Webmaster/Infographe/Photographe

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 111
    Points : 32
    Points
    32
    Par défaut
    ok je frais demain là je suis son un mac

    merci :)

  6. #6
    Provisoirement toléré Avatar de charleshbo
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    222
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 222
    Points : 125
    Points
    125
    Par défaut
    ok envoie moi un MP quand tu aura posté...
    Charles Bergeron - Webmaster/Infographe/Photographe

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 111
    Points : 32
    Points
    32
    Par défaut
    voilà mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Public Function Critere8() As Variant'
    If Form_Forulaire1.Modifiable12<> "" Then
           Critere8=Form_Forulaire1.Modifiable12
    Else
           Critere8="%"
    End If
    End Function

  8. #8
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    J'ai un autre moyen.
    Ca ne répond pas à la question mais ça la contourne.

    Dans la propriété du contrôle "Valeur par défaut", mets une *.
    Fais une requête qui sert de filtre et dans le critère,
    mets Like [modifiablex].

    Si une valeur se trouve dans le contrôle, elle sert de critère, si pas de valeur, tous les enregistrements sont affichés.
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 111
    Points : 32
    Points
    32
    Par défaut
    Merci!!!!

    C'est f abuleusement génialissime et ça me rends grand service.

    Mais il me rste quand même une petite partie du problème. Car j aimerais pouvoir me servir de ces si alors, notamment pour une case à cocher triple état où je risque d'avoir le même problème.

    Mais merci beaucoup, ça va me simplifier la vie

  10. #10
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    En général, j'utilise les assistants de requête et je n'écris rien en SQL (ça viendra peut-être.

    Dans la case ou se trouve le nom du champ, tu entre un nom quelconque qui sera le nom de ton champ dans l'affichage du résultat.

    Nomqq : iif([Caseàcocher]=1;Valeur si vrai;Valeur si faux).

    Valeur si vrai ou Valeur si faux peuvent à leur tour être remplacée par un immediate If (iif).
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  11. #11
    Membre habitué
    Inscrit en
    Novembre 2005
    Messages
    136
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 136
    Points : 163
    Points
    163
    Par défaut
    bonjour,


    en lisant
    Form_Forulaire1.Modifiable12
    je suggère:

    -vérifier la syntaxe du code car, sauf si erreur de frappe lors du post, un Form_Formulaire1 serait plus propice

    - utiliser des noms de champs & formulaires plus précis pour faciliter les recherches

    - peut être faire explicitement référence à la propriété à tester du
    champ Modifiable12 (ex if Form_Forulaire1.Modifiable12.value = x then...)


    cordialement,

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 111
    Points : 32
    Points
    32
    Par défaut
    top cette fonction iif
    effectivement c'est simple et efficace. merci merci
    et tant que j'y suis :-)

    pour avoir

    si 3 <[exp]<5 alors 1;
    ou si [exp]>5 alors 2
    sinon 0

    tu formalises ça comment?

  13. #13
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 111
    Points : 32
    Points
    32
    Par défaut
    heu oui c'est une erreur de frappe

    je vais essayer avec .value

    merci

  14. #14
    Provisoirement toléré Avatar de charleshbo
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    222
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 222
    Points : 125
    Points
    125
    Par défaut
    Citation Envoyé par ivan7
    top cette fonction iif
    effectivement c'est simple et efficace. merci merci
    et tant que j'y suis :-)

    pour avoir

    si 3 <[exp]<5 alors 1;
    ou si [exp]>5 alors 2
    sinon 0

    tu formalises ça comment?
    je t'ai deja montrer comment formaliser cela, regarde plus haut.
    Charles Bergeron - Webmaster/Infographe/Photographe

  15. #15
    Rédacteur/Modérateur

    Avatar de Heureux-oli
    Homme Profil pro
    Contrôleur d'industrie
    Inscrit en
    Février 2006
    Messages
    21 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

    Informations professionnelles :
    Activité : Contrôleur d'industrie
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 21 087
    Points : 42 926
    Points
    42 926
    Par défaut
    Citation Envoyé par ivan7
    top cette fonction iif
    effectivement c'est simple et efficace. merci merci
    et tant que j'y suis :-)

    pour avoir

    si 3 <[exp]<5 alors 1;
    ou si [exp]>5 alors 2
    sinon 0

    tu formalises ça comment?
    Iif (3<[Exp]<5; 1;iif([exp]>5;2;0))
    J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
    Débutez en VBA

    Mes articles


    Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !

  16. #16
    Provisoirement toléré Avatar de charleshbo
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    222
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 222
    Points : 125
    Points
    125
    Par défaut
    merci d'utiliser la balise code...

    Tu peux aussi faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    If 3 < exp < 5 Then
       1
    ElseIf exp > 5
       2
    Else
       0
    End If
    en mettant tes crochets, je ne les ai pas sur mon clavier... ou bien je ne connais pas les code ALT pour les crochets...
    Charles Bergeron - Webmaster/Infographe/Photographe

  17. #17
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 111
    Points : 32
    Points
    32
    Par défaut
    re... toujours le même problème...

    la fonction Iif est bien pratique, mais pour un état filtré avec plein de critères et de conditions ça finit par faire quelque chose d'un peu lourd et access rame un peu (ou alors je m'y prends mal)

    Quoi qu'il en soit j'ai toujours le même problème avec mon code que je vous avais mis plus haut. En fait le problème est exactement celui ci:

    Quand je fait référence à un formulaire dans une fonction If dans un module, j'ai une liste de possiblité avec (notamment) mes différentes zones de listes déroulantes appartenant au formulaire auquel je fais référence qui apparait :

    Form_monform. et là ma liste de possibilités. Ce qui montre que mon formulaire est "reconnu". Or, là, rien ne s'affiche et le code n'est pas considéré comme bon quand j'insère la fonction dans la requête. Une idée?

  18. #18
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 524
    Points
    14 524
    Par défaut
    slt,

    la fonction Iif est bien pratique, mais pour un état filtré avec plein de critères et de conditions ça finit par faire quelque chose d'un peu lourd et access rame un peu (ou alors je m'y prends mal)
    si plus de deux expressions à évaluer alors utiliser switch :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    switch(3 <[exp]<5,1,[exp]>5,2,true,0)
    retourne la valeur correspondant à la première expression vraie

    donc pour accélérer les traitements, mettre les expressions les plus souvent vraies en premier

    Form_monform. et là ma liste de possibilités. Ce qui montre que mon formulaire est "reconnu". Or, là, rien ne s'affiche et le code n'est pas considéré comme bon quand j'insère la fonction dans la requête. Une idée?
    utilise le générateur d'expression pour faire appel à tes contrôles depuis une requête, ça te donnera la syntaxe

  19. #19
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 111
    Points : 32
    Points
    32
    Par défaut
    Merci pour le Switch!

    Mais pour le deuxième problème ce n'est pas dans la requête que j'ai un problème, c'est dans mon module.

    Je crée une fonction

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Public Function Critere8() As Variant' 
    If Form_Formulaire1.Modifiable12<> "" Then 
    Critere8=Form_Formulaire1.Modifiable12 
    Else 
    Critere8="%" 
    End If 
    End Function
    et d'habitude, après le point de Form_Formulaire1. ça me propose une liste de choix, dont Modifiable12 normalement. Or la fontion bug, et je ne sait pas pourquoi. Pour mon autre filtre ça marchait...

  20. #20
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 524
    Points
    14 524
    Par défaut
    Form_Formulaire1 c'est le nom du formulaire?

    ça ressemble au préfixe des événements, c'est pas plutôt Formulaire1 tout court?

    ou alors
    et comme Critere8 est de type variant,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Critere8=Form_Formulaire1.Modifiable12
    renverra l'objet contrôle et non pas sa valeur (donc précise .value)

Discussions similaires

  1. Différence entre majuscule et minuscule dans une requête
    Par Asdorve dans le forum Langage SQL
    Réponses: 2
    Dernier message: 23/06/2004, 14h42
  2. Utilisation de MAX dans une requête SQL
    Par Evil onE dans le forum Langage SQL
    Réponses: 7
    Dernier message: 15/06/2004, 18h38
  3. calcul dans une requête
    Par blaz dans le forum Langage SQL
    Réponses: 8
    Dernier message: 22/12/2003, 10h31
  4. [SQL] Renommer un champ dans une requête
    Par martonpylon12 dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 15/11/2003, 01h59
  5. petit probleme dans une requte POSTGRE SQL
    Par ghis le fou dans le forum Requêtes
    Réponses: 5
    Dernier message: 08/09/2003, 13h51

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