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
Partager