Access VBA - Requete - fonctions sur les champs

cyrilmullard Messages postés 2 Date d'inscription vendredi 11 mai 2007 Statut Membre Dernière intervention 11 mai 2007 - 11 mai 2007 à 16:10
cyrilmullard Messages postés 2 Date d'inscription vendredi 11 mai 2007 Statut Membre Dernière intervention 11 mai 2007 - 11 mai 2007 à 18:23
Bonjour a tous,<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /??>







Je réalise actuellement une base de données sous ACCESS 2003 permettant a partir de l’analyse microsonde d’un grain de définir sa formule chimique et donc le minéral dont il s’agit.







Pour chaque grain on analyse différents oxydes : SiO2, TiO2, etc.







Ensuite je réalise une requete incluant la création de nombreux champs calculés.







Mon premier probleme concerne la lourdeur de ces calculs. Je m’explique.







Chaque champs calculé est basé sur un autre champs calculé et il m’est impossible de créer tous les champs calculés car la requete s’avere trop complexe ou la mémoire insuffisante.







Pour alléger certaines formules, je souhaite donc passer par la création de fonctions en VBA mais je suis débutant et je rame énormément. C’est pourquoi je fais appel a vos lumieres.







Voici un petit exemple :







- Soit G1 et G2 deux champs calculés basés sur les teneurs en poids d’oxydes :







Ex pour une ligne d’enregistrements : G1 686,2137 et G2 542,4545 etc.







- Je créé ensuite un champs calculé nommé Dominant qui compare ces deux champs et affiche la valeur maximale. Via le code :







Public Function VariableMax(ParamArray LesVariables() As Variant)







Dim intVariable As Integer







Dim varMax







For intVariable = 1 To UBound(LesVariables())








    



If LesVariables(intVariable) > varMax Then varMax = LesVariables(intVariable)







Next intVariable







VariableMax = varMax







End Function</code>







Ex d'une ligne d’enregistrements : G1 686,2137  et G2 542,4545  et Dominant = 686







- Maintenant je souhaite créer un champs Molecule qui affiche le nom du champs contenant la valeur maximale.







Ex une ligne d’enregistrements : G1 686,2137   et G2 542,4545  et Dominant = 686 et Molecule = G1







Merci d’avance. Cordialement

2 réponses

cs_lermite222 Messages postés 492 Date d'inscription jeudi 5 avril 2007 Statut Membre Dernière intervention 2 juillet 2012 4
11 mai 2007 à 17:54
bonjour,
J'ai été confronté au même problème pour une autre formule (enthalpie de l'air en fonction de la Tp et de l'Hu) mais il faut d'abord établir la formule mathématique qui te permette d'arriver a   en trouver le résultat. Ensuite cela parait simple pour transcrire ces données dans un tableau.
1°) Evaluer la formule, soit en une partie ou en plusieur, mais plus simple de les initialiser en une seule formule. Ensuite, la réalisation devient un jeu d'enfant.
Je ne sais pas si j'ai été clair mais c'est une des solutions.
Je reviendrais sur ce poste, il m'interesse.
A+
louis
0
cyrilmullard Messages postés 2 Date d'inscription vendredi 11 mai 2007 Statut Membre Dernière intervention 11 mai 2007
11 mai 2007 à 18:23
Bonjour Louis,

En fait pour chaque analyse, j'ai une trentaine de champs calculés basés les uns sur les autres mais on souhaite tous les renseigner. 
Ex : 
- A=16 basé sur les poids d'oxydes
- Porportions cationiques de chaque élément basées sur A=16 et le poids dòxyde de -l`élément concerné
etc...
Certaines formules sont des conditionnelles donc tu vois je suis obligé de décomposer.

Je souhaiterais traduires les plus complexes en fonction mais je ne sais pas programmer correctement. 
0
Rejoignez-nous