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
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 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
3.mise en forme du 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
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.
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) ....
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)
Partager