Problème VB erreur 3021 : Aucun enregistrement en cours

Signaler
Messages postés
19
Date d'inscription
mercredi 4 novembre 2009
Statut
Membre
Dernière intervention
20 mai 2010
-
Messages postés
10
Date d'inscription
mercredi 21 avril 2010
Statut
Membre
Dernière intervention
3 mai 2010
-
J'ai un soucis, quand j'exécute ceci, il m'envoie l'erreur 3021



Public Sub essai()
Dim dbs As Database, rst As dao.Recordset
Dim xl_app As New Excel.Application
Dim objexcel As Object
Dim xl_feuille As Object
Dim wshnetwork As String
'Set wshnetwork = WScript.CreateObject("WScript.Network")
'User = wshnetwork.UserName
'Chemin = InputBox("Entrer le chemin d'enregistrement des données", , "C:\My Documents\User")
With xl_app
Set objexcel = xl_app.Workbooks.Open("D:\test.xls")
Set xl_feuille = objexcel.Sheets("feuil1")
End With
Set dbs = CurrentDb
Set rst = dbs.OpenRecordset("rpqs_test")
rst.Edit 'Il s'arrète ici... "erreure 3021 : Aucun enregistrement en cours"
rst![nom_de_la_collectivite] = xl_feuille.Range("B6:B6").Value
rst.Update
xl_app.ActiveWorkbook.Close
xl_app.Quit
Set xl_app = Nothing
Set objexcel = Nothing
End Sub


On m'a parlé de rst.movefirst, ce qui donne ceci mais...

Set rst = dbs.OpenRecordset("rpqs_test")
rst.MoveFirst '...même erreure, mais ici maintenant...
rst.Edit
rst![nom_de_la_collectivite] = xl_feuille.Range("B6:B6").Value
rst.Update
xl_app.ActiveWorkbook.Close
xl_app.Quit
Set xl_app = Nothing
Set objexcel = Nothing
End Sub


En espérant que quelqu'un puisse éclairer ma lanterne, je vous remercie d'avance !

5 réponses

Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
115
Salut,

Teste le nombre d'enregistrement :
if rst.RecordCount <= Then 'aucun enregistrement
______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
Messages postés
19
Date d'inscription
mercredi 4 novembre 2009
Statut
Membre
Dernière intervention
20 mai 2010

Merci, mais, j'incorpore cela comment ? Je n'arrive pas à visualiser
Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
115
Salut,

Et bien :
Set dbs = CurrentDb
Set rst = dbs.OpenRecordset("rpqs_test")
if (rst.recordCount > 0) then
rst.Edit 'Il s'arrète ici... "erreure 3021 : Aucun enregistrement en cours"
else
rst.addNew
end if
rst![nom_de_la_collectivite] = xl_feuille.Range("B6:B6").Value
rst.Update

______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
Messages postés
19
Date d'inscription
mercredi 4 novembre 2009
Statut
Membre
Dernière intervention
20 mai 2010

Merciiiii
Messages postés
10
Date d'inscription
mercredi 21 avril 2010
Statut
Membre
Dernière intervention
3 mai 2010

Bonjour tout le monde!

Alors moi j'ai le meme problème que vinceg76 mais avec un code sous access. J'ai rajouté le teste mais ca me met toujours la meme erreur. Voici le code:

'Mise à jour de l'indice dans la table des produits.
Private Sub Indice_AfterUpdate()
Dim indice_map As String
Dim rec As DAO.Recordset
Dim criteria As String


indice_map = Forms!F_Map!F_Map_Produit.Form![Indice]
'Set rec DoCmd.RunSQL("SELECT Indice FROM PRODUIT_produit WHERE N°produit " & Forms!F_Map!F_Map_Produit.Form![N°de produit])
Set rec = CurrentDb.OpenRecordset("T_Produit", DAO.dbOpenTable)
'criteria "[N°produit] " & Forms!F_Map!F_Map_Produit.Form![N°de produit]
'rec.FindFirst criteria
rec.Index = "PrimaryKey"
rec.Seek "=", Forms!F_Map!F_Map_Produit.Form![N°de produit]
If rec.NoMatch Then

If (rec.RecordCount > 0) Then
rec.Edit 'c'est ici que ca plante
Else
rec.AddNew
End If

rec!Indice = indice_map
rec.Update
End If


rec.Close
Set rec = Nothing
End Sub

Je tiens à préciser que j'ai récuperé ce code d'une autre personne et que je debute en programmation VBA access.

Merci