Fonction vba access avec arguments

kolima -  
lermite222 Messages postés 9042 Statut Contributeur -
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

  1. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    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
  2. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    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+

    0
    1. kolima
       
      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.
      0