Bonjour à tous


Dans un formulaire Access, j'ai créé un bouton permettant de transférer les données de mon Excel vers ma table Access. Je suis confronté à deux problèmes.

Problème 1: Je n'arrive pas à importer les données de mon excel en ciblant la bonne feuille. Quoi qu'il arrive ( meme en changeant le numero ou en écrivant le nom de la feuille correspondant : Set wsExcel = wbExcel.Worksheets(2) ) il importe les données sur la feuille où j'ai enregistré le document Excel. Exemple: si j'enregistre l'Excel en étant sur la feuille 5, il va importer les données de la feuille 5 et non la feuille 2.

Problème 2 : une fois que j'ai importé toutes les données dans ma table, dans les processus de l'ordinateur, j'ai l'application Excel encore présente ( EXCEL.EXE *32). A chaque fois que j'importe les données, je suis donc obligé d'ouvrir le gestionnaire des tâches et d'arrêter le processus.

J'espère que j'ai été suffisament clair.

Merci d'avance


Voici mon code :

Code VBA : Sélectionner tout - Visualiser dans une fenêtre à part
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
Private Sub Commande0_Click()
 
 
    Dim appExcel As Excel.Application
    Dim wbExcel As Excel.Workbook
    Dim wsExcel As Excel.Worksheet
 
    Dim cn As ADODB.Connection
    Dim rs As ADODB.Recordset
    Dim r As Long
 
 
    ' Connexion à la base Access
 
    Set cn = New ADODB.Connection
    cn.Open "Provider=Microsoft.ACE.OLEDB.12.0; " & "Data Source=C:xxxxxxxx.accdb"
 
    ' Ouvre un recordset
    Set rs = New ADODB.Recordset
    rs.Open "xxxxx", cn, adOpenKeyset, adLockOptimistic, adCmdTable
 
 
    Set appExcel = CreateObject("Excel.Application")
    Set wbExcel = appExcel.Workbooks.Open("C:xxxxxx")
    Set wsExcel = wbExcel.Worksheets(2)
 
 
 
 
For r = 2 To Selection.SpecialCells(xlCellTypeLastCell).Row
    ' Réalise la boucle jusqu'à la dernière cellule de la plage utilisé
 
        If Range("A" & r) & "" = "" Then
           Exit For 'Sort si la 1ère colonne est vide
       End If
 
 
          With rs
 
            .AddNew ' Crée un nouvel enregistrement
            ' Renseigne les valeurs des champs
 
            .Fields("Référence") = Range("D" & r).Value
                                 etc....
 
 
 
            .Update ' MAJ du nouvel enregistrement
 
          End With
 
 
Next r  'fin de la boucle For
 
 
    rs.Close
    Set rs = Nothing
    cn.Close
    Set cn = Nothing
    'fermeture du fichier et de la connection à la BD
 
wbExcel.Close 'Fermeture du classeur Excel
appExcel.Quit 'Fermeture de l'application Excel
 
 
Set wsExcel = Nothing
Set wbExcel = Nothing
Set appExcel = Nothing
 
 End Sub