amirdiakite
Messages postés8Date d'inscriptionmercredi 19 janvier 2011StatutMembreDernière intervention23 mai 2012
-
17 mai 2012 à 16:04
amirdiakite
Messages postés8Date d'inscriptionmercredi 19 janvier 2011StatutMembreDernière intervention23 mai 2012
-
18 mai 2012 à 12:11
Bonjour,
Je suis un peu nouveau sur le forum. Au fait je développe actuellement une petite application en VBA pour importer automatiquement des données d’Excel vers Access. Je suis débutant en VBA, mais en cherchant sur le net j’ai pu écrire un code. J’ai un petit souci. Lorsque je compile le code que j'ai écris me génère une erreur du genre "Type défini par l'utilisateur non défini" et le curseur se pointe sur cette partie de mon code « cn As ADODB.Connection ». Quelqu'un pourrait t-il m'aider. Voici mon code complet en VBA que j’ai écris:
Sub ADOFromExcelToAccess()
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
amirdiakite
Messages postés8Date d'inscriptionmercredi 19 janvier 2011StatutMembreDernière intervention23 mai 2012 18 mai 2012 à 12:11
@Jack : Finalement j'ai trouvé la solution pour l'erreur Variable non défini" et cette partie du code est surligné "Chemin = ActiveWorkbook.Path". Peux tu me conseiller une documentation ou des liens internet pour la compréhension et la gestion des erreurs de compilations. Parce c'est une autre erreur qui s'affiche, elle se présente ainsi : Erreur d’exécution '3265' Erreur défini par l'application ou par l'objet. Merci d'avance pour votre collaboration.
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 18 mai 2012 à 00:24
Salut
Comme le dit l'erreur, les objets de la librairie ADODB sont inconnus de VB.
Il suffit donc d'aller dans les références du menu Outils de l'IDE de VBA et de chercher puis cocher "Microsoft AcriveX Data Objects X.X Library", où X.X représente la version à choisir (par exemple 2.8 ou 6.0)
Vala
Jack, MVP VB NB : Je ne répondrai pas aux messages privés
Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
amirdiakite
Messages postés8Date d'inscriptionmercredi 19 janvier 2011StatutMembreDernière intervention23 mai 2012 18 mai 2012 à 11:51
Merci Jack pour ton aide. Je suis vraiment débutant sur VBA donc il y a beaucoup de subtilités que je ne maîtrise pas. Je compile encore mon code j'ai cette erreur "Variable non défini" et cette partie du code est surligné "Chemin = ActiveWorkbook.Path". Je suis en train de chercher mais si vous pouviez m'aider ça me ferait gagner en temps. je travaille sur un projet dont le délai est un peu court.