1 pièce(s) jointe(s)
Appel de macro VBA via Formula
Bonjour à tous,
Je me tourne vers vous car je rencontre des difficultés pour utiliser la formule "Formula".
Voici le contexte, j'utilise une macro que j'appelle depuis chaque cellule de mon fichier Excel afin de simuler Project sous Excel. Ci dessous l'une de ces formules. Au passage si vous voyez une façon de l'optimiser je suis preneur.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
Function XLSchedule_Start2Start(refdate As Single, duration As Integer, offset As Integer, DateRange As Range, MotherTask As Range)
Dim idx_mother As Integer '
'searching idx for first start of MotherTask
idx_mother = 1
Do
idx_mother = idx_mother + 1
Loop Until MotherTask.Cells(idx_mother) > 0
XLSchedule_Start2Start = 0
If ((refdate >= DateRange.Cells(idx_mother) + offset) And (refdate < DateRange.Cells(idx_mother) + offset + duration)) Then
XLSchedule_Start2Start = 1
End If
End Function |
Afin de faciliter l'utilisation de mon fichier, je souhaite pouvoir réaliser le remplissage de certaines cellules du fichier via une macro. En première approche, il me semble que la fonction Formula est la mieux indiquée mais le code ci dessous me retourne une Erreur 1004.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
|
K = ActiveCell.Address
Li = Range(K).Row
For C = 9 To 88
If C <> 35 Then
Adr = ThisWorkbook.Worksheets("Projet WRX18+").Cells(Range(K).Row, C).Address
Colact = Range(Adr).Column
Colact = Split(Columns(Colact).Address(ColumnAbsolute:=False), ":")(1)
Formulee = "=XLSchedule_Start2Start(" & Colact & "$1;$D$" & Li & ";$E$" & Li & ";$I$1:$CI$1;$I$" & lignecible & ":$CI$" & lignecible & ")"
ThisWorkbook.Worksheets("Projet WRX18+").Cells(Range(K).Row, C).Formula = Formulee
End If
Next |
Je me suis assuré que Formulee remonte bien la formule que je souhaite indiquer dans la formule à savoir l'image ci dessous la cible étant : =XLSchedule_Start2Start(I$1;$D$29;$E$29;$I$1:$CI$1;$I$15:$CI$15).
Pièce jointe 393535
Je dois avouer m'arracher les cheveux sur ce coup. Je ne vois pas où se trouve mon erreur. Sachant que lorsque je modifie ma formule barbare par un bête "=2*2" ça fonctionne très bien.
N'hésitez pas si je n'ai pas été clair.
Merci de votre aide.