Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1716 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Export Excel vers Access à l'aide de VBA

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Export Excel vers Access à l'aide de VBA

n°1896356
rabihm81
Besoin d'aide en C++
Posté le 17-06-2009 à 17:05:23  profilanswer
 


 
Bonjour,
Je vous expose brièvement mon problème.
Je dois exporter un fichier excel dans un table de ma base Access.
Dans ce fichier excel, je dois exporter 3 feuilles.
J'ai fait une première boucle qui permet de parcourir l'ensemble des feuilles.
A l'intérieur, il y a une autre boucle qui permet de parcourir les lignes de la feuille excel courante.
Quand je compile le code, ça marche très bien pour la première ligne, mais dès qu'il aurait fini de traiter toutes les lignes de la première feuille, il m'affiche le message d'erreur suivant :
'Un index ou une cle primaire ne peut pas contenir une valeur nulle'
L'erreur intervient sur le .Update, à mon avis lorsqu'il crée le dernier enregistrement corrspondant à la dernière ligne, comme il y a un rs.update après, il pointe sur le recordset suivant ( l'a t'il créé? ), et on ne met rien dedans, dans ce cas là c'est normal d'avoir cette erreur. Il faut peut être désactiver juste le dernier rs.update, et ça j'arrive pas à le faire, déjà je ne sais pas si on peut le faire, puis si l'erreur provient vraiment de là.
Je vous remercie d'avance pour votre aide.
 
Voici mon code
 
 

Citation :


Function ExportRabih() As Integer
 
 
 
Dim Db As DAO.Database
Dim rs As DAO.Recordset
 
 
Dim appExcel As Object
Dim Xlwb As Object
Dim ws As Object
 
 
Dim deb As Integer
Dim var As Integer
Dim sh As Integer
Dim str As String
Dim Comp As String
Dim Dom As String
Dim temp As Integer
 
MsgBox "Bonjour"
Set appExcel = CreateObject("Excel.Application" )
appExcel.Visible = True
Set Xlwb = appExcel.Workbooks.Open("C:\Users\rmahfouz\Desktop\stage\Docs Laurent\TechnicienSysteme.xlsx" )
'Set ws = Xlwb.Sheets(3)
'MsgBox ws.Cells(3, 1)
 
Set Db = CurrentDb
'MsgBox ws.Cells(1, 1)
 
Set rs = Db.OpenRecordset("Activites", dbOpenTable)
'MsgBox rs.Fields("Activite" ).Value = ws.Cells(3, 2)
 
Do While (sh <= 5)
sh = 3
MsgBox sh
 
 
Select Case sh
    Case 3
        Comp = "Compétences techniques"
        Set ws = Xlwb.Sheets(sh)
        MsgBox ws.Cells(3, 1)
    Case 4
        Comp = "Compétences Métiers"
        Set ws = Xlwb.Sheets(sh)
        MsgBox ws.Cells(3, 1)
    Case 5
        Comp = "Aptitudes Comportementales"
        Set ws = Xlwb.Sheets(sh)
        MsgBox ws.Cells(3, 1)
End Select
 
deb = 3
temp = deb
 
'Recupère le domaine et avance vers la case contenant le domaine suivant
'Dom = ws.Cells(deb, 1)
'MsgBox Dom
 
Dom = ws.Cells(deb, 1)
Do While Not (IsNull(ws.Cells(deb, 2)))
 
MsgBox deb
MsgBox ws.Cells(deb, 2)
 
With rs
.AddNew
.Fields("Activite" ).Value = ws.Cells(deb, 2)
.Fields("Domaine" ).Value = ws.Cells(deb, 1)
.Fields("Métier" ).Value = "Techniciens Systèmes"
.Fields("NoteCible" ).Value = ws.Cells(deb, 6)
.Fields("TypeCompetences" ) = Comp
.Update
End With
 
deb = deb + 1
 
 
Loop
 
sh = sh + 1
Loop
 
 
 
rs.Close
Set rs = Nothing
Db.Close
Set Db = Nothing
End Function

mood
Publicité
Posté le 17-06-2009 à 17:05:23  profilanswer
 

n°1896490
produvba
Posté le 18-06-2009 à 08:50:29  profilanswer
 

Bonjour,
 
Plutôt que de vouloir exporter, mieux vaut dans ce cas importer. Je m'explique: il faut aller dans Access où il y a dans le menu une fonction "import" très simple à utiliser. On peut aussi utiliser "lier..." si le fichier Excel a vocation à être modifié. S'il faut rajouter les lignes d'Excel dans une table Access, le mieux est d'avoir une table dans access "Excel_source" liée au fichier Excel, puis une requête SQL "INSERT INTO"


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Export Excel vers Access à l'aide de VBA

 

Sujets relatifs
[VBA] liste deroulante dans ComboBox : comment creer liste ??Encore une question sur la pagination dans une feuille Excel
Problème Libraires VBA Accessaide batch
VBA et excel : suppression de lignes correspondantesErreur de compilation VBA Access
Redirection d'un domaine vers un sous dossier d'un autre domaine 
Plus de sujets relatifs à : Export Excel vers Access à l'aide de VBA


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR