carnez
Messages postés120Date d'inscriptionjeudi 31 octobre 2002StatutMembreDernière intervention 2 août 2004 4 déc. 2002 à 17:49
Bonjour,
pour lire un fichier Excel à partir d'Access, c'est un peu plus compliqué que celà : il faut partir d'une définition de zone qui reprend toutes tes données Excel, puis utiliser un recordset;
1- definition d'un nom de zone dans ton tableau Excel en partant d'Access
Sub definition_zone()
Dim Feuille, Classeur As Variant
Dim Xls As Excel.Workbook
Dim colonne As Integer
Dim ligne As Integer
Dim ligne_début As Integer
Dim colonne_début As Integer
Xls.Application.ActiveWorkbook.Activate 'ok
Classeur = Xls.Application.ActiveWorkbook.name 'ok
' nom de la feuille du classeur
Feuille = Xls.Application.Sheets(1).name
' positionnement sur la dernière cellule du tableau
Xls.Application.Worksheets(1).Cells(1, 1).Select 'ok
Xls.Application.ActiveCell.SpecialCells(xlLastCell).Select 'ok
' initialisation du début
ligne_début = 1
colonne_début = 1
' numéro de colonne et de ligne de la dernière cellule
colonne = Xls.Application.ActiveCell.Column 'ok
ligne = Xls.Application.ActiveCell.Row 'ok
' composition de la référence de la zone à créer
Feuille = Feuille & "'!L" & ligne_début & "C" & colonne_début & ":L" & ligne & "C" & colonne ' ok
' création de la zone de référence
Xls.Application.ActiveWorkbook.Names.Add name:="nom_de_zone", RefersToR1C1:= _
"='" & Feuille 'ok
Set Xls = Nothing
End Sub
2- lecture de ta feuille Excel
'ouverture de la connection à la table "tab_prix_achat_budget" ACCESS
Set Cnn_db = CurrentProject.Connection
Rst_db.Open "tab_prix_achat_budget", Cnn_db, adOpenKeyset, adLockOptimistic
' création de la zone nommée dans le fichier Excel
definition_zone
'ouverture de la connection au fichier EXCEL
With Cnn_ex
.Provider = "Microsoft.Jet.OLEDB.4.0"
.Properties("Extended Properties").Value = "Excel 8.0"
.Open path
End With
' lecture du fichier EXCEL
Set Rst_ex = New adoDb.Recordset
Rst_ex.Open "nom_de_zone", Cnn_ex, , , adCmdTable
Do Until Rst_ex.EOF
' ajout dans la table access
With Rst_db
If IsNumeric(Rst_ex.Fields("Artcode")) Then ' si le code article est renseigné
.AddNew Array("code article", "prix achat budget 1er tri", "prix achat budget 2ème tri", "prix achat budget 3ème tri", "prix achat budget 4ème tri"), _
Array(Rst_ex.Fields("Artcode"), Rst_ex.Fields("1 trim"), Rst_ex.Fields("2 trim"), Rst_ex.Fields("3 trim"), Rst_ex.Fields("4 trim"))
.Update
End If
End With
Rst_ex.MoveNext ' ligne suivante du tableau EXCEL
Loop
' fermeture des connections
Cnn_ex.Close
Cnn_db.Close
cs_bruno03
Messages postés9Date d'inscriptionlundi 4 novembre 2002StatutMembreDernière intervention 5 décembre 2002 5 déc. 2002 à 09:27
merci pour l'info mais je me suis peut-etre mal exprimé.
en fin mon petit prog a fonctionné et maintenant plus
Hier en rechargeant une base de registre ancienne j'ai pu le refaire tourner
j'en conclu que c'est une clé du registre qui est vérolée
connais tu un moyen de retrouver cette clé afin de la réparer