[Access] Message d'erreur doublons
Résolu/Fermé
ETSSieb
Messages postés
24
Date d'inscription
mercredi 28 avril 2010
Statut
Membre
Dernière intervention
16 juillet 2010
-
17 juin 2010 à 11:57
Tessel75 - 14 juil. 2014 à 16:02
Tessel75 - 14 juil. 2014 à 16:02
A voir également:
- [Access] Message d'erreur doublons
- Message - Guide
- Erreur 0x80070643 - Accueil - Windows
- Recuperer message whatsapp supprimé - Guide
- Message d'absence thunderbird - Guide
- Supprimer les doublons excel - Guide
8 réponses
Utilisateur anonyme
Modifié par Manugeo le 17/06/2010 à 12:06
Modifié par Manugeo le 17/06/2010 à 12:06
Bonjour,
Sur l'évènement AfterUpdate du contrôle Ref de ton formulaire, tu mets
Dim MaRef
MaRef = RechDom("Ref";"MaTable";"[Ref]=" & Ref.Value)
If Not IsNull(MaRef) then
MsgBox "Référence déjà existante !"
Ref.Value = ""
end if
Dans le code, tu remplaces MaTable par le nom de ta table...
Manu
Sur l'évènement AfterUpdate du contrôle Ref de ton formulaire, tu mets
Dim MaRef
MaRef = RechDom("Ref";"MaTable";"[Ref]=" & Ref.Value)
If Not IsNull(MaRef) then
MsgBox "Référence déjà existante !"
Ref.Value = ""
end if
Dans le code, tu remplaces MaTable par le nom de ta table...
Manu
Utilisateur anonyme
17 juin 2010 à 13:37
17 juin 2010 à 13:37
Autant pour moi.. Je mélange systématiquement RechDom et DLookUp (C'est la même chose, mais le premier s'utilise dans les formules, le second dans le code !!!)
Dim MaRef
MaRef = DLookUp("Ref","MaTable","[Ref]=" & Ref.Value)
If Not IsNull(MaRef) then
MsgBox "Référence déjà existante !"
Ref.Value = ""
end if
Là, ça devrait marcher !
Sinon, c'est bien sur l'évènement Après MàJ de [Ref] qu'il faut mettre cette procédure.
Manu
Dim MaRef
MaRef = DLookUp("Ref","MaTable","[Ref]=" & Ref.Value)
If Not IsNull(MaRef) then
MsgBox "Référence déjà existante !"
Ref.Value = ""
end if
Là, ça devrait marcher !
Sinon, c'est bien sur l'évènement Après MàJ de [Ref] qu'il faut mettre cette procédure.
Manu
ETSSieb
Messages postés
24
Date d'inscription
mercredi 28 avril 2010
Statut
Membre
Dernière intervention
16 juillet 2010
17 juin 2010 à 13:42
17 juin 2010 à 13:42
Toujours pas ...
Cette fois-ci lors de l'exécution, j'ai une erreur 3075 : erreur de syntaxe (opérateur absent) dans l'expression '[Ref]='.
Merci de votre aide.
Cette fois-ci lors de l'exécution, j'ai une erreur 3075 : erreur de syntaxe (opérateur absent) dans l'expression '[Ref]='.
Merci de votre aide.
Utilisateur anonyme
17 juin 2010 à 13:48
17 juin 2010 à 13:48
Tu as bien un contrôle dans ton formulaire qui s'appelle Ref ?
Lorsque tu obtiens ce message, y a-t-il quelque chose saisi en référence, dans ton formulaire ?
Sinon, ajoute la ligne en début de procédure :
If IsNull(Ref.value) or len(Ref.value) = 0 then exit sub
ça évitera de lancer la procédure si rien n'est saisi en Ref.
Manu
Lorsque tu obtiens ce message, y a-t-il quelque chose saisi en référence, dans ton formulaire ?
Sinon, ajoute la ligne en début de procédure :
If IsNull(Ref.value) or len(Ref.value) = 0 then exit sub
ça évitera de lancer la procédure si rien n'est saisi en Ref.
Manu
Utilisateur anonyme
17 juin 2010 à 13:49
17 juin 2010 à 13:49
Autre question :
Dans ta table, le champs Ref est de quel type ?
Manu
Dans ta table, le champs Ref est de quel type ?
Manu
ETSSieb
Messages postés
24
Date d'inscription
mercredi 28 avril 2010
Statut
Membre
Dernière intervention
16 juillet 2010
17 juin 2010 à 14:07
17 juin 2010 à 14:07
C'est bon : j'ai juste modifié le code :
MaRef = DLookUp("Ref","MaTable","[Ref]=Ref.Value")
Ca fonctionne! Merci beaucoup !
MaRef = DLookUp("Ref","MaTable","[Ref]=Ref.Value")
Ca fonctionne! Merci beaucoup !
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Utilisateur anonyme
17 juin 2010 à 14:10
17 juin 2010 à 14:10
Attends une seconde !!!
y'a un truc qui cloche : "[Ref]=Ref.Value" devrait être "[Ref]=" & Ref.Value
Sinon, ça ne trouvera jamais tes doublons !
Manu
y'a un truc qui cloche : "[Ref]=Ref.Value" devrait être "[Ref]=" & Ref.Value
Sinon, ça ne trouvera jamais tes doublons !
Manu
ETSSieb
Messages postés
24
Date d'inscription
mercredi 28 avril 2010
Statut
Membre
Dernière intervention
16 juillet 2010
17 juin 2010 à 14:14
17 juin 2010 à 14:14
Pourtant si, ca fonctionne.
Je peux insérer des références non existantes et lorsqu'elles sont déjà dans ma table, j'ai le message d'erreur et ma référence s'efface.
Je peux insérer des références non existantes et lorsqu'elles sont déjà dans ma table, j'ai le message d'erreur et ma référence s'efface.
Utilisateur anonyme
17 juin 2010 à 14:17
17 juin 2010 à 14:17
Alléluhia !!!
J'aurais pas cru !
Tant mieux, tant mieux...
Manu
J'aurais pas cru !
Tant mieux, tant mieux...
Manu
Salut à vous,
Le sujet est un peu vieux, mais c'est exactement ce que je cherchais.
Seulement, en copiant le code de Manugeo, tout fonctionne bien au début, la boite de dialogue indiquant l'erreur est modifié. Je clique sur OK, et là, c'est le drame: "Erreur d'execution 2115 La macro ou la fonction attribuée à la propriété 'Avant Maj' ou 'Valide si' pour ce champ empêche Icrosoft access d'enregistrer les données dans le champ."
Sachant que le [Ref] s'appelle chez moi [Title] de la table [T_Biblio] (sur Access 2010):
Private Sub Title_BeforeUpdate(Cancel As Integer)
Dim MaRef
MaRef = DLookup("Title", "T_Biblio", "[Title]=Title.Value")
If Not IsNull(MaRef) Then
MsgBox "Reference already in the base !"
Title.Value = ""
End If
End Sub
Merci d'avance pour le coup de main :)
Le sujet est un peu vieux, mais c'est exactement ce que je cherchais.
Seulement, en copiant le code de Manugeo, tout fonctionne bien au début, la boite de dialogue indiquant l'erreur est modifié. Je clique sur OK, et là, c'est le drame: "Erreur d'execution 2115 La macro ou la fonction attribuée à la propriété 'Avant Maj' ou 'Valide si' pour ce champ empêche Icrosoft access d'enregistrer les données dans le champ."
Sachant que le [Ref] s'appelle chez moi [Title] de la table [T_Biblio] (sur Access 2010):
Private Sub Title_BeforeUpdate(Cancel As Integer)
Dim MaRef
MaRef = DLookup("Title", "T_Biblio", "[Title]=Title.Value")
If Not IsNull(MaRef) Then
MsgBox "Reference already in the base !"
Title.Value = ""
End If
End Sub
Merci d'avance pour le coup de main :)
Bonjour,
Etant donné que la question est indiquée comme résolue, il aurait mieux valu que tu ouvres une autre question, quitte à faire référence à la question présente par un copié/collé de l'adresse. Il n'est pas trop tard, tu fais un copié/collé de ta question actuelle dans une nouvelle.
Cela dit, il y a une erreur dans la 2èmeréponse de Anonyme:"Autant pour moi.. Je mélange systématiquement RechDom et DLookUp (C'est la même chose, mais le premier s'utilise dans les formules, le second dans le code !!!) ". Les deux peuvent très bien s'écrire dans le code comme dans les formules.
Pour le reste, il faut savoir ce qu'est l'erreur 2115, à toi de la chercher dans le didacticiel.
Maintenant il y a une méthode bien plus simple pour empêcher les enregistrements doubles, et peut-être est-ce justement cette erreur 2115, c'est de passer par les index.
En demandant pour ton champ (ici MaRef) "Indexé sans doublon", la saisie sera bloquée avant son enregistrement, et dans ce cas le morceau de code est inutile, sauf si tu veux une alerte avant que Access le fasse, sinon il est également possible de mettre pour condition de validité de l'enregistrement une formule du genre " DCount(blablabla)=0" et d'ajouter un message dans la propriété "Message si erreur"
Etant donné que la question est indiquée comme résolue, il aurait mieux valu que tu ouvres une autre question, quitte à faire référence à la question présente par un copié/collé de l'adresse. Il n'est pas trop tard, tu fais un copié/collé de ta question actuelle dans une nouvelle.
Cela dit, il y a une erreur dans la 2èmeréponse de Anonyme:"Autant pour moi.. Je mélange systématiquement RechDom et DLookUp (C'est la même chose, mais le premier s'utilise dans les formules, le second dans le code !!!) ". Les deux peuvent très bien s'écrire dans le code comme dans les formules.
Pour le reste, il faut savoir ce qu'est l'erreur 2115, à toi de la chercher dans le didacticiel.
Maintenant il y a une méthode bien plus simple pour empêcher les enregistrements doubles, et peut-être est-ce justement cette erreur 2115, c'est de passer par les index.
En demandant pour ton champ (ici MaRef) "Indexé sans doublon", la saisie sera bloquée avant son enregistrement, et dans ce cas le morceau de code est inutile, sauf si tu veux une alerte avant que Access le fasse, sinon il est également possible de mettre pour condition de validité de l'enregistrement une formule du genre " DCount(blablabla)=0" et d'ajouter un message dans la propriété "Message si erreur"
17 juin 2010 à 13:12
Merci pour votre proposition mais ce code ne fontionne pas chez moi.
Fallait-il le mettre dans Après Màj de [Ref]?
J'ai inséré le code et de suite est apparu le message suivant : "Erreur de compilation : Attendu séparateur de liste ou )" en surlignant le point virgule.
J'ai supposé qu'il fallait le remplacer par une virgule mais lorsque je veux lancer le formulaire, un autre message s'affiche en indiquant que RechDom est inconnu.
Je suis très novice en VBA et Access. Pouvez-vous m'aider?