Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > IHM
IHM Ce forum est dédié aux questions relatives à la création de formulaires et d'états, avec ou sans code VBA, et macros.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 31/08/2011, 17h40   #1
Candidat au titre de Membre du Club
 
Homme Boris
Étudiant
Inscription : août 2011
Messages : 53
Détails du profil
Informations personnelles :
Nom : Homme Boris
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Étudiant
Secteur : Finance

Informations forums :
Inscription : août 2011
Messages : 53
Points : 13
Points : 13
Par défaut MsgBox Saisie Doublons dans formulaire

Bonjour,

J'ai une table avec un numéro affecté à chaque véhicule alimenté par un formulaire qui ajoute les nouveaux véhicules.

Pour éviter les doublons et rendre la saisie le plus simple possible, je souhaite faire apparaitre un message box (type : Numéro déjà utilisé) dès la saisie dans le champ [numéro] de mon formulaire, ou sur mon bouton "Enregistrer".

Le champ de ma table est bien indéxé : "Oui - Sans doublons" mais le message d'erreur de saisie n'apparait que si je quitte mon formulaire (Si j'enregiste, ca fait comme si c'était enregistré sauf que ca n'écrit pas dans la table donc l'utilisateur n'est pas averti).

Merci Beaucoup pour votre aide.
borisp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/08/2011, 17h49   #2
Modérateur
 
Homme René MAROT
Inscription : octobre 2005
Messages : 5 475
Détails du profil
Informations personnelles :
Nom : Homme René MAROT
Localisation : Canada

Informations forums :
Inscription : octobre 2005
Messages : 5 475
Points : 7 561
Points : 7 561
Je pense qu'en mettant ceci dans le code associé à l'événement Après MAJ (ou avant MAJ, fait un test) de ton champ :

Code :
1
2
3
4
 
if dcount("[Numero]","[Numero]=" & me.numero) <>0 then
   msgbox "Doublon !"
end if
A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
marot_r est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 01/09/2011, 09h16   #3
Candidat au titre de Membre du Club
 
Homme Boris
Étudiant
Inscription : août 2011
Messages : 53
Détails du profil
Informations personnelles :
Nom : Homme Boris
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Étudiant
Secteur : Finance

Informations forums :
Inscription : août 2011
Messages : 53
Points : 13
Points : 13
Citation:
Envoyé par marot_r Voir le message
Code :
1
2
3
4
 
if dcount("[Numero]","[Numero]=" & me.numero) <>0 then
   msgbox "Doublon !"
end if
Merci pour la réponse.

Le code ne marche pas chez moi, ne faut-il pas mettre le nom de ma table quelque part? J'ai essayé comme ca ne marche pas non plus :

Code :
1
2
3
4
 
if dcount("[NomDeMaTable]","[Numero]=" & me.numero) <>0 then
   msgbox "Doublon !"
end if
A priori ce serait bien sur AfterUpdate.

Merci pour l'aide!
borisp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/09/2011, 09h31   #4
Rédacteur/Modérateur
 
Avatar de Dolphy35
 
Homme Morgan BILLY
Technicien de Production
Inscription : octobre 2004
Messages : 4 103
Détails du profil
Informations personnelles :
Nom : Homme Morgan BILLY
Âge : 33
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Technicien de Production
Secteur : Industrie

Informations forums :
Inscription : octobre 2004
Messages : 4 103
Points : 8 728
Points : 8 728
Bonjour,

Oui il faut bien spécifier la table.

Code :
DCount("NomChamp", "NomTable", "Critère=")
si le critères est une chaîne de caractères l’encapsuler avec des quotes ( ' )

Dolphy
__________________
Personnaliser la vue Backstage d'Access 2010
Découvrez avec nous Office 2010
Je ne réponds pas aux questions techniques par MP
Dolphy35 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 01/09/2011, 10h48   #5
Candidat au titre de Membre du Club
 
Homme Boris
Étudiant
Inscription : août 2011
Messages : 53
Détails du profil
Informations personnelles :
Nom : Homme Boris
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Étudiant
Secteur : Finance

Informations forums :
Inscription : août 2011
Messages : 53
Points : 13
Points : 13
Cela marche bien mais maintenant il me sort des doublons dès que je rentre un numéro, même absent de ma table ...

J'ai utilisé ce code :

Code :
1
2
3
4
5
6
Private Sub NUMERO_PARC_AfterUpdate()
If DCount("[NUMERO_PARC]", "PARC_MATERIEL", [NUMERO_PARC] = Me.form_numero_parc) <> 0 Then
   MsgBox "Ce Numéro de Parc est déjà utilisé!"
   Me.form_numero_parc = Null
End If
End Sub
[PARC MATERIEL] = Table
[NUMERO PARC] = Champ de ma table
form_numero_parc = Champ de formulaire


Merci de vos réponses, désolé ca fait un peu plus de deux semaines que je suis sur access en ayant appris sur le tas...
borisp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/09/2011, 10h53   #6
Rédacteur/Modérateur
 
Avatar de Dolphy35
 
Homme Morgan BILLY
Technicien de Production
Inscription : octobre 2004
Messages : 4 103
Détails du profil
Informations personnelles :
Nom : Homme Morgan BILLY
Âge : 33
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Technicien de Production
Secteur : Industrie

Informations forums :
Inscription : octobre 2004
Messages : 4 103
Points : 8 728
Points : 8 728
re,

Code :
1
2
3
4
5
6
Private Sub NUMERO_PARC_AfterUpdate()
If DCount("[NUMERO_PARC]", "PARC_MATERIEL", "[NUMERO_PARC]=" & Me.form_numero_parc) <> 0 Then
   MsgBox "Ce Numéro de Parc est déjà utilisé!"
   Me.form_numero_parc = Null
End If
End Sub
Dans mon exemple le filtre est également entre guillemets.

Dolphy
__________________
Personnaliser la vue Backstage d'Access 2010
Découvrez avec nous Office 2010
Je ne réponds pas aux questions techniques par MP
Dolphy35 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 01/09/2011, 11h07   #7
Candidat au titre de Membre du Club
 
Homme Boris
Étudiant
Inscription : août 2011
Messages : 53
Détails du profil
Informations personnelles :
Nom : Homme Boris
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Étudiant
Secteur : Finance

Informations forums :
Inscription : août 2011
Messages : 53
Points : 13
Points : 13
Oups!

Mais Maintenant j'ai l'erreur 3464 : " Type de données incompatible dans l'expression du critère "
borisp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/09/2011, 11h13   #8
Rédacteur/Modérateur
 
Avatar de Dolphy35
 
Homme Morgan BILLY
Technicien de Production
Inscription : octobre 2004
Messages : 4 103
Détails du profil
Informations personnelles :
Nom : Homme Morgan BILLY
Âge : 33
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Technicien de Production
Secteur : Industrie

Informations forums :
Inscription : octobre 2004
Messages : 4 103
Points : 8 728
Points : 8 728
La valeur est de quelle type ?
Numérique - chaîne de caractères ??

Dolphy
__________________
Personnaliser la vue Backstage d'Access 2010
Découvrez avec nous Office 2010
Je ne réponds pas aux questions techniques par MP
Dolphy35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/09/2011, 11h18   #9
Candidat au titre de Membre du Club
 
Homme Boris
Étudiant
Inscription : août 2011
Messages : 53
Détails du profil
Informations personnelles :
Nom : Homme Boris
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Étudiant
Secteur : Finance

Informations forums :
Inscription : août 2011
Messages : 53
Points : 13
Points : 13
Le type de donnés dans la table c'est du Texte mais il peut y avoir des chiffres, des chiffres et des lettres. Ex: 150 et AB-200
borisp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/09/2011, 11h26   #10
Rédacteur/Modérateur
 
Avatar de Dolphy35
 
Homme Morgan BILLY
Technicien de Production
Inscription : octobre 2004
Messages : 4 103
Détails du profil
Informations personnelles :
Nom : Homme Morgan BILLY
Âge : 33
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Technicien de Production
Secteur : Industrie

Informations forums :
Inscription : octobre 2004
Messages : 4 103
Points : 8 728
Points : 8 728
Donc je reprends ma citation du premier post
Citation:
Envoyé par Dolphy35
si le critères est une chaîne de caractères l’encapsuler avec des quotes ( ' )
Code :
1
2
3
4
5
6
Private Sub NUMERO_PARC_AfterUpdate()
If DCount("[NUMERO_PARC]", "PARC_MATERIEL", "[NUMERO_PARC]='" & Me.form_numero_parc & "'") <> 0 Then
   MsgBox "Ce Numéro de Parc est déjà utilisé!"
   Me.form_numero_parc = Null
End If
End Sub
Dolphy
__________________
Personnaliser la vue Backstage d'Access 2010
Découvrez avec nous Office 2010
Je ne réponds pas aux questions techniques par MP
Dolphy35 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 01/09/2011, 11h33   #11
Candidat au titre de Membre du Club
 
Homme Boris
Étudiant
Inscription : août 2011
Messages : 53
Détails du profil
Informations personnelles :
Nom : Homme Boris
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Étudiant
Secteur : Finance

Informations forums :
Inscription : août 2011
Messages : 53
Points : 13
Points : 13
Merci mille fois Dolphy!
borisp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/09/2011, 11h37   #12
Rédacteur/Modérateur
 
Avatar de Dolphy35
 
Homme Morgan BILLY
Technicien de Production
Inscription : octobre 2004
Messages : 4 103
Détails du profil
Informations personnelles :
Nom : Homme Morgan BILLY
Âge : 33
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Technicien de Production
Secteur : Industrie

Informations forums :
Inscription : octobre 2004
Messages : 4 103
Points : 8 728
Points : 8 728
Citation:
Envoyé par borisp Voir le message
Merci mille fois Dolphy!


Il faut prendre par habitude lorsque c'est une chaine de caractères il faut encapsuler de quotes ( ' ), si c'est du numérique de pas en mettre. Quand savoir si en mettre ou non : en fonction du type de champ dans la table.

Sinon l'aide Access depuis la version 2007 propose une aide VBA très fournie, j'y vais régulièrement

Dolphy
__________________
Personnaliser la vue Backstage d'Access 2010
Découvrez avec nous Office 2010
Je ne réponds pas aux questions techniques par MP
Dolphy35 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 01/09/2011, 11h51   #13
Candidat au titre de Membre du Club
 
Homme Boris
Étudiant
Inscription : août 2011
Messages : 53
Détails du profil
Informations personnelles :
Nom : Homme Boris
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Étudiant
Secteur : Finance

Informations forums :
Inscription : août 2011
Messages : 53
Points : 13
Points : 13
Ok, merci du conseil!

Et est-ce possible de complexifier en mettant un deuxième critère qui par exemple autoriserait les doublons si saisie sur deux années différentes?

du type :

Code :
1
2
3
4
5
6
Private Sub NUMERO_PARC_AfterUpdate()
If DCount("[NUMERO_PARC]", "PARC_MATERIEL", "[NUMERO_PARC]='" & Me.form_numero_parc & "'", "[ANNEE]=" & Me.form_annee) <> 0 Then
   MsgBox "Ce Numéro de Parc est déjà utilisé pour cette année!"
   Me.form_numero_parc = Null
End If
End Sub
borisp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/09/2011, 12h16   #14
Rédacteur/Modérateur
 
Avatar de Dolphy35
 
Homme Morgan BILLY
Technicien de Production
Inscription : octobre 2004
Messages : 4 103
Détails du profil
Informations personnelles :
Nom : Homme Morgan BILLY
Âge : 33
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Technicien de Production
Secteur : Industrie

Informations forums :
Inscription : octobre 2004
Messages : 4 103
Points : 8 728
Points : 8 728
Oui, c'est possible. Par contre tu ne peux avoir qu'une chaîne de critère, il faut penser comme en SQL, tu ajoute un AND dans ta chaîne.

Code :
1
2
3
4
5
6
Private Sub NUMERO_PARC_AfterUpdate()
If DCount("[NUMERO_PARC]", "PARC_MATERIEL", "[NUMERO_PARC]='" & Me.form_numero_parc & "' AND [ANNEE]=" & Me.form_annee) <> 0 Then
   MsgBox "Ce Numéro de Parc est déjà utilisé pour cette année!"
   Me.form_numero_parc = Null
End If
End Sub
Dolphy
__________________
Personnaliser la vue Backstage d'Access 2010
Découvrez avec nous Office 2010
Je ne réponds pas aux questions techniques par MP
Dolphy35 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 01/09/2011, 12h25   #15
Candidat au titre de Membre du Club
 
Homme Boris
Étudiant
Inscription : août 2011
Messages : 53
Détails du profil
Informations personnelles :
Nom : Homme Boris
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Étudiant
Secteur : Finance

Informations forums :
Inscription : août 2011
Messages : 53
Points : 13
Points : 13
Alors là je dis bravo! Et Merci!
borisp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/09/2011, 12h28   #16
Rédacteur/Modérateur
 
Avatar de Dolphy35
 
Homme Morgan BILLY
Technicien de Production
Inscription : octobre 2004
Messages : 4 103
Détails du profil
Informations personnelles :
Nom : Homme Morgan BILLY
Âge : 33
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Technicien de Production
Secteur : Industrie

Informations forums :
Inscription : octobre 2004
Messages : 4 103
Points : 8 728
Points : 8 728
Citation:
Envoyé par borisp Voir le message
Alors là je dis bravo! Et Merci!
__________________
Personnaliser la vue Backstage d'Access 2010
Découvrez avec nous Office 2010
Je ne réponds pas aux questions techniques par MP
Dolphy35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/09/2011, 16h27   #17
Candidat au titre de Membre du Club
 
Homme Boris
Étudiant
Inscription : août 2011
Messages : 53
Détails du profil
Informations personnelles :
Nom : Homme Boris
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Étudiant
Secteur : Finance

Informations forums :
Inscription : août 2011
Messages : 53
Points : 13
Points : 13
Je reviens sur ce sujet car j'essaye de mettre une date en critère et j'obtiens sans cesse une erreur de syntaxe. J'ai cherché et je crois qu'il faut des # mais je n'arrive pas à bien les placer...

Mon code à l'heure actuelle :

Code :
If DCount("[Stagiaire]", "COUTS_REELS", "[Stagiaire]='" & Me.Stagiaire & "' AND [NUMERO_DOSSIER]=" & Me.lst_numero_dossier AND [DATE_ENVOI_DOSSIER] = # ' " Me.DATE_ENVOI_DOSSIER " ' #)
Merci pour votre aide
borisp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/09/2011, 16h41   #18
Modérateur
 
Homme René MAROT
Inscription : octobre 2005
Messages : 5 475
Détails du profil
Informations personnelles :
Nom : Homme René MAROT
Localisation : Canada

Informations forums :
Inscription : octobre 2005
Messages : 5 475
Points : 7 561
Points : 7 561
Code :
If DCount("[Stagiaire]", "COUTS_REELS", "[Stagiaire]='" & Me.Stagiaire & "' AND [NUMERO_DOSSIER]=" & Me.lst_numero_dossier AND [DATE_ENVOI_DOSSIER] = #" & format(Me.DATE_ENVOI_DOSSIER,"yyyy-mm-dd") & "#")
A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
marot_r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/09/2011, 11h24   #19
Candidat au titre de Membre du Club
 
Homme Boris
Étudiant
Inscription : août 2011
Messages : 53
Détails du profil
Informations personnelles :
Nom : Homme Boris
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Étudiant
Secteur : Finance

Informations forums :
Inscription : août 2011
Messages : 53
Points : 13
Points : 13
Merci mais avec ce code j'ai l'erreur de compilation : Attendu : Expression...
borisp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/09/2011, 17h21   #20
Modérateur
 
Homme René MAROT
Inscription : octobre 2005
Messages : 5 475
Détails du profil
Informations personnelles :
Nom : Homme René MAROT
Localisation : Canada

Informations forums :
Inscription : octobre 2005
Messages : 5 475
Points : 7 561
Points : 7 561
Code :
If DCount("[Stagiaire]", "COUTS_REELS", "[Stagiaire]='" & Me.Stagiaire & "' AND [NUMERO_DOSSIER]=" & Me.lst_numero_dossier & " AND [DATE_ENVOI_DOSSIER] = #" & format(Me.DATE_ENVOI_DOSSIER,"yyyy-mm-dd") & "#")
Désolé j'avais manqué un & et un ".

A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
marot_r est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h47.


 
 
 
 
Partenaires

Hébergement Web