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

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
Pouvez vous m'aider?

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:

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
Mais je n'arrive pas à utiliser Range en automation.

Pouvez vous m'aider?

merci