Bonjour,

Le problème est dans le titre, comment faire ?
dim SousProcédure as quoi?
call Procédure(sql as string , ... , SouProcédure) ?
Si c'est possible, dans mon cas je ne sais pas trop comment écrire ce qui est pour l'instant en gras.

Pour illustrer avec mon cas, voilà ce que j'arrive à faire :
J'ai un formulaire avec tableau en sous-form, et un objet classeur excel avec feuille de données et graphe XY nuage de points, qui au lancement du formulaire doit recevoir les labels de la feuille de données et d'autres mises en form.

Le processus est :
1. Activation du formulaire - appel de la procédure envoi de données
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
Private Sub Form_Current()
Call redimen
Dim oWb As Excel.Workbook, sql As String, oFeuille As Worksheet, oGraph As Chart, Procédure As Quoi?
Set oWb = Forms.RA_Positionnement_Cargo.RA_Positionnement_Cargo_graphe.Object
sql = "SELECT Distinct Avion, [Volume Soute], [Charge maximale] from RA_Positionnement_Cargo WHERE (InStr(1, SelectionAvions(), Avion) > 0)"
Set Procedure = RA_Positionnement_Cargo_Etiq(oWb, oFeuille, oGraph)

Call ExporteRequeteToObjetExcel(oWb, oFeuille, oGraph, sql, Procedure)
end sub
2. procédure qui va envoyer les données de ma requete sur la feuil1 du classeur excel. A la fin, cette procédure appelle la procédure qui met en forme le graphique
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
Sub ExporteRequeteToObjetExcel(oWb As Excel.Workbook, oFeuille As Worksheet, oGraph As Chart, sql As String, Procedure As ?)
    Set oFeuille = oWb.Worksheets(1)
    Set oGraph = oWb.Charts(1)

    Dim qdf As QueryDef
    Dim rst As Recordset
    Dim fld As Field
    Dim i As Integer

     Set rst = CurrentDb.OpenRecordset(sql, dbOpenDynaset)

    ' copie les en-têtes
    i = 1
    For Each fld In rst.Fields
        oFeuille.Cells(1, i).Value = fld.Name
        i = i + 1
    Next fld

    ' copie le contenu du recordset
    oFeuille.Cells(2, 1).CopyFromRecordset rst

    rst.Close

'Call RA_Positionnement_Cargo_Etiq(oWb, oFeuille, oGraph) ' en gros ça marche avec cette ligne
Call Procedure(oWb, oFeuille, oGraph)

...=nothing
end sub
3.mise en forme du graphique
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
Public Sub RA_Positionnement_Cargo_Etiq(oWb As Excel.Workbook, oFeuille As Worksheet, oGraph As Chart)
 
....
Tout marche en ne paramétrant pas tout au maximum comme ici,mais comme j'ai plusieurs formulaires avec leurs graphes qui marchent de la même façon, je veux que l'étape 1 et à la limite l'étape 3 soient à à peine réécrire pour chaque formulaire, mais pas l'étape 2 ExportRequeteToObjetExcel.
C'est un peu bordélique je sais.

Sinon, j'ai déjà poser des sujets, sans réponse, mais que j'ai résolu pour des graphiques, je mettrai les résolutions en septembre (avis aux modérateurs)