OVH Cloud OVH Cloud

Mise a jour de compteurs en VBA

2 réponses
Avatar
J2M27
Bonjour,

J'aimerai mettre à jour des compteurs en activant un module VBA
Voila le contexte

Table A (env 150 enreg) contenant des compteurs, reliée à une table B (env
2000 enreg) par un code commun
je veux mettre à jour , pour chaque enregistrement de A les compteurs,
par le nombre d'enreg de B correspondant à l'enregistrement A + et répondant
à d'autres critères contenus dans B.

Comment écrire la boucle qui va parcourir chaque enregistrement de A
et pour chaque enregistrement
requète pour trouver le nombre d"enreg B (même clé et répondant au
critère)
mise à jour du compteur
etc..

Cela doit être évident pour vous, mais j'avoue être sec sur le principe

Merci d'avance
Slts
Jean-Marc

2 réponses

Avatar
david
salut,

je ne pense pas qu'il y ai besoin de faire du VBA pour cela. Du SQL
devrait suffir.
Par exemple: la requete StatClasse qui va me retourner pour chaque
classe, le nombre d'élève, de garçon et de fille :
SELECT NCla, Count(*) As NbElèves, Count(IIf(Sexe=0; Null; 1)) As
NbGarçons, Count(Iif(Sexe=1; Null; 1)) As NbFilles FROM Classes INNER
JOIN Eleves ON Classes.NCla = Eleves.NCla
Ici, j'ai effectué un comptage global : Count(*) et 2 comptages sur
critères Count(IIf...
Il faut savoir que Count, ne compte que les expression non Null, donc
en marquant 1 quand le critère et rempli et Null dans le cas
contraire, la fonction Count se transforme en CountIf.

Donc, pour en revenir à ton cas, il n'est en général pas besoin de
stocker des compteurs comme tu le fait, surtout si ces compteurs sont
le reflets d'opération de calcul sur la base de données. Une requête
bien écrite peu te faire gagner de la place en bdd.

A+
Avatar
J2M27
Bonsoir et merci David,
Pour chaque enregistrement (chez moi un code formation)
Je veux : le nombre de personnes devant passer cette formaiton
le nb de personnes ayant passé cette formation
le nb de personnes ayant réussi cette formation
le nb de personnes ...
Et je me sert de ces résultats pour faire un tableau de suivi global de ces
formations.
Je vois mal une édition effectuant 5 x 150 requètes SQL avec des champs
calculés sur ces résultats.
C'est pour cela que je pense à un petit module qui stocke les résultats et
permette de lancer les x éditions derrière et je bloque sur la boucle sur la
première table, pour faire mes requètes SQL en m'inspirant de ton exemple.

Encore merci de vos conseils

Jean-Marc

"david" a écrit dans le message de news:

salut,

je ne pense pas qu'il y ai besoin de faire du VBA pour cela. Du SQL
devrait suffir.
Par exemple: la requete StatClasse qui va me retourner pour chaque
classe, le nombre d'élève, de garçon et de fille :
SELECT NCla, Count(*) As NbElèves, Count(IIf(Sexe=0; Null; 1)) As
NbGarçons, Count(Iif(Sexe=1; Null; 1)) As NbFilles FROM Classes INNER
JOIN Eleves ON Classes.NCla = Eleves.NCla
Ici, j'ai effectué un comptage global : Count(*) et 2 comptages sur
critères Count(IIf...
Il faut savoir que Count, ne compte que les expression non Null, donc
en marquant 1 quand le critère et rempli et Null dans le cas
contraire, la fonction Count se transforme en CountIf.

Donc, pour en revenir à ton cas, il n'est en général pas besoin de
stocker des compteurs comme tu le fait, surtout si ces compteurs sont
le reflets d'opération de calcul sur la base de données. Une requête
bien écrite peu te faire gagner de la place en bdd.

A+