Menu

Message d'erreurs [Résolu]

Messages postés
69
Date d'inscription
lundi 18 décembre 2017
Dernière intervention
12 octobre 2018
- 25 août 2018 à 13:45 - Dernière réponse :
Messages postés
69
Date d'inscription
lundi 18 décembre 2017
Dernière intervention
12 octobre 2018
- 11 sept. 2018 à 15:38
Bonjour,
Je me demande si mon titre correspond à ma préoccupation.
Avec toutes mes excuses je voudrais vous suggérer une preoccupation.
J'ai établi une relation entre 2 tables T_Buro_vote et T_Candidat.
J'ai ensuite un formulaire de saisi basé sur ces 2 tables avec 2 parties.
Une partie du formulaire recueil les informations du bureau de vote et les stocke dans la table T_Buro_vote.
La seconde recueil les noms et les voix des candidats et les stocke dans la table T_Candidat.
Donc il y a 2 Tables différentes pour le seul formulaire.
Alors je voudrais qu'en enregistrant le nombre de voix obtenues par candidat selon le BV (Bureau de vote), qu'un message d'erreur s'affiche lorsque la somme des voix obtenues des candidats dépassent le nombre de suffrage exprimé du BV et ainsi de suite pour chaque BV.
Merci c'est l'ultime étape qui me reste.
Tout en comptant toujours sur votre aide, je vous prie d'agréer ma très haute considération.

Afficher la suite 

Votre réponse

32 réponses

Messages postés
6877
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
17 novembre 2018
- 25 août 2018 à 15:45
0
Merci
bonjour,voici une suggestion pour empêcher la somme des voix obtenues des candidats de dépasser le nombre de suffrage exprimé du BV : un code à mettre au niveau du sous-formulaire.
Option Explicit
Private Sub OBTENUS_BeforeUpdate(Cancel As Integer)
Dim tot As Long, cnt As Long, gtot As Long
Dim where As String
where = "ID_Buro_Vote = " & Me.Form.Parent!ID_Buro_Vote & " and ID_Candidat <> " & ID_Candidat
cnt = DCount("OBTENUS", "T_Candidat", where)
If cnt > 0 Then
    tot = DSum("OBTENUS", "T_Candidat", where)
Else
    tot = 0
End If
gtot = tot + Me.OBTENUS
If gtot > Me.Form.Parent!SUFFRAGE_EXPRIME Then
    Call MsgBox( _
        "La somme des voix obtenues des candidats (" & gtot & ") dépasse " & _
        "le nombre de suffrages exprimés du BV (" & Me.Form.Parent!SUFFRAGE_EXPRIME & ").", _
        vbOKOnly, "Merci de corriger.")
    Cancel = True  ' ceci va empecher de sauver la valeur incorrecte
End If
End Sub
Messages postés
6877
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
17 novembre 2018
>
Messages postés
69
Date d'inscription
lundi 18 décembre 2017
Dernière intervention
12 octobre 2018
- 29 août 2018 à 22:19
pas de soucis, :-)
Messages postés
69
Date d'inscription
lundi 18 décembre 2017
Dernière intervention
12 octobre 2018
- 30 août 2018 à 19:15
Bonsoir.
Je vous suis gré.
Maintenant j'attends votre aide avec tout le respect que je vous dois.
Messages postés
6877
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
17 novembre 2018
>
Messages postés
69
Date d'inscription
lundi 18 décembre 2017
Dernière intervention
12 octobre 2018
- 30 août 2018 à 19:27
avec tout mon respect:
tu peux vérifier la première condition chaque fois que tu enregistres le vote d'un candidat. c'est ce que tu fais en mettant la vérification dans OBTENUS_BeforeUpdate.
par contre, tu ne peux pas vérifier la deuxième condition avant d'avoir enregistré un BV complet. donc il faut peut-être associer cette seconde vérification à une autre action, j'essaie de te faire dire laquelle.
autrement dit, comment le programme peut-il savoir que tu as fini de saisir les voix obtenues des candidats?
Messages postés
69
Date d'inscription
lundi 18 décembre 2017
Dernière intervention
12 octobre 2018
- 30 août 2018 à 19:55
Quand jai fini de saisir les voix des candidats du BV dans le sous formulaire je clic sur la commande enregistré sur le formulaire principal T_buro_vote.
Messages postés
6877
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
17 novembre 2018
>
Messages postés
69
Date d'inscription
lundi 18 décembre 2017
Dernière intervention
12 octobre 2018
- 30 août 2018 à 21:18
peux-tu m'envoyer un fichier dans lequel tout fonctionne, à l'exception de la détection de la seconde condition?
Commenter la réponse de yg_be
Messages postés
6877
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
17 novembre 2018
- 25 août 2018 à 16:44
0
Merci
pour le titre, moi j'aurais mis "détection automatique d'erreur d'encodage"
Messages postés
6877
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
17 novembre 2018
>
Messages postés
69
Date d'inscription
lundi 18 décembre 2017
Dernière intervention
12 octobre 2018
- 3 sept. 2018 à 14:49
que veux-tu dire par "traduction en français de ce code"? veux-tu remplacer les noms de variables par des mots français?
Messages postés
69
Date d'inscription
lundi 18 décembre 2017
Dernière intervention
12 octobre 2018
- 1 sept. 2018 à 11:56
Bonjour.
J'ai modifié le code que vous m'aviez envoyé. Puis j'ai créé un bouton de commande (Command98) que j'ai renommé VÉRIFICATION. Je l'ai placé dans le sous formulaire F_Candidat. J'y ai introduit le code sur procedure évènementiels. Maintenant il me sert a verifier si la somme des voix OBTENUS par BV est inferieur ou supérieur au SUFFRAGE_EXPRIMÉ et ça marche bien.
J'ai eu la solution à ma préoccupation.
Voici le code.

