Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

controle d'existence d'un champ dans une table

7 réponses
Avatar
lecrol
Bonjour à tous,
J'hérite d'une table assez grosse: plus de 2000 records. Pour deux champs de
la table, leur valeur a été normalement sélectionnée (zone de liste
déroulante) dans une autre table de référence (plus petite) Je voudrais, avec
d'autres contrôles sur cette grosse table, vérifier que les valeurs champ_1
et champ_2 sont correctes c'est à dire qu'elles figurent bien dans les tables
Tabl_1 et Tabl_2. Comment écrire au plus simple le code Vba nécessaire pour
cela ?
Un grand merci d'avance
Roland

Question subsidiaire: comment pemettre de modifier "on line" les valeurs
fausses que je détecterais ainsi ( absentes dans les tables d'origine) ? A
priori, j'imaginais noter sur une feuiile papier les n° de record concernés
pour modifier la table, une fois le contrôle terminé.
Re-merci encore !!

7 réponses

Avatar
Jac
Bonjour Roland,

plutôt que mettre ces valeurs dans une table, il suffirait de faire des
requêtes avec regroupement afin d'alimenter tes listes déroulantes qui,
par ce fait, seraient toujours à jour. Ce qui résoudrait du même coup
ta question subsidiaire.

On en reparle quand tu veux.

Jac

Bonjour à tous,
J'hérite d'une table assez grosse: plus de 2000 records. Pour deux champs de
la table, leur valeur a été normalement sélectionnée (zone de liste
déroulante) dans une autre table de référence (plus petite) Je voudrais, avec
d'autres contrôles sur cette grosse table, vérifier que les valeurs champ_1
et champ_2 sont correctes c'est à dire qu'elles figurent bien dans les tables
Tabl_1 et Tabl_2. Comment écrire au plus simple le code Vba nécessaire pour
cela ?
Un grand merci d'avance
Roland

Question subsidiaire: comment pemettre de modifier "on line" les valeurs
fausses que je détecterais ainsi ( absentes dans les tables d'origine) ? A
priori, j'imaginais noter sur une feuiile papier les n° de record concernés
pour modifier la table, une fois le contrôle terminé.
Re-merci encore !!


Avatar
lecrol
Salut et merci Jac de ta réponse. Je ne l'avais pas précisé, mais ces deux
champs sont justement saisis par requête de regroupement. Mon problème est
que j'en ai trouvé quelques uns qui sont effacés pour des raisons que
j'ignore (erreur de clavier ?). Et c'est la raison pour laquelle je voudais
les détecter automatiquement dans un progamme qui balaierait, lui, toute la
table. Ce programme m'est nécessaire, de toutes façons, pour d'autres
contrôles sur d'autres champs. D'où ma question....
Comment écrire en Vba la présence ou pas d'un champ dans une table d'où il a
été extrait (normalement !). Ma seconde question porte sur la correction du
champ via le formulaire concerné. Comment lui passer la main et poursuivre
ensuite le programme de contrôle au point où il s'était arrêté ? Sinon, je
note sur une feuille de papier comme je le pensais. Merci d'avance. Roland
Avatar
3stone
Salut,

"lecrol"
| Salut et merci Jac de ta réponse. Je ne l'avais pas précisé, mais ces deux
| champs sont justement saisis par requête de regroupement. Mon problème est
| que j'en ai trouvé quelques uns qui sont effacés pour des raisons que
| j'ignore (erreur de clavier ?). Et c'est la raison pour laquelle je voudais
| les détecter automatiquement dans un progamme qui balaierait, lui, toute la
| table. Ce programme m'est nécessaire, de toutes façons, pour d'autres
| contrôles sur d'autres champs. D'où ma question....
| Comment écrire en Vba la présence ou pas d'un champ dans une table d'où il a
| été extrait (normalement !). Ma seconde question porte sur la correction du
| champ via le formulaire concerné. Comment lui passer la main et poursuivre
| ensuite le programme de contrôle au point où il s'était arrêté ? Sinon, je
| note sur une feuille de papier comme je le pensais. Merci d'avance. Roland


J'ai peur pour ton usine à gaz ;-)

Pour découvrir ceux de la table1 qui proviennent pas de la table2,
une simple requête doit suffire :

Select T1.C1, T1.C2, T2.C1, T2.C2
From T1 LEFT JOIN T2 ON (T1.C2 = T2.C2) AND (T1.C1 = T2.C1)
Where (((T2.C1) Is Null)) OR (((T2.C2) Is Null));

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
Avatar
lecrol
Merci les chefs !

Mes explications ne sont sans doute pas assez claires. Mais les 2 réponses
que j'ai reçues ne sont pas celles de ma question. D'autre part, il n'y
aucune "usine à gaz" dans mon poblème.

Car je me pose cette simple question:
Sur une table de plus de 2500 records, comment faire autrement que de
défiler et vérifier visuellement les enregistrements les uns après les autres,
pour contrôler automatiquement, par du code VBA
que le champ "X" contient bien une valeur issue de la table "T" ?

Je n'imagine pas une seconde que cela soit compliqué, sauf que je ne sais
pas en écrire le code Vba
Merci d'avance
Roland
Avatar
Michel__D
Bonjour,

"lecrol" a écrit dans le message de news:
Merci les chefs !

Mes explications ne sont sans doute pas assez claires. Mais les 2 réponses
que j'ai reçues ne sont pas celles de ma question. D'autre part, il n'y
aucune "usine à gaz" dans mon poblème.

Car je me pose cette simple question:
Sur une table de plus de 2500 records, comment faire autrement que de
défiler et vérifier visuellement les enregistrements les uns après les autres,
pour contrôler automatiquement, par du code VBA
que le champ "X" contient bien une valeur issue de la table "T" ?

Je n'imagine pas une seconde que cela soit compliqué, sauf que je ne sais
pas en écrire le code Vba
Merci d'avance
Roland



Pierre t'a trés bien répondu avant de penser VBA, il est peut-être (surement)
possible de réaliser ce contrôle et ce(s) éventuelle(s) mise à jour via des
requêtes (ce qui coule de source avec une base de données), mais sans
plus de détail sur ta base on ne pourra pas t'en dire plus.
Avatar
Jac
> Merci les chefs !



Ce n'est pas parce que tu nous dis qu'on a pas compris que tu dois nous
appeler "chef" !!!

Mes explications ne sont sans doute pas assez claires. Mais les 2 réponses
que j'ai reçues ne sont pas celles de ma question.



Si tes explications sont claires, et que tu reçois des réponses à côté
de la plaque, de personnes qui ne se sont pas concertées, c'est
sûrement parce que ces personnes ont appris le français dans la
catégorie "langues étrangères"... ou qu'elles répondent à des heures où
leur cerveau est embrumé.

D'autre part, il n'y aucune "usine à gaz" dans mon poblème.



On te croie sur parole. Mais alors pourquoi dis-tu "... j'en ai trouvé
quelques uns qui sont effacés pour des raisons que j'ignore (erreur de
clavier ?)..."

Car je me pose cette simple question:
Sur une table de plus de 2500 records, comment faire autrement que de
défiler et vérifier visuellement les enregistrements les uns après les
autres, pour contrôler automatiquement, par du code VBA
que le champ "X" contient bien une valeur issue de la table "T" ?



Solution 1 : tu imprimes et tu demande à quelqu'un de vérifier...
Solution 2 : tu tries donc les vides seront à une des extrémités
Solution 3 : tu filtres, à la volée ou par critère

Je n'imagine pas une seconde que cela soit compliqué, sauf que je ne sais
pas en écrire le code Vba



Je ne vois pas pourquoi tu veux faire du vba ! Si ce n'est pas
confidentiel..., tu pourrais nous donner la raison pour laquelle tu
veux tant en faire. En général, on ne sort pas l'artillerie pour tuer
une mouche endormie.
Le vba ne donne pas de solution aux problèmes que l'on ne sait pas
résoudre. Le vba permet d'automatiser la solution du problème afin que
la manipulation ne nécessite aucune compétance particulière
(déclenchement évènementiel, clic sur un bouton, ...)
Et de toute façon, le vba ouvrira une requête, qu'il sera plus simple
de créer d'avance... que par vba.

Merci d'avance
Roland



... en d'autres termes :
1- une requête s'appuie sur la table "T"
2- le champ à afficher s'appelle "X"

Pour voir tout de suite les vides en haut ou en bas de la liste, en
cliquant sur un bouton : tri de A-Z ou de Z-A. Jusqu'à là, ça fait
partie des petits jeux que l'on fait la première fois que l'on aborde
les requêtes... Et dans la minute qui suit, on passe aux critères :
pour ne voir que les vides, dans le champ "X", critère : "est null" -
Mais comme il n'y a rien à voir, il suffira de voir en bas, à gauche,
combien d'enregistrements sont concernés.

Maintenant, si tu dois mettre à jour les champs vides, il faudra
ajouter d'autres champs de la table afin de savoir, éventuellement,
quoi écrire. Et si c'est plus pratique, un formulaire qui s'appuie sur
la requête filtrée sera bien venu...

Sans rancune,

Jac
Avatar
Jac
> Merci les chefs !



Ce n'est pas parce que tu nous dis qu'on a pas compris que tu dois nous
appeler "chef" !!!

Mes explications ne sont sans doute pas assez claires. Mais les 2 réponses
que j'ai reçues ne sont pas celles de ma question.



Si tes explications sont claires, et que tu reçois des réponses à côté
de la plaque, de personnes qui ne se sont pas concertées, c'est
sûrement parce que ces personnes ont appris le français dans la
catégorie "langues étrangères"... ou qu'elles répondent à des heures où
leur cerveau est embrumé.

que j'ai reçues ne sont pas celles de ma question. D'autre part, il n'y
aucune "usine à gaz" dans mon poblème.



On te crois sur parole. Mais alors pourquoi dis-tu "... j'en ai trouvé
quelques uns qui sont effacés pour des raisons que j'ignore (erreur de
clavier ?)..."

