Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/04/2011, 11h20   #1
Futur Membre du Club
 
Inscription : avril 2009
Messages : 68
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 68
Points : 15
Points : 15
Par défaut Copier Cellules excel et coller par ajout dans une table access

Bonjour,

je souhaite créer du code VBA sous access afin de copier une plage de cellule d'un fichier excel et le coller par ajout dans une table prédéfinit sous access.

manuellement cela marche mais vu que c'est un traitement quotien je souhaite l'automatiser pour cela j'ai commencé par ce code mais il me manque des choses que je n'arrive pas à les faires

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
Private Sub Commande21_Click()
On Error GoTo Err_Commande21_Click
 
Dim MaBase As DAO.Database
Dim Matable As DAO.Recordset
 
Call OpenFile("S:\")
CheminFile = Dialogue.lpstrFile
 
'Défini le nom de votre fichier Excel
MonFichier = Dir(CheminFile) '"nomdevotrefichier.xls"
 
'Ouvre l'application Excel
Set MonXL = CreateObject("Excel.Application") 'Ceci initialise la
Set MaBase = CurrentDb()
Set Matable = MaBase.OpenRecordset("tbl_Transmis")
 
'Ouvre MonFichier
MonXL.Workbooks.Open FileName:=CheminFile  
Matable![T3SE- identabonne] = MonXL.Range("B3:B194").Value
Exit_Commande21_Click:
Exit Sub
 
Err_Commande21_Click:
MsgBox Err.Description
Resume Exit_Commande21_Click
 
End Sub
je veux que se code me permet de copier les cellules B3:F & fin du fichier et les coller par ajout dans la table Tbl_transmis

merci d'avance
ninikosim est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/04/2011, 11h39   #2
Futur Membre du Club
 
Thomas M
Inscription : février 2011
Messages : 38
Détails du profil
Informations personnelles :
Nom : Thomas M

Informations forums :
Inscription : février 2011
Messages : 38
Points : 19
Points : 19
Voici une proposition de code, à adapter:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
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(cheminVersTonFichier)
Set oWSht = oWkb.Worksheets(1) 'ouvre le premier onglet
 
'Désactive les messages lors de l'ajout
DoCmd.SetWarnings False
 
'Cherche la dernière ligne de la colonne B
Dim derLigne As Long
derLigne = oWSht.Range("B65536").End(xlUp).Row
 
Dim i As Integer
for i=3 to derLigne
     'Penser à retirer les simples guillemets ' ' s'il s'agit d'un Entier à insérer :
     DoCmd.RunSQL "INSERT INTO tbl_Transmis(T3SE- identabonne) VALUES('" & oWSht.Cells(2,i).Value & "')"
next i
 
DoCmd.SetWarnings True
oWkb.Close savechanges:=False
oApp.Quit
Set oApp = Nothing
Set oWkb = Nothing
Set oWSht = Nothing
La fonction ci dessus effectue une boucle de 3 à derLigne et insert dans ta table la valeur de la deuxième colonne, ième ligne, à chaque itération.
thomas.m est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/04/2011, 15h50   #3
Futur Membre du Club
 
Inscription : avril 2009
Messages : 68
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 68
Points : 15
Points : 15
salut,

j'ai tester mais au niveau des déclaration il me renvoi une erreur:
Citation:
Type défini par l'utilisateur non définit
je pense qu'il faut que j'active la reference
Pourriez vous me dire c'est quoi le nom de la réference sous acces pour utiliser excel.
ninikosim est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/04/2011, 11h00   #4
Futur Membre du Club
 
Inscription : avril 2009
Messages : 68
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 68
Points : 15
Points : 15
j'ai un souci,j'arrive à recuprer les variables mais au niveau de ma requête elle prend pas en compte les variable déja défini et me demande de les saisir à la main
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
Dim oApp As Excel.Application
Dim oWkb As Excel.Workbook
Dim oWSht As Excel.Worksheet
Dim derLigne As Long
Dim i As Long
Dim CheminFile As String
Dim mavar1 As String, mavar2 As String, mavar3 As Long, mavar4 As String, mavar5 As Date
 
 
Call OpenFile("S:\")
CheminFile = Dialogue.lpstrFile
 
Set oApp = CreateObject("Excel.Application")
Set oWkb = oApp.Workbooks.Open(CheminFile)
Set oWSht = oWkb.Worksheets(1) 'ouvre le premier onglet
 
'Désactive les messages lors de l'ajout
DoCmd.SetWarnings False
 
'Cherche la dernière ligne de la colonne B
derLigne = oWSht.Range("B65536").End(xlUp).Row
 
For i = 3 To derLigne
mavar1 = oWSht.Cells(i, 2).Value
mavar2 = oWSht.Cells(i, 3).Value
mavar2 = SupprimeEsp(mavar2)
mavar3 = oWSht.Cells(i, 4).Value
mavar4 = oWSht.Cells(i, 5).Value
mavar5 = oWSht.Cells(i, 6).Value
DoCmd.RunSQL "INSERT INTO tbl_Rib_Transmis([T3SE- identabonne],[T3SE- argument],[EN-N],[T3SE- code],[T3SE- date creation service])VALUES(mavar1, mavar2,mavar3,mavar4,mavar5)"
 
Next i
 
DoCmd.SetWarnings True
oWkb.Close savechanges:=False
oApp.Quit
Set oApp = Nothing
Set oWkb = Nothing
Set oWSht = Nothing
quelqu'un pourrai me dire pourquoi?
ninikosim est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/04/2011, 13h29   #5
Rédacteur/Modérateur
 
Avatar de User
 
Homme Denis
Développeur informatique
Inscription : août 2004
Messages : 3 205
Détails du profil
Informations personnelles :
Nom : Homme Denis
Âge : 42
Localisation : France

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : août 2004
Messages : 3 205
Points : 5 256
Points : 5 256
Salut,

Il faut mettre les noms des variables à l'extérieur :

Code :
DoCmd.RunSQL "INSERT INTO tbl_Rib_Transmis([T3SE- identabonne],[T3SE- argument],[EN-N],[T3SE- code],[T3SE- date creation service])VALUES('" & mavar1 & "','" & mavar2 & "','" & mavar3 & "','" & mavar4 & "',#" & Format$(mavar5, "mm/dd/yyyy") &"#)"

A+
__________________
Merci de ne pas poster sur mon profil pour des problèmes techniques. Pour celà vous pouvez utiliser le forum ou m'envoyer un mp.

Bon développement !


Mes tutoriels et contributions sur ma page perso:
Ma page personnelle
User est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h18.


 
 
 
 
Partenaires

Hébergement Web