A voir également:
- VBA recordset
- Mkdir vba ✓ - Forum VB / VBA
- Vba récupérer valeur cellule ✓ - Forum VB / VBA
- Excel compter cellule couleur sans vba - Guide
- Vba range avec variable ✓ - Forum VB / VBA
- Autofill vba ✓ - Forum Excel
5 réponses
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
4 févr. 2011 à 10:11
4 févr. 2011 à 10:11
Bonjour,
Voilà un exemple :
Bon courage.
;o)
Voilà un exemple :
Dim db As DAO.Database Dim rs As DAO.Recordset Dim query As String Set db = CurrentDb query = ""select * from TAILLE where code_taille = ' " & Me.new_taille & " '") Set rs = db.OpenRecordset(query) If rs.RecordCount <> 0 Then MsgBox "Cet enregistrement existe déjà !!!" Else With rs .AddNew .Fields("code_taille") = Me.new_taille .Update End With rs.Close db.Close Set rs = Nothing Set db = Nothing MsgBox ("La taille à été ajouter avec succès") End If
Bon courage.
;o)
blux
Messages postés
26546
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
24 décembre 2024
3 319
4 févr. 2011 à 10:14
4 févr. 2011 à 10:14
Salut,
plutôt que de faire un recordset pour compter le nombre d'occurrences, fais un dlookup, ça va beaucoup plus vite...
plutôt que de faire un recordset pour compter le nombre d'occurrences, fais un dlookup, ça va beaucoup plus vite...
Merci pour ta réponse Polux31. Ca fonctionne en partie, je m'explique.
Quand je rentre une taille non existante, tous marche impeccablement.
Cependant quand je rentre une taille déja existante ca me met une erreur (erreur 3022) en disant qu'il ne peux pas faire de modification car il y aurai un risque de doublon.
Mais en faites j'ai l'impression qu'il ne rentre meme pas dans la boucle du IF (c'est à dire ici :
Quand je fait un debog, ca me surligne le .Update
Quand je rentre une taille non existante, tous marche impeccablement.
Cependant quand je rentre une taille déja existante ca me met une erreur (erreur 3022) en disant qu'il ne peux pas faire de modification car il y aurai un risque de doublon.
Mais en faites j'ai l'impression qu'il ne rentre meme pas dans la boucle du IF (c'est à dire ici :
If rs.RecordCount <> 0 Then MsgBox "Cet enregistrement existe déjà !!!" Else
Quand je fait un debog, ca me surligne le .Update
Polux31
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 204
4 févr. 2011 à 10:44
4 févr. 2011 à 10:44
Ajoute un Exit Sub (ou Function) après le msgbox.
C'est étrange parce que je viens de faire un test et je n'ai pas ton message d'erreur.
En fait j'ai fait ça de tête mais la bonne façon de faire serait plutôt :
C'est étrange parce que je viens de faire un test et je n'ai pas ton message d'erreur.
En fait j'ai fait ça de tête mais la bonne façon de faire serait plutôt :
Sub AjoutTaille() Dim db As DAO.Database Dim rs As DAO.Recordset Dim query As String Set db = CurrentDb query = ""select * from TAILLE where code_taille = ' " & Me.new_taille & " '") Set rs = db.OpenRecordset(query) If rs.RecordCount <> 0 Then MsgBox "Cet enregistrement existe déjà !!!" Else With rs .AddNew .Fields("code_taille") = Me.new_taille .Update End With MsgBox ("La taille à été ajouter avec succès") End If rs.Close db.Close Set rs = Nothing Set db = Nothing End Sub
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Toujours le même message d'erreur. Peut etre un problème au niveau de ma table mais ca me paratrer bizzarre.
Voici ma table :
table TAILLE avec un champ qui est code_taille qui est clé primaire et son type est de type texte.
Voici ma table :
table TAILLE avec un champ qui est code_taille qui est clé primaire et son type est de type texte.
blux
Messages postés
26546
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
24 décembre 2024
3 319
4 févr. 2011 à 10:58
4 févr. 2011 à 10:58
Essaye ça :
if not isnull(dlookup("code_taille","taille","code_taille = " & me.new_taille)) then
msgbox "taile existante
else
'ajout ligne
end if
Par contre, ton recordset tel que décrit actuellement ne te permettra pas de faire une insertion de ligne. Il faut le traiter en type table.
Set rs = CurrentDb.OpenRecordset("TAILLE", dbOpenTable)
if not isnull(dlookup("code_taille","taille","code_taille = " & me.new_taille)) then
msgbox "taile existante
else
'ajout ligne
end if
Par contre, ton recordset tel que décrit actuellement ne te permettra pas de faire une insertion de ligne. Il faut le traiter en type table.
Set rs = CurrentDb.OpenRecordset("TAILLE", dbOpenTable)
blux
Messages postés
26546
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
24 décembre 2024
3 319
4 févr. 2011 à 11:24
4 févr. 2011 à 11:24
j'ai pas fait attention, mais si code_taille est alphanum, il faut l'enquoter :
if not isnull(dlookup("code_taille","taille","code_taille = '" & me.new_taille & "'"))
Effectivement ça marche maintenant, c'est vrai que j'ai du mal a enquoter tous :/
Juste une dernière petite indication si tu sais (je demande pas la solution) :
Dans mon formulaire d'ajout, j'ai aussi une listbox avec la table table. et j'aimerai que quand j'appuis sur le bouton Ajouter (que je viens de faire grace a votre aide), la listBox ce mette a jour. Car je suis obligé une fois une taille ajouter, de quitter puis de rouvrir pour voir la mise a jour.
Faut il faire une requête update ou autre ?
Juste une dernière petite indication si tu sais (je demande pas la solution) :
Dans mon formulaire d'ajout, j'ai aussi une listbox avec la table table. et j'aimerai que quand j'appuis sur le bouton Ajouter (que je viens de faire grace a votre aide), la listBox ce mette a jour. Car je suis obligé une fois une taille ajouter, de quitter puis de rouvrir pour voir la mise a jour.
Faut il faire une requête update ou autre ?
blux
Messages postés
26546
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
24 décembre 2024
3 319
4 févr. 2011 à 11:41
4 févr. 2011 à 11:41
listbox.requery ???