Bonjour à tous
Je débute dans les jonctions VBA Excel-Access.
J'aimerai modifier un enregistrement, par VBA, du champs "statut_add" dans "ma_table"
Les champs de ma table sont :
- ID
- nom
- numero_add
- num_dep
- statut_add
- .......
La recherche se fait dans le champ "numero_add", dont le Type de données est "Texte", avec comme critère la cellule B10. Celle-ci est soit un nombre soit un texte.
Dans le code ci-dessous (extrait Wiki excel-download), le nombre ne me pose pas de problème.
Quand j'ai un "texte" j'ai une erreur :
-******
Erreur d'exécution 3021
BOF ou EOF est egal à True ou l'enregistrement actuel a été supprimé.
L'opération demandée nécessite un enregistrement actuel
-******
sur la ligne
Je suppose que la ligne :
n'est pas bien codée et/ou peut-être celle qui me renvoie l'erreur
Où est mon erreur ? (ou mes erreurs)
Merci d'avance pour vos réponses
Eric
Je débute dans les jonctions VBA Excel-Access.
J'aimerai modifier un enregistrement, par VBA, du champs "statut_add" dans "ma_table"
Les champs de ma table sont :
- ID
- nom
- numero_add
- num_dep
- statut_add
- .......
La recherche se fait dans le champ "numero_add", dont le Type de données est "Texte", avec comme critère la cellule B10. Celle-ci est soit un nombre soit un texte.
Dans le code ci-dessous (extrait Wiki excel-download), le nombre ne me pose pas de problème.
Code:
Sub test_modifi_bdd()
Dim Conn As ADODB.Connection
Dim rsT As ADODB.Recordset
Dim fld As ADODB.Field
Set Conn = New ADODB.Connection
With Conn
.Provider = "Microsoft.JET.OLEDB.4.0"
.Open ThisWorkbook.Path & "\bdd_sauvegarde_adresse.mdb"
End With
Set rsT = New ADODB.Recordset
'table nommée "maTable"
rsT.Open "ma_Table", Conn, adOpenKeyset, adLockOptimistic
With rsT
.MoveFirst
' recherche la valeur de la cellule B10 dans champ "numero_add"
' pour Cells(10, 2) => numérique
'.Find ("numero_add=" & Cells(10, 2))
' pour Cells(10, 2) => texte
.Find ("numero_add=" & Chr(34) & Cells(10, 2) & Chr(34))
'quand la valeur est trouvée , on modifie le champ "statut_add" dont le Type de données est "Texte"
' quand Cells(10, 2) => numérique pas de problème
' mais quand Cells(10, 2) => texte cela ne fonctionne pas
.Fields("statut_add") = Chr(34) & Cells(10, 4) & Chr(34)
.Update
End With
Conn.CloseEnd Sub
-******
Erreur d'exécution 3021
BOF ou EOF est egal à True ou l'enregistrement actuel a été supprimé.
L'opération demandée nécessite un enregistrement actuel
-******
sur la ligne
Code:
.Fields("statut_add") = Cells(10, 4)
Code:
.Find ("numero_add=" & Chr(34) & Cells(10, 2) & Chr(34))
Où est mon erreur ? (ou mes erreurs)
Merci d'avance pour vos réponses
Eric