Bonjour,

Je souhaite importer des données d'un onglet excel dans access, pour ce faire je commence par nommer la plage de donnée excel via un code VBA dans access. Probleme: lorsque le nom de l'onglet comporte des espaces la macro plante.. si je change le nom de l'onglet à la main et relance mon code, ca marche! Comment éviter cette erreur sans avoir à préalablement renommer mon onglet?

Code : 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
 
Function NameRange_xls(range_name As String, filePath As String, wsSource As String) As Boolean
'------------------------------------------------------
'Déclarations
'------------------------------------------------------
Dim xlApp       As Excel.Application
Dim xlSheet     As Excel.Worksheet
Dim xlBook      As Excel.Workbook
Dim lastLine    As Long
Dim lastField   As Long
Dim firstLine   As Long
 
Dim rangeToName As range
'------------------------------------------------------
'initialiser les variables et ouvrir le fichier excel
'------------------------------------------------------
Set xlApp = CreateObject("Excel.Application")
Set xlBook = xlApp.Workbooks.Open(filePath)
Set xlSheet = xlBook.sheets(wsSource)
On Error GoTo NameRange_xls_Err
 
'------------------------------------------------------
'repérer la zone de données et la nommer
'------------------------------------------------------
xlSheet.Select
xlBook.sheets(wsSource).Unprotect ' s'assurer que l'onglet n'est pas protéger pr permettre de nommer le range
xlSheet.Select
Dim protection As Boolean
protection = xlSheet.ProtectionMode
 
lastLine = cells(rows.Count, 1).End(xlUp).Row
lastField = cells(lastLine, 1).End(xlToRight).Column
firstLine = cells(lastLine, 1).End(xlUp).Row
Set rangeToName = range(cells(firstLine, 1), cells(lastLine, lastField))
rangeToName.Name = range_name
'------------------------------------------------------
'Fermeture du fichier excel + libération de la mémoire
'------------------------------------------------------
NameRange_xls_Exit:
    xlBook.Save ' sauver précédent
    xlBook.Close (True)
    xlApp.Quit
 
    Set xlSheet = Nothing
    Set xlBook = Nothing
    Set xlApp = Nothing
    NameRange_xls = True
    Exit Function
 
NameRange_xls_Err:
    Resume NameRange_xls_Exit
 
End Function