Bonjour,
j'ai fait une ListBox de tri sous Access que je souhaite importer sous cellules Excel.
A partir de là, j'aimerai faire un tri alphabétique sous excel de ce que je viens d'importer, j'ai donc créer la macro sous excel et j'ai voulu la lancer sous excel à partir d'access, mais j'ai l'erreur suivante:
Erreur d'execution 1004:
Impossible de trouver la Macro
en utilisant: xlApp.Run ("Feuil2.CommandButton1_Click")
La macro se lançait au début, mais depuis que j'ouvre 2 classeur et 3 feuilles Excel à partir d'Access, ça ne marche plus.
Comment choisir sur quelle feuille et dans quel classeur lancer la Macro?
Voici mon code actuel
Pouvez vous m'aider?
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74 Public Sub Copie() Dim xlApp As Excel.Application Dim xlSheet11 As Excel.Worksheet Dim xlSheet12 As Excel.Worksheet Dim xlSheet21 As Excel.Worksheet Dim xlBook1 As Excel.Workbook Dim xlBook2 As Excel.Workbook Dim i As Long, j As Long Dim t0 As Long, t1 As Long t0 = Timer Dim rec As Recordset Set rec = CurrentDb.OpenRecordset("Ouverture", dbOpenSnapshot) 'Initialisations Set xlApp = CreateObject("Excel.Application") xlApp.Visible = True 'Classeur 1 Set xlBook1 = xlApp.Workbooks.Open(CurrentProject.Path & "\Bin Packing multiplier (version 1).xls") 'Classeur 2 Set xlBook2 = xlApp.Workbooks.Add 'Feuil 2 Classeur1 Set xlSheet12 = xlBook1.Sheets(2) 'Copie de la ListBox sous Excel For i = 0 To Form_FormulairePrincipal.ListBox0.ListCount - 1 For j = 0 To 4 xlSheet12.Cells(4, 4).Offset(i, j) = Form_FormulairePrincipal.ListBox0.Column(j, i) Next Next 'Macro de tri alphabétique xlApp.Run ("Feuil2.CommandButton1_Click") 'Feuil 1 Classeur 1 Set xlSheet11 = xlBook1.Sheets(1) xlSheet11.Cells(4, 1) = 1198 xlApp.Run ("Feuil1.CommandButton1_Click") 'Ajouter une feuille de calcul Set xlSheet21 = xlBook2.Worksheets.Add xlSheet21.Name = "Essai" xlSheet11.Copy xlSheet21.Paste 'code de fermeture et libération des objets xlBook1.Close (False) xlBook2.Close (True) xlApp.Quit rec.Close Set rec = Nothing Set xlSheet11 = Nothing Set xlSheet12 = Nothing Set xlSheet21 = Nothing Set xlBook1 = Nothing Set xlBook2 = Nothing Set xlApp = Nothing t1 = Timer Debug.Print i & " enregistrements", Format(t1 - t0, "0") & " secondes" End Sub
Merci
J'ai également essayé de mettre la macro en automation sous access au lieu d'excel,mais ça n'a pas marché non plus.
Code sous Access:
Mais je n'arrive pas à utiliser Range en automation.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 'Sélection de la plage à trier xlSheet12.Range("A1:C7").Select 'Lancement du tri, basé sur les données de la colonne A en ordre croissant Selection.Sort Key1:=xlSheet12.Range("A1"), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _ DataOption1:=xlSortNormal
Pouvez vous m'aider?
merci
Partager