Erreur d'exécution '3265'

amirdiakite Messages postés 8 Date d'inscription mercredi 19 janvier 2011 Statut Membre Dernière intervention 23 mai 2012 - 18 mai 2012 à 13:33
amirdiakite Messages postés 8 Date d'inscription mercredi 19 janvier 2011 Statut Membre Dernière intervention 23 mai 2012 - 21 mai 2012 à 15:58
Bonjour,
Je bosse sur un projet en VBA. Mon code me génère l'erreur suivante quand je compile pas à pas "Erreur d'exécution '3265' Erreur défini par l'application ou par l'objet" lorsque le curseur arrive à cette ligne "Fields("Magasin") = Range("B" & r).Value". J'ai cherché on me dit que cette erreur signifie "3265 : adErrItemNotFound Aucun élément de la collection ne correspond au nom ou à l'ordinal demandé. Un nom de champ ou de table incorrect a été spécifié." je vérifie dans ma base les noms sont apparemment correct. Quelqu'un pourrait-il m'aider. Voici mon code en entier:
Sub FromExcelToAccess()
Dim cn As ADODB.Connection, rs As ADODB.Recordset, r As Long
Chemin = ActiveWorkbook.Path
Source = Chemin & "\gestion stock.mdb"
Set cn = New ADODB.Connection
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source= " & Source & ";"
' open a recordset
Set rs = New ADODB.Recordset
rs.Open "[Etat stock]", cn, adOpenKeyset, adLockOptimistic, adCmdTable ' all records in a table
r = 2 ' the start row in the worksheet
Do While Len(Range("A" & r).Formula) > 0 ' repeat until first empty cell in column A
With rs
.AddNew ' create a new record
' add values to each field in the record
.Fields("Code article") = Range("A" & r).Value
.Fields("Magasin") = Range("B" & r).Value
.Fields("Emplacement") = Range("C" & r).Value
.Fields("Ref GE/Origine") = Range("D" & r).Value
.Fields("Libelle") = Range("E" & r).Value
.Fields("Qté en stock") = Range("F" & r).Value
.Fields("Qté mini") = Range("G" & r).Value
.Fields("Unité de mesure") = Range("H" & r).Value
.Fields("Coût unitaire moyen") = Range("I" & r).Value
.Fields("Coût total") = Range("J" & r).Value
.Update ' stores the new record
End With
r = r + 1 ' next row
Loop
rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing
End Sub

8 réponses

LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
18 mai 2012 à 13:46
Bonjour,

ça sert à rien de reposer la même question.
On t' a déjà répondu sur une discussion précédente.
Il vaut mieux la poursuivre pûtôt de la recommencer.

ça découragera plus d' un de savoir que tu es pressé.
Ici on prend son temps, et surtout on ne répond que si on pourra t' apporter un plus.

Alors, patience !


[] Ce qui va sans dire. va mieux en le disant.
0
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
18 mai 2012 à 14:38
essaies avec :
rs.Open "[Etat stock]", cn, adOpenDynaset,




[] Ce qui va sans dire. va mieux en le disant.
0
Utilisateur anonyme
19 mai 2012 à 02:10
Bonjour,
Max: C'est bien adLockOptimistic et ça fonctionne puisqu'il enregistre la Range("A" & r)

Amir: ce ne serait pas :
.Fields("magasin") = Range("B" & r).Value


Parce que access fait la différence entre les majuscules et minuscules.
Il faut également éviter les accents et autres caractères bizarres dans les noms de champ.

Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
0
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
19 mai 2012 à 02:38
Salut Acive,

j' ai parlé du type de curseur et pas du LockType.


rs.Open "[Etat stock]", cn, adOpenDynaset, adLockOptimistic, adCmdTable

il enregistre bien la Range("A" & r) mais,le curseur étant figé.il ne peut passer au champ suivant.

D' ailleur il n' enregistre pas encore.Il insère juste la première valeur dans la première colonne.

Il n' a pas encore atteint le .Update



[] Ce qui va sans dire. va mieux en le disant.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
19 mai 2012 à 12:21
Salut Max,
Ah ok excuse, je me suis "gouré" de copier/coller...

Je ne crois pas non plus, j'ai toujours utilisé adOpenKeyset moi aussi, je pense plutôt à une histoire de nom de champs qui ne respecte pas la case dans son cas...

Mais attendons sa réponse....

Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
0
amirdiakite Messages postés 8 Date d'inscription mercredi 19 janvier 2011 Statut Membre Dernière intervention 23 mai 2012
21 mai 2012 à 10:34
Bonjour à tous,
je remercie tous ceux qui ont répondu à ma requête. j'ai essayé la solution de LIBRE_MAX pour le adOpenDynaset, puisque le curseur se bloque toujours au même endroit. Aussi j'ai vérifié les noms de champs ils correspondent suivant la remarque de ACIVE, mais il n'y a pas de problèmes à ce niveau. Je continue toujours de cherché mais ça coince toujours.
Merci et bien à tous.

DIAKITE.
0
Utilisateur anonyme
21 mai 2012 à 13:52
Re:
Eh bien, procédons par élimination...
Annule l'enregistrement "Magasin" pour voir
A noter que tu dois ouvrir en suite la base manuellement et supprimer l'enregistrement, sinon tu auras un champ vide.
With rs
.AddNew ' create a new record
' add values to each field in the record
.Fields("Code article") = Range("A" & r).Value
'.Fields("Magasin") = Range("B" & r).Value
.Fields("Emplacement") = Range("C" & r).Value
.Fields("Ref GE/Origine") = Range("D" & r).Value
.Fields("Libelle") = Range("E" & r).Value
.Fields("Qté en stock") = Range("F" & r).Value
.Fields("Qté mini") = Range("G" & r).Value
.Fields("Unité de mesure") = Range("H" & r).Value
.Fields("Coût unitaire moyen") = Range("I" & r).Value
.Fields("Coût total") = Range("J" & r).Value 


Et la tu vas voir si tout le reste fonctionne ou pas.

Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
0
amirdiakite Messages postés 8 Date d'inscription mercredi 19 janvier 2011 Statut Membre Dernière intervention 23 mai 2012
21 mai 2012 à 15:58
@Acive: j'ai déjà essayé cette option mais j'ai toujours le mêmes problème au même endroit Fields("Code article") = Range("A" & r).Value. J'ai même annulé tous les autres champs pour laisser seulement le champs "code article". Quand je compile pas à pas j'ai toujours le même problème au même endroit Fields("Code article") = Range("A" & r).Value .

Cordialement,
Amirdiakite
0
Rejoignez-nous