Car je me pose cette simple question:
Sur une table de plus de 2500 records, comment faire autrement que de
défiler et vérifier visuellement les enregistrements les uns après les
autres, pour contrôler automatiquement, par du code VBA
que le champ "X" contient bien une valeur issue de la table "T" ?



Solution 1 : tu imprimes et tu demande à quelqu'un de vérifier...
Solution 2 : tu tries donc les vides seront à une des extrémités
Solution 3 : tu filtres, à la volée ou par critère

Je n'imagine pas une seconde que cela soit compliqué, sauf que je ne sais
pas en écrire le code Vba



Je ne vois pas pourquoi tu veux faire du vba ! Si ce n'est pas
confidentiel..., tu pourrais nous donner la raison pour laquelle tu
veux tant en faire. En général, on ne sort pas l'artillerie pour tuer
une mouche endormie.
Le vba ne donne pas de solution aux problèmes que l'on ne sait pas
résoudre. Le vba permet d'automatiser la solution du problème afin que
la manipulation ne nécessite aucune compétance particulière
(déclenchement évènementiel, clic sur un bouton, ...)
Et de toute façon, le vba ouvrira une requête, qu'il sera plus simple
de créer d'avance... que par vba.

Merci d'avance
Roland



... en d'autres termes :
1- une requête s'appuie sur la table "T"
2- le champ à afficher s'appelle "X"

Pour voir tout de suite les vides en haut ou en bas de la liste, en
cliquant sur un bouton : tri de A-Z ou de Z-A. Jusqu'à là, ça fait
partie des petits jeux que l'on fait la première fois que l'on aborde
les requêtes... Et dans la minute qui suit, on passe aux critères :
pour ne voir que les vides, dans le champ "X", critère : "est null" -
Mais comme il n'y a rien à voir, il suffira de voir en bas, à gauche,
combien d'enregistrements sont concernés.

Maintenant, si tu dois mettre à jour les champs vides, il faudra
ajouter d'autres champs de la table afin de savoir, éventuellement,
quoi écrire. Et si c'est plus pratique, un formulaire qui s'appuie sur
la requête filtrée sera bien venu...

Sans rancune,

Jac