Fonction vba access avec arguments

Fermé
kolima - 13 oct. 2012 à 13:14
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 - 15 oct. 2012 à 12:49
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

lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
15 oct. 2012 à 12:49
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
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
13 oct. 2012 à 14:36
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
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