Private Sub Commande98_Click()
Dim tot As Long, cnt As Long, gtot As Long
Dim where As String
where = "ID_Buro_Vote = " & Me.Form.Parent!ID_Buro_Vote & " and ID_Candidat <> " & ID_Candidat
cnt = DCount("OBTENUS", "T_Candidat", where)
If cnt > 0 Then
tot = DSum("OBTENUS", "T_Candidat", where)
Else
tot = 0
End If
gtot = tot + Me.OBTENUS
If gtot > Me.Form.Parent!SUFFRAGE_EXPRIME Then
Call MsgBox( _
"La somme des voix obtenues des candidats (" & gtot & ") dépasse " & _
"le nombre de suffrages exprimés du BV (" & Me.Form.Parent!SUFFRAGE_EXPRIME & ").", _
vbOKOnly, "Merci de corriger.")
Cancel = True ' ceci va empecher de sauver la valeur incorrecte
End If

If gtot < Me.Form.Parent!SUFFRAGE_EXPRIME Then
Call MsgBox( _
"somme des voix obtenues des candidats (" & gtot & ") inferieur " & _
"au nombre de suffrages exprimés du BV (" & Me.Form.Parent!SUFFRAGE_EXPRIME & ").", _
vbOKOnly, "Merci de corriger.")
Cancel = True ' ceci va empêcher de sauver la valeur incorrecte
End If
End Sub

Une fois de plus grace a vous et à Commentcamarche, j'ai eu satisfaction.
Merci.
Maintenant si vous pouvez me donner certains à ajouter a mon programme pour le rendre plus praticable, facile d'utilisation, je vous serai reconnaissant.
Très haute considération.
Messages postés
69
Date d'inscription
lundi 18 décembre 2017
Dernière intervention
12 octobre 2018
- 3 sept. 2018 à 10:23
Bonjour.
J'ai modifié le code que vous m'aviez envoyé. Puis j'ai créé un bouton de commande (Command98) que j'ai renommé VÉRIFICATION. Je l'ai placé dans le sous formulaire F_Candidat. J'y ai introduit le code sur procedure évènementiels. Maintenant il me sert a verifier si la somme des voix OBTENUS par BV est inferieur ou supérieur au SUFFRAGE_EXPRIMÉ et ça marche bien.
J'ai eu la solution à ma préoccupation.
Voici le code.

Private Sub Commande98_Click()
Dim tot As Long, cnt As Long, gtot As Long
Dim where As String
where = "ID_Buro_Vote = " & Me.Form.Parent!ID_Buro_Vote & " and ID_Candidat <> " & ID_Candidat
cnt = DCount("OBTENUS", "T_Candidat", where)
If cnt > 0 Then
tot = DSum("OBTENUS", "T_Candidat", where)
Else
tot = 0
End If
gtot = tot + Me.OBTENUS
If gtot > Me.Form.Parent!SUFFRAGE_EXPRIME Then
Call MsgBox( _
"La somme des voix obtenues des candidats (" & gtot & ") dépasse " & _
"le nombre de suffrages exprimés du BV (" & Me.Form.Parent!SUFFRAGE_EXPRIME & ").", _
vbOKOnly, "Merci de corriger.")
Cancel = True ' ceci va empecher de sauver la valeur incorrecte
End If

If gtot < Me.Form.Parent!SUFFRAGE_EXPRIME Then
Call MsgBox( _
"somme des voix obtenues des candidats (" & gtot & ") inferieur " & _
"au nombre de suffrages exprimés du BV (" & Me.Form.Parent!SUFFRAGE_EXPRIME & ").", _
vbOKOnly, "Merci de corriger.")
Cancel = True ' ceci va empêcher de sauver la valeur incorrecte
End If
End Sub

Une fois de plus grace a vous et à Commentcamarche, j'ai eu satisfaction.
Merci.
Maintenant si vous pouvez me donner certains à ajouter a mon programme pour le rendre plus praticable, facile d'utilisation, je vous serai reconnaissant.
Très haute considération.
Messages postés
6877
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
17 novembre 2018
>
Messages postés
69
Date d'inscription
lundi 18 décembre 2017
Dernière intervention
12 octobre 2018
- 3 sept. 2018 à 14:51
Il me semble que tu n'as pas mis "option explicit" au début du module: je te recommande de corriger cela.
Messages postés
69
Date d'inscription
lundi 18 décembre 2017
Dernière intervention
12 octobre 2018
- 11 sept. 2018 à 15:38
Bonsoir,

