VBA - Aide sur syntaxe macro

Bonjour à tous,

J'essaye de rédiger une macro mais je ne trouve pas l'erreur.

Pourriez-vous jeter un coup d’œil ?

Je souhaite calculer le délai de traitement de ces dossiers, en ressortant ceux qui ont X jours en fonction du groupement.

Sur Excel, la formule suivante semble fonctionner :

=SI( A2 = "GROUPEMENT MACIF";SI( C2 - B2 > 60;""; C2 - B2);SI( A2 = "GROUPEMENT MAIF";SI(C2 -  B2 > 200;" "; C2 - B2);SI( A2 = "GROUPEMENT MATMUT";SI(C2 - B2 > 100;""; C2 - B2);C2 - B2)))

Je souhaite maintenant écrire par macro cette formule dans la cellule D2 :

Sub Delai(ColB As String, ColC As String, ColA As String, LettreColAjout As String)

Range(LettreColAjout & "1").Value = "DELAI RE"
Range(LettreColAjout & "2").Value = "=SI(" & ColA & "2 = ""GROUPEMENT MACIF"";" & _
                             "SI(" & ColC & "2 - " & ColB & "2 > Objectifs!B2;"""";" & ColC & "2 - " & ColB & "2);" & _
                             "SI(" & ColA & "2 = ""GROUPEMENT MAIF"";" & _
                                     "SI(" & ColC & "2 - " & ColB & "2 > Objectifs!C2;"""";" & ColC & "2 - " & ColB & "2);" & _
                                     "SI(" & ColA & "2 = ""GROUPEMENT MATMUT"";" & _
                                            "SI(" & ColC & "2 - " & ColB & "2 > Objectifs!D2;"""";" & ColC & "2 - " & ColB & "2);" & _
                                             ColC & "2 - " & ColB & "2)" & _
                                        ")" & _
                      ")"
End Sub
Sub test()
Delai "B", "C", "A", "D"
End Sub

Résultat : "Erreur définie par l'application ou par l'objet"

Quelqu'un pourrait me dire où se trouve mon / mes erreurs ?

Merci d'avance.

(Je souhaite juste écrire la formule dans une cellule et la dupliquer manuellement. J'avais essayé par macro de traiter toute la colonne,

mais au fur et à mesure des essais, le traitement des macro est passé de 1 secondes à 2h30... Je vous ajoute la macro initiale qui est trop lente :

Sub Delai(LettreColRefExp As String, LettreCollDateMission As String, LettreCollDateEnvoiTel As String, LettreCollNomGroupComp As String, NbJoursMax As Integer, LettreColAjout As String)
    Dim i, n As Integer
    Dim m, e As Date
    Dim v As Double
    Dim g As String

    Range(LettreColAjout & "1").Value = "DELAI DOSSIER"

    For i = 2 To Range(LettreColRefExp & Rows.Count).End(xlUp).Row
        m = Range(LettreCollDateMission & i).Value
        e = Range(LettreCollDateEnvoiTel & i).Value
        v = DateDiff("d", m, e)
        g = Range(LettreCollNomGroupComp & i).Value
        n = NbJoursMax

        If v < 0 Then
            Range(LettreColAjout & i) = ""
        Else
            If v < n Then
                Range(LettreColAjout & i) = v
            Else
                If g Like "*MACIF*" Then
                   Range(LettreColAjout & i) = ""
                Else: Range(LettreColAjout & i) = v
                End If
            End If
        End If
    Next
End Sub

)

Bonjour,

Formule :

=SI(C2-B2>RECHERCHE(A2;{"GROUPEMENT MACIF";"GROUPEMENT MAIF";"GROUPEMENT MATMUT"};{60;200;100});"";C2-B2)

NB- Eviter d'incorporer des espaces dans les formules (hors valeurs chaînes en comprenant).

Macro :

Sub Délai()
    Dim TD(), d, gr$, dm%, n%, i%
    With ActiveSheet
        n = .Cells(.Rows.Count, 1).End(xlUp).Row
        ReDim TD(1 To n, 1 To 1): TD(1, 1) = "Délai"
        For i = 2 To n
            gr = Replace(.Cells(i, 1), "GROUPEMENT ", "")
            Select Case gr
                Case "MACIF": dm = 60
                Case "MAIF": dm = 200
                Case "MATMUT": dm = 100
                Case Else: dm = 999
            End Select
            On Error Resume Next
            d = DateDiff("d", .Cells(i, 2), .Cells(i, 3))
            If Err.Number = 0 Then
                If d <= dm Then TD(i, 1) = d
            Else
                Err.Clear
            End If
            On Error GoTo 0
        Next i
        .Range("D1").Resize(n).Value = TD
    End With
End Sub

Cordialement.

Merci beaucoup pour ton aide et tes conseils, je tacherai d'éviter les espaces.

Bonne journée

Rechercher des sujets similaires à "vba aide syntaxe macro"