Importer des données de plusieurs fichiers EXCEL vers ACCESS

Importer des données de plusieurs fichiers EXCEL vers ACCESS - VB/VBA/VBS - Programmation

Marsh Posté le 10-02-2009 à 14:48:32    

Bonjour à tous,
 
Je vais tenter de vous expliquer brievement mon probleme:
J'ai créé 3 tables ACCESS dans lesquelles je veux rapatrier automatiquement les données de mes tables excel.
 
Mes tables ACCESS sont: prodution globale, production par onduleur 1 à 8, production par onduleur 9 à 16 et production de tous les onduleurs.
 
Deux appareils me renvoient des données journalieres (donc deux dossiers à aller parcourir) et sur ces fichiers excel, je veux etre capable de selectionner les lignes et colonnes à rapatrier sur mes tablmes ACCESS. De plus, deux colonnes sont crées dans ACCESS: la premiere m'indique l'appareil qui a renvoyé le resultat et le second une colonne avec la date ( à aller cherche parmi le titre du doc excel).
 
Après de nombreuses recherches sur le net, j'ai trouvé un début de code que j'ai commencé à programmer.
 
 
Si qqn qi a un peu de temps ici pouvait regardait et tenter de m'aider car c'est un travail d'entreprise!
 
Par avance merci à celui qui pourra me venir en aide car les aides sont assez limitées pour un tel problème!!
 
 
 
Private Sub Commande1_Click()
'Ici l'importation se déclenche en cliquant sur le bouton "Commande1"
'mais on peut aussi mettre ce code à l'ouverture d'un formulaire
Dim oApp As Excel.Application
Dim oWkb As Excel.Workbook
Dim oWSht As Excel.Worksheet
 
Set oApp = CreateObject("excel.application" )
Set oWkb = oApp.Workbooks.Open("C:\Users\toshiba\Desktop\ENR1\1_EXCEL_DD_20090127" ) 'mettez ici le chemin vers votre fichier Excel
Set oWSht = oWkb.Worksheets("1_EXCEL_DD_20090" ) 'mettez ici le nom de la feuille qui contient les données à importer
 
'première ligne ou commence l'import
i = 289
 
'pour éviter les messages lors de l'ajout des enregistrements
DoCmd.SetWarnings False
 
'on arrête l'importation lorsque le programme rencontre une case
'vide :
While oWSht.Range("B" & 2517).Value <> "" '(où B représente la colonne et 2517 la ligne)
 
'condition de remplissage de la table => eviter les doublons
'si l'enregistrement existe déjà dans la table destination,
'on passe à la ligne suivante sans l'importer
'If DCount("*", "[Prod_globale]", "[nom_du_champ_destination_qui_ne_doit_pas_avoir_de_doublons] LIKE '" & oWSht.Cells(i, 9) & "'" ) = 0 Then
'le numéro 9 correspond au numéro de la colonne source, tel que : A=1, B=2, C=3 ...
 
'requète SQL (avec en paramètre la ligne i et le numéro de la colonne comme précisé au-dessus)
cSQL = "insert into [Prod_globale] ( [Energrid], [Jour],[Heure],[Pprod],[Pcons],[Ppc],[Pinj],[Pabs],[Pc1],[Pc2],[Pc3],[Pc4],[Pa],[Psi],[Pso],[Ia],[Isi],[Iso],[Va],[Vs],[T1],[T2],[Gi1],[Gi2],[Ve1],[Ve2],[Di1],[Di2],[TMST],[R1],[R2],[R3],[R4],[R5],[R6],[R7],[R8],[R9],[R10] ) values (" & Chr(34) & oWSht.Cells(i, 13) & Chr(34) & ", " & Chr(34) & oWSht.Cells(i, 11) & Chr(34) & " );"
'ici, on dit dans quel table, il inserera quels champs.
 
'exécute la requète
DoCmd.RunSQL cSQL
   
End If
 
'on incrémente la variable i pour passer à la ligne suivante
i = i + 1
 
Wend
 
'on réactive les messages d'erreurs
DoCmd.SetWarnings True
 
End Sub
End Sub


Message édité par appolonia le 10-02-2009 à 15:11:13
Reply

Marsh Posté le 10-02-2009 à 14:48:32   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed