Insérer dans Access une feuille Excel

Maxpuff

XLDnaute Junior
Bonjour,

J'ai une feuille Excel avec la structure suivante:

Date Type Client
20/02/2010 2 18
21/02/2010 1 20
....

Je veux copier le contenu de cette feuille dans une table access qui a la même structure (cette table n'est pas vide):
Date Type Client


Quel code utiliser pour pouvoir copier tout le contenu d'un coup?
Ou ligne par ligne si c'est l'unique solution?
Les actions sont effectuées à partir d'access.

Merci
 

Maxpuff

XLDnaute Junior
Re : Insérer dans Access une feuille Excel

Si possible le faire en code VBA, car oui c'est dans le but ensuite que ce soit traiter automatiquement.

L'idée serait de cliquer sur un bouton, de sélectionner la feuille Excel à ajouter et ensuite ajouter le contenu de la feuille dans la table existante.

Le bout de code qu'il me manque est donc la partie sur la lecture est l'importation de cette feuille dans la table.
 
C

Compte Supprimé 979

Guest
Re : Insérer dans Access une feuille Excel

Re,

Voici un code "basic" que tu peux utiliser ;)
Code:
Sub LierFichier()
  Dim fd As FileDialog, VPathFic As String
  Dim StrSQL1 As String, StrSQL2 As String
  Dim NomTbl As String
  
  On Error GoTo Code_Err
  ' Créer un objet boite de dialogue d'ouverture de fichier
  Set fd = Application.FileDialog(msoFileDialogOpen)
  Dim vrtSelectedItem As Variant
  ' Ouvrir l'objet pour le choix du fichier
  With fd
    If .Show = -1 Then
      VPathFic = .SelectedItems(1)
    Else
      Exit Sub
    End If
  End With
  Set fd = Nothing
  ' Lier la feuille Excel à la Bdd Access
  DoCmd.TransferSpreadsheet acLink, 8, "Feuil_Excel", VPathFic, True, ""
  ' Importer les données
  NomTbl = "Table1" ' Nom de la table dans la Bdd Access
  StrSQL1 = "INSERT INTO " & NomTbl & "( [Date], Type, Client )"
  StrSQL2 = "SELECT * FROM Feuil_Excel;"
  DoCmd.RunSQL (StrSQL1 & StrSQL2)
  ' Supprimer le feuille liée
  DoCmd.DeleteObject acTable, "Feuil_Excel"
  
Code_Exit:
  Exit Sub
Code_Err:
  MsgBox Error$
  Resume Code_Exit
End Sub

1) le code te demande le fichier Excel à lier
2) Créé une liaison temporaire avec celle-ci
3) Exécute une requête ajout pour ajouter les données à la table dont le nom est indiqué dans la variable "NomTbl"
4) Supprime le fichier Excel Lié

Voili, voilà :p
 

Maxpuff

XLDnaute Junior
Re : Insérer dans Access une feuille Excel

Ton explication semble correspondre à mon besoin par contre j'ai un petit soucis car en fait le classeur vers lequel je pointe l'information n'est pas enregistré. En fait pour être plus précis mon code sélectionne un fichier texte, celui-ci est copié dans un nouveau classeur et je veux traiter les informations à partir de là.

Donc j'ai dans le code :
wbNewWB.Name = "Classeur1"
wbNewWB.Path = ""

Comment faire pour remédier à ce problème sans avoir besoin d'enregistrer le classeur puis le supprimer...
 
C

Compte Supprimé 979

Guest
Re : Insérer dans Access une feuille Excel

Re,

Sous access tu peux lier un fichier texte mais je ne sais pas comment faire en VBA

Sinon il est simple de supprimer le fichier Excel après import des données

A+
 

Maxpuff

XLDnaute Junior
Re : Insérer dans Access une feuille Excel

Non, je ne peux pas directement lier le fichier texte car je dois d'abord le traiter sous Excel, d'où cette manipulation.

Aurais-tu une idée de comment enregistrer puis supprimer le fichier de manière transparente? Sans avoir d'erreur si le chemin n'est pas disponible (si par exemple je l'enregistre sous c:\temp et que sur un ordi c:\ n'est pas accessible...)
 

Maxpuff

XLDnaute Junior
Re : Insérer dans Access une feuille Excel

En fait j'importe des données sous Excel, je les traite (en fait il y a plus de champs que dans mon exemple, j'ai voulu faire simple pour ne pas surcharger mon explication), et j'ai besoin d'Excel pour les traiter (formules...)

Deuxième point, "de manière transparente", je veux savoir par là si il y a une méthode qui permet d'avoir le moins d'erreur possible, si on prend par exemple le dossier utilisateur, qui à priori existe à tous les coups...
 
C

Compte Supprimé 979

Guest
Re : Insérer dans Access une feuille Excel

Pour eviter les erreurs et/ou les tester, tu peux utiliser
Code:
On Error Resume Next  ' En début de Sub
 ...
  If Err.Number <> 0 Then
    MsgBox "Une erreur c'est produite"
    On Error Goto 0
    Exit Sub
  End If
 ...
  On Error GoTo 0  ' En fin de Sub

A+
 

Discussions similaires

Statistiques des forums

Discussions
312 298
Messages
2 086 979
Membres
103 417
dernier inscrit
abaabdelghani