Vba parcourir table

Fermé
muman - 5 nov. 2010 à 14:33
 Jean_Jacques - 12 nov. 2010 à 11:52
Bonjour,

voila je fais une base access dans laquelle l'utilisateur entre un code projet dans un formulaire que j'ai créé.
j'ai donc une table qui contient tous les codes projets enregistrés;
mon problème est tout simple, je ne veut pas de doublon;
Ainsi je cherche le code vba qui permettrait, lorsque l'utilisateur entre un code projet de chercher dans ma table s'il existe déjà ou pas ; et dans le cas ou le code projet existe déjà je voudrais faire afficher un petit message d'erreur du style "ce projet existe déja" .

j'ai bien essayé un code de ce type

If code_projet.Value = ma_tab.code_projet.Value Then MsgBox "le projet existe déjà"

mais j'ai une erreur du genre "objet requis"
ou un truk kom ça.
Si quelqu'un peut m'aider merci d'avance.

3 réponses

blux Messages postés 26019 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 2 mai 2024 3 289
Modifié par blux le 5/11/2010 à 14:59
Salut,

tu dois combiner la fonction dlookup avec un test de nullité, genre :

If not isnull(dlookup("nom_du_champ_de_la_table","nom_de_la_table","nom_du_champ_de_la_table = " & zone_de_saisie_code_projet.value) then 
    msgbox zone_de_saisie_code_projet.value & " existe déjà",vbCritical,"erreur" 
end if


A+ Blux
 "Les cons, ça ose tout. 
C'est même à ça qu'on les reconnait"
0
merci c cool c bien la commande que je cherchais;
par contre j'ai pas encore réussi . quand j'entre un code projet qui existe déjà dans ma table même avec ce code ça enregistre kan meme et aucun message d'erreur ne s'affiche.
j'ai essayé plusieurs codes mais aucun ne marche:

If (DLookup("[code projet]", "tab_portefeuille", "[code projet] = Forms![CreerProjet]![code_projet].Value ")) Then
MsgBox code_projet.Value & " existe déjà", vbCritical, "erreur"
End If

(je n'ai pas fais le test pr la valeur nulle pck j'en ai pas besoin)
0
blux Messages postés 26019 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 2 mai 2024 3 289
8 nov. 2010 à 11:18
Tu n'as pas compris la fonction dlookup, elle renvoie 'null' si elle ne trouve rien.
Dans ton cas, tu ne testes rien.
Quand fais-tu l'insertion de ton projet dans la table ?
0
ah d'accord ok g fai n'importe koi en fait g compris; bon jvai re-essayer
mon projet s'insère dans la table lorsque dans le formulaire on clique sur le bouton d'enregistrement, c'est d'ailleurs sur cet évenement (clic) que j'ai mis mon bout de code.
0
c bon ça marche merci bcp:
pdt que j'y suis tu c pas comment je pourrais mettre un bouton de commande dans le message d'erreur ?
0
blux Messages postés 26019 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 2 mai 2024 3 289
8 nov. 2010 à 18:03
Un bouton qui fait quoi ?
0
bah si le code projet existe déja , dans le message d'erreur je voudrais un bouton de commande qui ouvrirais le formulaire correspondant au code projet ke l'utilisateur a entré:
je c kel code mettre dans le bouton mais je c pas comment mettre un bouton dans le message d'erreur.
0
Jean_Jacques
12 nov. 2010 à 11:52
Bonjour Muman,

Ci-joint, à télécharger, une variante possible, mais il faut l'adapter à votre cas.
Il s'agit du Formulaire F_Saisiie facuture

En saisissant, dans le champ de saisie : "ZORROB"
Un message d'alerte vous informe que la facture est déjà connue.

Si j'ai bien compris, vous souhaitez, au contraire, une alerte pour un enregistrement inexistant.
Je vous laisse le plaisir d'inverser les conditions du code ...


https://www.cjoint.com/?0lmlSDKZdkV
0