Bonjour à tous et merci de votre aide et de votre temps.
- J'ai trois niveaux hiérarchiques : Direction, Territoire et Groupe d'affectation.
- J'ai une requête de regroupement un peu complexe qui fait actuellement le regroupement au niveau du groupe d'affectation.
Elle me donne entre autre le nombre de personnes. (ex : 21 personnes dans le groupes d'affectation 1).- J'ai la possibilité de filtrer mes données par niveau hiérarchique (ex : je ne veux voir que les données du territoire 1 qui comprend 6 groupes).
Donc j'ai fait un DCount("ClefPersonne", "MaRequête", MonFiltreVariable) pour trouver le nombre au trois niveaux avec une seule et même requête.
MonFiltreVariable contient quelque chose comme [NoDir]=0 and [NoTerr]=1.
Ce filtre est composé par VBA en réaction aux choix du client.
Tout allait bien jusqu'à ce que mon client me demande la possibilité d'avoir une personne dans plusieurs groupes d'affectation.
Donc si je fais un bête regroupement au niveau de la direction, une même personne est comptées autant de fois qu'elle a de groupes.
J'ai trouvé une parade : passer un paramètre [prmNiveauHierarchique] à ma requête de regroupement qui va "annuler" les niveaux hiérarchiques dont je n'ai pas besoin (ex : Annule le niveau Groupe quand je demande un total au niveau du territoire).
Là je ne trouve pas de moyen de passer à la fois le filtre ET mon paramètre ni pour le moment de voie de contournement simple.
Comme ma requête est complexe ET que je fais souvent des modifs, je n'ai pas envie d'avoir une requête pour la direction, le territoire et le groupe.
Dernier point, j'appelle ce DCount() depuis pas mal d'endroits et donc je ne peux pas supposer qu'un formulaire soit ouvert au moment où j'en ai besoin.
On pourrait envisager d'utiliser une variable globale pour passer [prmNiveauHierarchique], mais je ne suis pas un grand amateur de variable globale.
Compte tenu de ces contraintes, quelqu'un aurait-il une idée ou une piste ?
A+
Partager