le lien https://www.cjoint.com/c/HIlnWS6yqkJ

Je voudrais revenir un peu sur le code dont j’avais parlé pour empêcher la saisie incorrecte des données.
je vous l'envoie pour appréciation et aussi que cela serve à d'autres.
C’est aujourd’hui que je réalise la portée de votre question, me demandant comment savoir que la saisie des candidats est terminée.
Donc voici ce que j’ai fais
J’ai ajouté une boite de dialogue (oui /non). Alors lorsque je veux sortir du champ OBTENUS, il me demande si je veux continuer la saisie ou pas. (voulez-vous ajouter un autre ?)
Quand je clique sur OUI il me permet d’ajouter le nom et les voix d’un autre candidat jusqu’au dernier candidat.
Quand je clique sur NON alors il effectue toute cette opération ci-dessous (il ressort les erreurs quand le OBTENUS est superieur ou inferieur au SUFFRAGE_EXPRIME, puis affiche le nombre en plus ou le nombre en moins) et ça marche grace au code que vous m'aviez envoyé.

Private Sub OBTENUS_AfterUpdate()
Dim Msg, Style, Title, Response
Msg = "Voulez-vous Ajouter un autre?"
Style = vbYesNo
Title = "Validation"
Response = MsgBox(Msg, Style, Title)
If Response = vbYes Then
End If
If Response = vbNo Then
Dim tot As Long, cnt As Long, gtot As Long, dif As Long
Dim where As String
where = "ID_Buro_Vote = " & Me.Form.Parent!ID_Buro_Vote & " and ID_Candidat <> " & ID_Candidat
cnt = DCount("OBTENUS", "T_Candidat", where)
If cnt > 0 Then
tot = DSum("OBTENUS", "T_Candidat", where)
Else
tot = 0
End If
gtot = tot + Me.OBTENUS

If gtot > Me.Form.Parent!SUFFRAGE_EXPRIME Then
Call MsgBox( _
"CORRIGEZ L'ERREUR SUIVANTE LA SOMME DES VOIX DES CANDIDATS DU BV QUI EST = " & gtot & " DEPASSE " & _
"LE NOMBRE DE SUFFRAGE EXPRIME DU BV QUI EST = " & Me.Form.Parent!SUFFRAGE_EXPRIME & ".", _
vbOKOnly, "ATTENTION!")
Cancel = True
End If
'ceci va empecher de sauver la valeur quand la somme des OBTENUS est superieur au SUFFRAGE EXPRIME.

If gtot < Me.Form.Parent!SUFFRAGE_EXPRIME Then
Call MsgBox( _
"CORRIGEZ L'ERREUR SUIVANTE LA SOMME DES VOIX DES CANDIDATS DU BV QUI EST = " & gtot & " EST INFERIEURE " & _
"AU NOMBRE DE SUFFRAGE EXPRIME DU BV QUI EST = " & Me.Form.Parent!SUFFRAGE_EXPRIME & ".", _
vbOKOnly, "ATTENTION!")
Cancel = True
End If
'ceci va empecher de sauver la valeur quand la somme des OBTENUS est INDERIEURE au SUFFRAGE EXPRIME.

'Ceci pour calculer ET AFFICHER la difference entre la somme des voix OBTENUS et le SUFFRAGE_EXPRIME.
dif = gtot - Me.Form.Parent!SUFFRAGE_EXPRIME
If Me.Form.Parent!SUFFRAGE_EXPRIME > tot + Me.OBTENUS Then
Call MsgBox( _
"IL Y A UN MANQUE DE " & dif & " VOIX ", _
vbOKOnly, "ATTENTION!")
Cancel = True
End If

If Me.Form.Parent!SUFFRAGE_EXPRIME < tot + Me.OBTENUS Then
Call MsgBox( _
"IL Y A UN SURPLUS DE " & dif & " VOIX ", _
vbOKOnly, "ATTENTION!")
Cancel = True
End If

If gtot = Me.Form.Parent!SUFFRAGE_EXPRIME Then
MsgBox "MERCI VOS DONNEES SONT EXACTES"
DoCmd.Save acForm, "F_Saisie_Election"
DoCmd.Close
DoCmd.OpenForm "F_Saisie_Election"
DoCmd.GoToRecord , , acNewRec, Inset
'DoCmd.OpenForm "F_Saisie_Election", acNormal, , "[ID_Buro_Vote]]" = "&Me.ID_Candidat"
End If
Cancel = True
End If
End Sub

Quand tout le formulaire (F_Saisie_Election) s’ouvre vierge pour une nouvelle saisie, ce message d’erreur apparait pour signaler ceci :
Erreur de synthaxe –Operateur absent) dans l’expression
« ID_Buro_Vote = and ID_Candidat <> “.
Merci pour tout
Le lien
https://www.cjoint.com/c/HIlnWS6yqkJ
Commenter la réponse de yg_be