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

IHM Discussion :

Comment gérer des conditions dans un champ texte de formulaire? [AC-2007]


Sujet :

IHM

  1. #1
    Débutant
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    205
    Détails du profil
    Informations personnelles :
    Localisation : France, Loir et Cher (Centre)

    Informations forums :
    Inscription : Juillet 2009
    Messages : 205
    Points : 89
    Points
    89
    Par défaut Comment gérer des conditions dans un champ texte de formulaire?
    Comment faire pour qu'Access gère des conditions quand aux valeurs d'un champ Texte liè à d'autre champ pour un calcul tout cela dans un formulaire?
    C'est à dire : je veux que si la liste déroulante n°1 est égale à "B" et la liste déroulante n°2 est égale à "32" alors mon champ texte vaut "22"
    Merci
    [Edit]J'ai trouvé une formule
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =RechDom("[Champ1]","[Table1]","[Champ2]= " & Forms![Formulaire]![Modifiable])
    mais cela ne fonctionne toujours pas même en ne mettant que les deux premiers arguments, cela ne marche pas...

  2. #2
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 108
    Points : 5 231
    Points
    5 231
    Par défaut
    Bonjour,

    Quelle est la logique qui permet de conclure que "B" et "32" donnent "22" ???

  3. #3
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 365
    Points : 23 835
    Points
    23 835
    Par défaut
    Tu peux utiliser IIF(Condition, Action vraie, Action fausse)

    ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =iif([Liste1]="B" and [Liste2]=32;"22";"")
    A+

  4. #4
    Débutant
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    205
    Détails du profil
    Informations personnelles :
    Localisation : France, Loir et Cher (Centre)

    Informations forums :
    Inscription : Juillet 2009
    Messages : 205
    Points : 89
    Points
    89
    Par défaut
    Effectivement marot_r cela marche : Merci beaucoup

    Sinon le but était d'aller chercher dans une table où était référencées les différentes données et ainsi en croisant les résultats on obtenait la valeur recherchée.

  5. #5
    Membre régulier Avatar de GillesDeVuif
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    88
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 88
    Points : 110
    Points
    110
    Par défaut Demande de précision
    Bonjour Glooping.
    Si tu parles de 2 listes déroulantes dont la combinaison de sélections doit donner lieu à une modification de champ texte, ça pourrait se construire comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Private Sub Modifiable1_afterupdate()
    Criter1 = Me.Modifiable1
    End Sub
    Pour donner à une variable la valeur de ta sélection dans le combo.
    Idem pour le deuxième combo.

    Puis créer un bouton de commande affectant la valeur qui va bien à ton champ texte en fonction de la combinaison des deux variables, avec par exemple un select case imbriqué.

    @+

  6. #6
    Débutant
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    205
    Détails du profil
    Informations personnelles :
    Localisation : France, Loir et Cher (Centre)

    Informations forums :
    Inscription : Juillet 2009
    Messages : 205
    Points : 89
    Points
    89
    Par défaut
    Je vois mais où mettre le code que tu m'as donné?
    Comment affecter un code qui met à jour le champ?
    De plus, comment fonctionne le select case?
    et oui je débute

  7. #7
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 108
    Points : 5 231
    Points
    5 231
    Par défaut procedure evenementielle
    Dans les propriétés du champ liste1 il est possible de demander l'exécution d'une procédure après mise à jour du champ (idem pour liste2) :
    Après MAJ.......................[procédure evenementielle]

    En cliquant sur ... à droite on saisit le code VBA :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    private sub liste1_afterupdate
    dim rst as recordset
    if liste1>" " and not isnull(liste2) then
    Set rst = CurrentDb.OpenRecordset("SELECT cquifaut from labonnetable where champ1='" & liste1 & "' and champ2=" & liste2 & ";)
    if rst.eof then
      MsgBox "mauvaise pioche :("
    else
      champquivabien = rst!cquifaut
    end if
    rst.close
    End Sub
    Dans mon exemple j'imagine que liste1 est un texte et liste2 un nombre.

    Y'a surement plein de super tutos là dessus

  8. #8
    Débutant
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    205
    Détails du profil
    Informations personnelles :
    Localisation : France, Loir et Cher (Centre)

    Informations forums :
    Inscription : Juillet 2009
    Messages : 205
    Points : 89
    Points
    89
    Par défaut
    Je vois ce qu'il faut faire à part un détail mes données se croisant je ne vois pas par quoi remplacer le "cquifaut".
    D'avance merci

  9. #9
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 108
    Points : 5 231
    Points
    5 231
    Par défaut
    Pour cela il faut répondre à ma 1ere question :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Quelle est la logique qui permet de conclure que "B" et "32" donnent "22" ???
    Dit autrement il te faut écrire la requête qui trouve le résultat souhaité en fonction des 2 paramètres saisis

  10. #10
    Débutant
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    205
    Détails du profil
    Informations personnelles :
    Localisation : France, Loir et Cher (Centre)

    Informations forums :
    Inscription : Juillet 2009
    Messages : 205
    Points : 89
    Points
    89
    Par défaut
    Le croisement de deux données dans une table.

  11. #11
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 108
    Points : 5 231
    Points
    5 231
    Par défaut
    Quelquechose comme ça ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "select " & MonChamp & " as cquifaut from LaTable where LaLigne = " & MaLigne
    Ainsi à l'exécution la requête se fera sur le champ choisi à la ligne voulue et l'alias permet de récupérer le résultat toujours dans la même variable

  12. #12
    Débutant
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    205
    Détails du profil
    Informations personnelles :
    Localisation : France, Loir et Cher (Centre)

    Informations forums :
    Inscription : Juillet 2009
    Messages : 205
    Points : 89
    Points
    89
    Par défaut
    Encore une fois, je ne vois pas à quoi peut corespondre cquifaut.

  13. #13
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 108
    Points : 5 231
    Points
    5 231
    Par défaut
    Dans mon dernier post c'est un alias donc tu l'appelles comme tu veux, il sert juste à pouvoir appeler rst!cquifaut ainsi le champ a toujours le même nom quelque soit la colonne de la table choisie (alors qu'en vrai chaque colonne a un nom différent).

  14. #14
    Débutant
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    205
    Détails du profil
    Informations personnelles :
    Localisation : France, Loir et Cher (Centre)

    Informations forums :
    Inscription : Juillet 2009
    Messages : 205
    Points : 89
    Points
    89
    Par défaut
    J'ai fait comme tu m'as dit je fais mes deux codes, j'enregistre le tout sous microsoft visual basic et il me mets qu'il ne connait pas les objets "modifiableX_afterupdate"!
    Que faire?
    [Edit]Je suis arrivé à ce qu'il me lance la procédure mais le problème vient du fait qu'il n'accepte pas le "Select" il me mets que pour la clause Where il n'y a pas d'opérateur poutant il me mets comme expression
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [table]![ligne] = Nom 1
    .

  15. #15
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 108
    Points : 5 231
    Points
    5 231
    Par défaut
    Tu as bien un code comme ça ?

    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
    private sub liste1_afterupdate
    dim rst as recordset
    dim T as string
    if liste1>" " and not isnull(liste2) then
      T = "select " & liste1 & " as cquifaut from LaTable where LaLigne = " & liste2 & ";"
      msgbox T 
      Set rst = CurrentDb.OpenRecordset(T)
      if rst.eof then
        MsgBox "mauvaise pioche :("
      else
        champquivabien = rst!cquifaut
      end if
      rst.close
    end if
    End Sub
    J'ai ajouté la variable T pour visualiser la requête avant de l'exécuter...

  16. #16
    Débutant
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    205
    Détails du profil
    Informations personnelles :
    Localisation : France, Loir et Cher (Centre)

    Informations forums :
    Inscription : Juillet 2009
    Messages : 205
    Points : 89
    Points
    89
    Par défaut
    J'essaie de faire comme dit mais il me met "Erreur de compilation: Attendu : séparateur de liste ou )"
    [edit]Toujours le même problème d'Erreur de syntaxe (opérateur absent) dans l'expression
    Erreur d'exécution '3075'[edit]

  17. #17
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 108
    Points : 5 231
    Points
    5 231
    Par défaut
    Garde juste la ligne MsgBox T : ça affiche quoi ?

  18. #18
    Débutant
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    205
    Détails du profil
    Informations personnelles :
    Localisation : France, Loir et Cher (Centre)

    Informations forums :
    Inscription : Juillet 2009
    Messages : 205
    Points : 89
    Points
    89
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Select Amiante as cquifaut from [tarifs] where [tarifs]![type] = ap T4;
    J'ai changé le paramètre Pour qu'il n'y ai plus d'espace mais il me met maintenant "Erreur d'exécution '3061':
    Trop peu de paramètres. 1 attendu."

    [Re-Edit]
    J'ai essayé la requète en mettant des guillemets autour de ap T4 mais cela me donne une erreur de syntaxe comment faire?
    J'ai essayé d'intégrer les guillemets dans ma table mais cela donne pas de meilleur résultats.
    [Edit]
    [Re-Re-Edit]
    Finalement j'ai trouvé le Select devait bénéficier de plus de guillements que ce qui était "fournit" au départ :
    Select " & [Modifiable4] & " as cquifaut from [Tarifs] where [Tarifs]![Type] =""" & [Modifiable6] & """;"
    [Edit]

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 27/08/2008, 09h13
  2. Comment gérer des mp3 dans une animation flash ?
    Par jonglo-sapiens dans le forum Flash
    Réponses: 3
    Dernier message: 03/01/2008, 10h01
  3. Réponses: 3
    Dernier message: 13/03/2007, 13h40
  4. [HTML] formulaire gérer les espaces dans un champs texte
    Par renofx1 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 12/01/2006, 14h17
  5. Réponses: 3
    Dernier message: 27/06/2005, 16h24

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