OVH Cloud OVH Cloud

macro ou code

7 réponses
Avatar
tofuponszen
Bonjour
J'ai deux tables je voudrais que lorsque j'entre dans un champ nomm=E9 X
une valeur correspondante se trouvant dans un champ X de l'autre table,
je recoive un message ENVOI INTERDIT
Comment dois-je proc=E9der ?
Merci pour votre aide

7 réponses

Avatar
Buddy
Bonjour
Salut


J'ai deux tables je voudrais que lorsque j'entre dans un champ nommé X
une valeur correspondante se trouvant dans un champ X de l'autre table,
je recoive un message ENVOI INTERDIT
Comment dois-je procéder ?


If DCount("NumAuto", "Table2", "ChampX='" & zdtValeurSaisie & "'") > 0 Then
MsgBox "ENVOI INTERDIT", vbCritical + vbOkOnly, "Erreur"
Else
' tu mets ce que tu veux quand l'envoi est autorisé
End If

Merci pour votre aide
De rien


--
Ouala
Bye
Buddy

Avatar
Gilles MOUGNOZ
Bonjour
Salut

J'ai deux tables je voudrais que lorsque j'entre dans un champ nommé X
une valeur correspondante se trouvant dans un champ X de l'autre table,
je recoive un message ENVOI INTERDIT
Comment dois-je procéder ?
If DCount("NumAuto", "Table2", "ChampX='" & zdtValeurSaisie & "'") > 0

Then
MsgBox "ENVOI INTERDIT", vbCritical + vbOkOnly, "Erreur"
Else
' tu mets ce que tu veux quand l'envoi est autorisé
End If
Merci pour votre aide
De rien

--
Ouala
Bye
Buddy


Bonjour à tous

Concernant l'utilisation de DCount, quand c'est possible, il est conseillé
de préférer DCount("*","Table") à DCount("Champ","Table"), le traitement
étant optimisé pour ce cas précis.
Par contre, je ne sais plus où j'ai trouvé cette astuce, désolé...

Bonne continuation


Avatar
tofuponszen
Re
De toute façon je ne réussis pas à faire fonctionner ni un code ni
l'autre. C'est vraiment trop compliqué pour moi présenté comme vous
le faites.
Pouvez vous me détailler cela par le menu
Table1
ID Champx champy
Table2
ID champx champy
sachant que les deux tables n'ont en commun que les champs x et y et
pas le champ ID
et que lorsque j'entre les valeurs champx champy dans la table1
j'aimerais voir le message apparaitre
Merci encore
Avatar
Gilles MOUGNOZ
Re
De toute façon je ne réussis pas à faire fonctionner ni un code ni
l'autre. C'est vraiment trop compliqué pour moi présenté comme vous
le faites.
Pouvez vous me détailler cela par le menu
Table1
ID Champx champy
Table2
ID champx champy
sachant que les deux tables n'ont en commun que les champs x et y et
pas le champ ID
et que lorsque j'entre les valeurs champx champy dans la table1
j'aimerais voir le message apparaitre
Merci encore


Re-bonjour

Par quel moyen saisis-tu tes données ? Si tu passes directement par les
tables, il n'y a aucun moyen de contrôle.
Si tu passes par un formulaire, tu places le code dans l'événement Après
Mise à jour du contrôle à vérifier.
Dans la feuille des propriétés, sélectionne l'onglet Evénements, clique dans
la zone Avant MAJ puis clique sur le bouton à droite représentant trois
points.
sélectionne Générateur de code et clique sur OK.
Dans la feuille qui apparaît, colle le code de Buddy entre les lignes "Sub
X_AfterUdate()" et "End Sub".
Pour plus d'infos, un bon site pour commencer:
http://www.self-access.com/access/

Bonne continuation

Avatar
tofuponszen
Re et merci de m'aider
J'ai bien fait tout ce que vous m'avez indiqué mais j'ai le message
suivant :
"L'expression après maj entrée comme paramètre de la propriété de
type événement est à l'origine d'une erreur.La déclaration de la
procédure ne correspond pas à la description de l'événement ou de
la prodédure de même nom.
*Le résultat de l'expression n'est pas le nom d'une macro, le nom
d'une fonction définie par l'utilisateur ou [event procédure]
*Une erreur a peut être été commise lors de l'évaluation d'une
fonction, d'un événement ou d'une macro"
Je ne comprends pas pourquoi.
Merci
Avatar
Gilles MOUGNOZ
Re et merci de m'aider
J'ai bien fait tout ce que vous m'avez indiqué mais j'ai le message
suivant :
"L'expression après maj entrée comme paramètre de la propriété de
type événement est à l'origine d'une erreur.La déclaration de la
procédure ne correspond pas à la description de l'événement ou de
la prodédure de même nom.
*Le résultat de l'expression n'est pas le nom d'une macro, le nom
d'une fonction définie par l'utilisateur ou [event procédure]
*Une erreur a peut être été commise lors de l'évaluation d'une
fonction, d'un événement ou d'une macro"
Je ne comprends pas pourquoi.
Merci


Re-bonjour,

Reprenons. Dans le code de Buddy,
1) remplace Table2 par le nom réel de "l'autre" table où se trouve le
deuxième champ X
2) remplace ChampX par le nom réel du champ de l'autre table
3) remplace zdtValeurSaisie par le nom réel du contrôle où tu fais ta saisie
Pour mémoire, je te remets le code de Buddy (agrémenté de ma 1ère remarque):

If DCount("*", "Table2", "ChampX='" & zdtValeurSaisie & "'") > 0 Then
MsgBox "ENVOI INTERDIT", vbCritical + vbOKOnly, "Erreur"
Else
' tu mets ce que tu veux quand l'envoi est autorisé
End If

ATTENTION! Ce code est prévu pour le cas où ton champ X est de type texte.
S'il est de type numérique, utilise ce code-ci (en effectuant les
remplacements 1 à 3) :

If DCount("*", "Table2", "ChampX=" & zdtValeurSaisie) > 0 Then
MsgBox "ENVOI INTERDIT", vbCritical + vbOKOnly, "Erreur"
Else
' tu mets ce que tu veux quand l'envoi est autorisé
End If

Une fois cette étape franchie, dans le menu Débogage, clique sur Compiler...
Si tu as un message d'erreur, reviens vite nous voir en nous indiquant la
ligne surlignée en jaune.
Sinon, dans le menu Fichier, clique sur Enregistrer puis sur Fermer et
retourner à Access. Ferme ton formulaire et lance-le.
Si tu as toujours des erreurs, n'hésite pas à consulter l'aide en ligne
(touche F1) de chacun des éléments du code ou des propriétés de contrôle. Il
y a bien souvent des exemples d'utilisation qui t'aideront à mieux
comprendre ce qui se passe.
Va aussi faire un tour sur le site que je t'ai indiqué. Si tu dois utiliser
Access de façon prolongé, il vaut mieux que tu acquière quelques bases, ne
serait-ce que pour connaître un peu mieux les termes et pouvoir ainsi poser
des questions plus pertinentes.
Attention, ce n'est pas un reproche ! On est tous débutants... au début ;-)

Bonne continuation

Avatar
tofuponszen
Merci encore j'essaie tout cela et je reviens
à +