Bonjour,

J'essai d'insérer dans une cellule une formule construire entièrement à la main. Je dois la construire à la main car le nombre de ligne de ma feuille general_report peux-être variable. (Elle provient d'un export de

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
Sub writeFormula()
    Dim strFormula As String
    Dim row As Long
    row = lastRow("general_report")
    strFormula = "=COUNTIFS(general_report!$BH$5:$BH$" & row & ";""S0 - Blocking"";general_report!$Q$5:$Q$" & row & ";""*""&DefectBySeverityAndSubSystem!B3&""*"";general_report!$E$5:$E$" & row & ";""<>Canceled"";general_report!$E$5:$E$" & row & ";""<>Resolved"";general_report!$E$5:$E$" & row & ";""<>UAT Resolved"";general_report!$E$5:$E$" & row & ";""<>Closed"")"
       On Error GoTo errorHandler
 
        Debug.Print strFormula
        Debug.Print "=COUNTIFS(general_report!$BH$5:$BH$" & row & ";""S0 - Blocking"";general_report!$Q$5:$Q$" & row & ";""*""&DefectBySeverityAndSubSystem!B3&""*"";general_report!$E$5:$E$" & row & ";""<>Canceled"";general_report!$E$5:$E$" & row & ";""<>Resolved"";general_report!$E$5:$E$" & row & ";""<>UAT Resolved"";general_report!$E$5:$E$" & row & ";""<>Closed"")"
        Worksheets("DefectBySeverityAndSubSystem").Activate
        'range("D11").Value = strFormula
        'range("D11").Formula = strFormula
        'range("D11").FormulaR1C1 = strFormula
        'range("D11").Value = "=COUNTIFS(general_report!$BH$5:$BH$" & row & ";""S0 - Blocking"";general_report!$Q$5:$Q$" & row & ";""*""&DefectBySeverityAndSubSystem!B3&""*"";general_report!$E$5:$E$" & row & ";""<>Canceled"";general_report!$E$5:$E$" & row & ";""<>Resolved"";general_report!$E$5:$E$" & row & ";""<>UAT Resolved"";general_report!$E$5:$E$" & row & ";""<>Closed"")"
        'range("D11").Formula = "=COUNTIFS(general_report!$BH$5:$BH$" & row & ";""S0 - Blocking"";general_report!$Q$5:$Q$" & row & ";""*""&DefectBySeverityAndSubSystem!B3&""*"";general_report!$E$5:$E$" & row & ";""<>Canceled"";general_report!$E$5:$E$" & row & ";""<>Resolved"";general_report!$E$5:$E$" & row & ";""<>UAT Resolved"";general_report!$E$5:$E$" & row & ";""<>Closed"")"
        'range("D11").FormulaR1C1 = "=COUNTIFS(general_report!$BH$5:$BH$" & row & ";""S0 - Blocking"";general_report!$Q$5:$Q$" & row & ";""*""&DefectBySeverityAndSubSystem!B3&""*"";general_report!$E$5:$E$" & row & ";""<>Canceled"";general_report!$E$5:$E$" & row & ";""<>Resolved"";general_report!$E$5:$E$" & row & ";""<>UAT Resolved"";general_report!$E$5:$E$" & row & ";""<>Closed"")"
        'ActiveWorkbook.Names.Add Name:="myFormula", RefersToR1C1:= _
        '   "=COUNTIFS(general_report!$BH$5:$BH$" & row & ";""S0 - Blocking"";general_report!$Q$5:$Q$" & row & ";""*""&DefectBySeverityAndSubSystem!B3&""*"";general_report!$E$5:$E$" & row & ";""<>Canceled"";general_report!$E$5:$E$" & row & ";""<>Resolved"";general_report!$E$5:$E$" & row & ";""<>UAT Resolved"";general_report!$E$5:$E$" & row & ";""<>Closed"")"
        '   ActiveWorkbook.Names("myFormula").Comment = ""
errorHandler:
    MsgBox Err.Number & vbLf & Err.Description
 
End Sub
 
Function lastRow(nameSheet As String) As Long
    Dim sht As Worksheet
 
    Set sht = ThisWorkbook.Worksheets(nameSheet)
 
    lastRow = sht.Cells.Find(What:="*", After:=[A1], _
                            SearchOrder:=xlByRows, _
                            SearchDirection:=xlPrevious).row
 
End Function
J'ai une erreur 1004.

Quand je prends la formule écrite dans la fenêtre "Immediate" et que je la copie/colle dans une cellule elle marche parfaitement bien.

J'ai essayé plusieurs choses, (en commentaire) notament de créer à la volé une formule pour ensuite l'affecter à une cellule (le code en commentaire) mais là aussi en vain.

Ma formule serait-elle trop compliquée pour être insérer en vba ?

Merci pour votre aide.

Shiyatsu.