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 : Sélectionner tout - Visualiser dans une fenêtre à part
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.
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).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 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.
Partager