Fonction vba access avec arguments

Bonjour,

j'ai deux tables:
table 1 de notation ou je renseigne la note, l'age et le sexe
table 2 où chaque notes a plusieurs champ texte d'observations correspondant par tranche d'age et par sexe

du moment que j'ai des milliers de feuille à renseigner je dois automatiser l'insertion de l'observation dans la feuille de note en se basant sur la feuille 2.

je propose l'algorithme suivant

fonction retourner_obs(sexe,age,note)
{
var1 text;
si (sexe=m) alors {switch (age)
{case(age<30) : var1 = (select obs from table_obs where notation=note; break;
case(age<40) : var1 = (select obs from table_obs where notation=note; break;
case(age<50) : var1 = (select obs from table_obs where notation=note; break;
case(age>50) : var1 = (select obs from table_obs where notation=note; break;
}}
sinon { switch (age)
{case(age<30) : var1 = (select obs from table_obs where notation=note; break;
case(age<40) : var1 = (select obs from table_obs where notation=note; break;
case(age<50) : var1 = (select obs from table_obs where notation=note; break;
case(age>50) : var1 = (select obs from table_obs where notation=note; break;
}
}
retourner var1
}

comme je suis un debutant en vba je n'arrive à extraire le champs obs de la table_obs et le mettre dans var1.
quelqu'un peut m'aider. merci

2 réponses

  • Votes
  • Date
  • Date décroissante
  1. Contributeur
    Re,
    Je ne connais pas Access et ne peu t"aider au niveau du code spécifique..
    Mais en gros, si tu est dans une fonction/formulaire, ta BD est déjà ouverte Non?
    Faut faire une requête pour sélectionner la table et ensuite les champs.
    Repose ta question sur un nouveau topic, mois je sais pas t'aidé sur ce sujet.
    A+
    1. Contributeur
      Bonjour,
      J'ai pas bien compris ce que tu renvoi ?
      Public Function retourner_obs(sexe As String, age As Integer, note As String) As String
          If sexe = "m" Then
              Select Case age
              Case Is < 30: retourner_obs = Champ1
              Case Is < 40: retourner_obs = Champ2
              Case Is < 50: retourner_obs = Champ3
              Case Else: retourner_obs = Champ4
              End Select
          Else
              Select Case age
              Case Is < 30: retourner_obs = Champ5
              Case Is < 40: retourner_obs = Champ6
              Case Is < 50: retourner_obs = Champ7
              Case Else: retourner_obs = Champ8
          End If
      End Function

      Tu a une erreur dans ton algo, tu test <50 et >50.. SI 50 ?
      A+

      1. merci pour ta réponse et ta correction de mon algorithme. Il me reste le problème de renvoyer la valeur des champs 1 à 7 dans la fonction. autrement dit, commet faire pour ouvrir la base, exécuter la requête et renvoyer sa valeur vers la fonction. Je pense que je dois utiliser une autre fonction qui effectue la tâche d'ouverture de la base currentDb et l'exécution de la requête tout en tenant compte de l'utilisation de l'argument note dans ma nouvelle fonction.