Meilleur visualisation code VBA

Bonjour,

Je reviens vers vous car je fais actuellement une macro qui va être assez exhaustive. Etant débutant, il se trouve que je commence à m'emmêler de plus en plus les pinceaux. J'aimerai donc savoir s'il existe une option qui permet de me faciliter la tache. Je me rappelle qu'en cours d'algorithmique, le logiciel mettait des lignes verticales afin de ne pas se perdre. Je vous montre ci dessous une sorte d'exemple pour mieux visualiser:

Sub Test
I.......
If x>1 Then

I........I.......y=x+1

I........I....... MsgBox("y")

I........End If

End Sub

Les "I" verts correspondent aux lignes que je recherche afin de ne pas faire des erreurs de compilation bêtement. Je vous met mon code en dessous pour vous montrer pourquoi cela me sera utile. Cela ne représente seulement 1/8 du code final d'où ma demande.

Je vous remercie!

Sub chiffreaffaires()
Dim i As Integer

    For i = 2 To 10001
        If Range("F" & i).Value Like "*Genas*" Then
            If Range("E" & i).Value Like "*LCD*" Then
                If Range("G" & i).Value = 1 Then
                    If Range("M" & i).Value > 0 Then
                        If Range("P" & i).Value = "dimanche" Then
                        Sheets("teliway").Range("AF" & i).Value = Sheets("Grille").Range("L14").Value + Sheets("Grille").Range("B29").Value + Sheets("Grille").Range("B28").Value
                        Else
                        Sheets("teliway").Range("AF" & i).Value = Sheets("Grille").Range("L14").Value + Sheets("Grille").Range("B29").Value
                        End If
                    End If
                    If Range("M" & i).Value > 51 Then
                        If Range("P" & i).Value = "*dimanche*" Then
                        Range("AF" & i).Value = Sheets("Grille").Range("L14").Value + Sheets("Grille").Range("B29").Value + Sheets("Grille").Range("B28").Value + Sheets("Grille").Range("F3").Value
                        Else
                        Range("AF" & i).Value = Sheets("Grille").Range("L14").Value + Sheets("Grille").Range("B29").Value + Sheets("Grille").Range("F3").Value
                        End If
                    End If
                    If Range("M" & i).Value > 101 Then
                        If Range("P" & i).Value = "*dimanche*" Then
                        Range("AF" & i).Value = Sheets("Grille").Range("L14").Value + Sheets("Grille").Range("B29").Value + Sheets("Grille").Range("B28").Value + Sheets("Grille").Range("F4").Value
                        Else
                        Range("AF" & i).Value = Sheets("Grille").Range("L14") + Sheets("Grille").Range("B29") + Sheets("Grille").Range("F4")
                        End If
                    If Range("M" & i).Value > 151 Then
                        If Range("P" & i).Value = "*dimanche*" Then
                        Range("AF" & i).Value = Sheets("Grille").Range("L14").Value + Sheets("Grille").Range("B29").Value + Sheets("Grille").Range("B28").Value + Sheets("Grille").Range("F5").Value
                        Else
                        Range("AF" & i).Value = Sheets("Grille").Range("L14") + Sheets("Grille").Range("B29") + Sheets("Grille").Range("F5")
                        End If
                    End If
                    If Range("M" & i).Value > 201 Then
                        If Range("P" & i).Value = "*dimanche*" Then
                        Range("AF" & i).Value = Sheets("Grille").Range("L14").Value + Sheets("Grille").Range("B29").Value + Sheets("Grille").Range("B28").Value + Sheets("Grille").Range("F6").Value
                        Else
                        Range("AF" & i).Value = Sheets("Grille").Range("L14") + Sheets("Grille").Range("B29") + Sheets("Grille").Range("F6")
                        End If
                    End If
                    If Range("M" & i).Value > 301 Then
                        If Range("P" & i).Value = "*dimanche*" Then
                        Range("AF" & i).Value = Sheets("Grille").Range("L14").Value + Sheets("Grille").Range("B29").Value + Sheets("Grille").Range("B28").Value + Sheets("Grille").Range("F7").Value
                        Else
                        Range("AF" & i).Value = Sheets("Grille").Range("L14") + Sheets("Grille").Range("B29") + Sheets("Grille").Range("F7")
                        End If
                    End If
                    If Range("M" & i).Value > 401 Then
                        If Range("P" & i).Value = "*dimanche*" Then
                        Range("AF" & i).Value = Sheets("Grille").Range("L14").Value + Sheets("Grille").Range("B29").Value + Sheets("Grille").Range("B28").Value + Sheets("Grille").Range("F8").Value
                        Else
                        Range("AF" & i).Value = Sheets("Grille").Range("L14") + Sheets("Grille").Range("B29") + Sheets("Grille").Range("F8")
                        End If
                    End If
                    If Range("M" & i).Value > 501 Then
                        If Range("P" & i).Value = "*dimanche*" Then
                        Range("AF" & i).Value = Sheets("Grille").Range("L14").Value + Sheets("Grille").Range("B29").Value + Sheets("Grille").Range("B28").Value + Sheets("Grille").Range("F9").Value
                        Else
                        Range("AF" & i).Value = Sheets("Grille").Range("L14") + Sheets("Grille").Range("B29") + Sheets("Grille").Range("F9")
                        End If
                    End If
                    If Range("M" & i).Value > 601 Then
                        If Range("P" & i).Value = "*dimanche*" Then
                        Range("AF" & i).Value = Sheets("Grille").Range("L14").Value + Sheets("Grille").Range("B29").Value + Sheets("Grille").Range("B28").Value + Sheets("Grille").Range("F10").Value
                        Else
                        Range("AF" & i).Value = Sheets("Grille").Range("L14") + Sheets("Grille").Range("B29") + Sheets("Grille").Range("F10")
                        End If
                    End If
                    If Range("M" & i).Value > 701 Then
                        If Range("P" & i).Value = "*dimanche*" Then
                        Range("AF" & i).Value = Sheets("Grille").Range("L14").Value + Sheets("Grille").Range("B29").Value + Sheets("Grille").Range("B28").Value + Sheets("Grille").Range("F11").Value
                        Else
                        Range("AF" & i).Value = Sheets("Grille").Range("L14") + Sheets("Grille").Range("B29") + Sheets("Grille").Range("F11")
                        End If
                    End If
                    If Range("M" & i).Value > 801 Then
                        If Range("P" & i).Value = "*dimanche*" Then
                        Range("AF" & i).Value = Sheets("Grille").Range("L14").Value + Sheets("Grille").Range("B29").Value + Sheets("Grille").Range("B28").Value + Sheets("Grille").Range("F12").Value
                        Else
                        Range("AF" & i).Value = Sheets("Grille").Range("L14") + Sheets("Grille").Range("B29") + Sheets("Grille").Range("F12")
                        End If
                    End If
                    If Range("M" & i).Value > 901 Then
                        If Range("P" & i).Value = "*dimanche*" Then
                        Range("AF" & i).Value = Sheets("Grille").Range("L14").Value + Sheets("Grille").Range("B29").Value + Sheets("Grille").Range("B28").Value + Sheets("Grille").Range("F13").Value
                        Else
                        Range("AF" & i).Value = Sheets("Grille").Range("L14") + Sheets("Grille").Range("B29") + Sheets("Grille").Range("F13")
                        End If
                    End If
                    If Range("M" & i).Value > 1001 Then
                        If Range("P" & i).Value = "*dimanche*" Then
                        Range("AF" & i).Value = Sheets("Grille").Range("L14").Value + Sheets("Grille").Range("B29").Value + Sheets("Grille").Range("B28").Value + Sheets("Grille").Range("F14").Value
                        Else
                        Range("AF" & i).Value = Sheets("Grille").Range("L14") + Sheets("Grille").Range("B29") + Sheets("Grille").Range("F14")
                        End If
                    End If
                    If Range("M" & i).Value > 1201 Then
                        If Range("P" & i).Value = "*dimanche*" Then
                        Range("AF" & i).Value = Sheets("Grille").Range("L14").Value + Sheets("Grille").Range("B29").Value + Sheets("Grille").Range("B28").Value + Sheets("Grille").Range("F15").Value
                        Else
                        Range("AF" & i).Value = Sheets("Grille").Range("L14") + Sheets("Grille").Range("B29") + Sheets("Grille").Range("F15")
                        End If
                    End If
                    If Range("M" & i).Value > 1401 Then
                        If Range("P" & i).Value = "*dimanche*" Then
                        Range("AF" & i).Value = Sheets("Grille").Range("L14").Value + Sheets("Grille").Range("B29").Value + Sheets("Grille").Range("B28").Value + Sheets("Grille").Range("F16").Value
                        Else
                        Range("AF" & i).Value = Sheets("Grille").Range("L14") + Sheets("Grille").Range("B29") + Sheets("Grille").Range("F16")
                        End If
                    End If
                    If Range("M" & i).Value > 1601 Then
                        If Range("P" & i).Value = "*dimanche*" Then
                        Range("AF" & i).Value = Sheets("Grille").Range("L14").Value + Sheets("Grille").Range("B29").Value + Sheets("Grille").Range("B28").Value + Sheets("Grille").Range("F17").Value
                        Else
                        Range("AF" & i).Value = Sheets("Grille").Range("L14") + Sheets("Grille").Range("B29") + Sheets("Grille").Range("F17")
                        End If
                    End If
                    If Range("M" & i).Value > 1801 Then
                        If Range("P" & i).Value = "*dimanche*" Then
                        Range("AF" & i).Value = Sheets("Grille").Range("L14").Value + Sheets("Grille").Range("B29").Value + Sheets("Grille").Range("B28").Value + Sheets("Grille").Range("F18").Value
                        Else
                        Range("AF" & i).Value = Sheets("Grille").Range("L14") + Sheets("Grille").Range("B29") + Sheets("Grille").Range("F18")
                        End If
                    End If
                    If Range("M" & i).Value > 2001 Then
                        If Range("P" & i).Value = "*dimanche*" Then
                        Range("AF" & i).Value = Sheets("Grille").Range("L14").Value + Sheets("Grille").Range("B29").Value + Sheets("Grille").Range("B28").Value + Sheets("Grille").Range("F19").Value
                        Else
                        Range("AF" & i).Value = Sheets("Grille").Range("L14") + Sheets("Grille").Range("B29") + Sheets("Grille").Range("F19")
                        End If
                    End If
                    If Range("M" & i).Value > 2501 Then
                        If Range("P" & i).Value = "*dimanche*" Then
                        Range("AF" & i).Value = Sheets("Grille").Range("L14").Value + Sheets("Grille").Range("B29").Value + Sheets("Grille").Range("B28").Value + Sheets("Grille").Range("F20").Value
                        Else
                        Range("AF" & i).Value = Sheets("Grille").Range("L14") + Sheets("Grille").Range("B29") + Sheets("Grille").Range("F20")
                        End If
                    End If
                    If Range("M" & i).Value > 3001 Then
                        If Range("P" & i).Value = "*dimanche*" Then
                        Range("AF" & i).Value = Sheets("Grille").Range("L14").Value + Sheets("Grille").Range("B29").Value + Sheets("Grille").Range("B28").Value + Sheets("Grille").Range("F21").Value
                        Else
                        Range("AF" & i).Value = Sheets("Grille").Range("L14") + Sheets("Grille").Range("B29") + Sheets("Grille").Range("F21")
                        End If
                    End If
                    If Range("M" & i).Value > 4001 Then
                        If Range("P" & i).Value = "*dimanche*" Then
                        Range("AF" & i).Value = Sheets("Grille").Range("L14").Value + Sheets("Grille").Range("B29").Value + Sheets("Grille").Range("B28").Value + Sheets("Grille").Range("F22").Value
                        Else
                        Range("AF" & i).Value = Sheets("Grille").Range("L14") + Sheets("Grille").Range("B29") + Sheets("Grille").Range("F22")
                        End If
                    End If
                    If Range("M" & i).Value > 4501 Then
                        If Range("P" & i).Value = "*dimanche*" Then
                        Range("AF" & i).Value = Sheets("Grille").Range("L14").Value + Sheets("Grille").Range("B29").Value + Sheets("Grille").Range("B28").Value + Sheets("Grille").Range("F23").Value
                        Else
                        Range("AF" & i).Value = Sheets("Grille").Range("L14") + Sheets("Grille").Range("B29") + Sheets("Grille").Range("F23")
                        End If
                    End If
                End If
                If Range("G" & i).Value = 2 Then
                    If Range("M" & i).Value > 0 Then
                        If Range("P" & i).Value = "dimanche" Then
                        Sheets("teliway").Range("AF" & i).Value = Sheets("Grille").Range("L15").Value + Sheets("Grille").Range("B29").Value + Sheets("Grille").Range("B28").Value
                        Else
                        Sheets("teliway").Range("AF" & i).Value = Sheets("Grille").Range("L15").Value + Sheets("Grille").Range("B29").Value
                        End If
                    End If
                    If Range("M" & i).Value > 51 Then
                        If Range("P" & i).Value = "*dimanche*" Then
                        Range("AF" & i).Value = Sheets("Grille").Range("L15").Value + Sheets("Grille").Range("B29").Value + Sheets("Grille").Range("B28").Value + Sheets("Grille").Range("F3").Value
                        Else
                        Range("AF" & i).Value = Sheets("Grille").Range("L15").Value + Sheets("Grille").Range("B29").Value + Sheets("Grille").Range("F3").Value
                        End If
                    End If
                    If Range("M" & i).Value > 101 Then
                        If Range("P" & i).Value = "*dimanche*" Then
                        Range("AF" & i).Value = Sheets("Grille").Range("L15").Value + Sheets("Grille").Range("B29").Value + Sheets("Grille").Range("B28").Value + Sheets("Grille").Range("F4").Value
                        Else
                        Range("AF" & i).Value = Sheets("Grille").Range("L15") + Sheets("Grille").Range("B29") + Sheets("Grille").Range("F4")
                        End If
                    End If
                    If Range("M" & i).Value > 151 Then
                        If Range("P" & i).Value = "*dimanche*" Then
                        Range("AF" & i).Value = Sheets("Grille").Range("L15").Value + Sheets("Grille").Range("B29").Value + Sheets("Grille").Range("B28").Value + Sheets("Grille").Range("F5").Value
                        Else
                        Range("AF" & i).Value = Sheets("Grille").Range("L15") + Sheets("Grille").Range("B29") + Sheets("Grille").Range("F5")
                        End If
                    End If
                    If Range("M" & i).Value > 201 Then
                        If Range("P" & i).Value = "*dimanche*" Then
                        Range("AF" & i).Value = Sheets("Grille").Range("L15").Value + Sheets("Grille").Range("B29").Value + Sheets("Grille").Range("B28").Value + Sheets("Grille").Range("F6").Value
                        Else
                        Range("AF" & i).Value = Sheets("Grille").Range("L15") + Sheets("Grille").Range("B29") + Sheets("Grille").Range("F6")
                        End If
                    End If
                    If Range("M" & i).Value > 301 Then
                        If Range("P" & i).Value = "*dimanche*" Then
                        Range("AF" & i).Value = Sheets("Grille").Range("L15").Value + Sheets("Grille").Range("B29").Value + Sheets("Grille").Range("B28").Value + Sheets("Grille").Range("F7").Value
                        Else
                        Range("AF" & i).Value = Sheets("Grille").Range("L15") + Sheets("Grille").Range("B29") + Sheets("Grille").Range("F7")
                        End If
                    End If
                    If Range("M" & i).Value > 401 Then
                        If Range("P" & i).Value = "*dimanche*" Then
                        Range("AF" & i).Value = Sheets("Grille").Range("L15").Value + Sheets("Grille").Range("B29").Value + Sheets("Grille").Range("B28").Value + Sheets("Grille").Range("F8").Value
                        Else
                        Range("AF" & i).Value = Sheets("Grille").Range("L15") + Sheets("Grille").Range("B29") + Sheets("Grille").Range("F8")
                        End If
                    End If
                    If Range("M" & i).Value > 501 Then
                        If Range("P" & i).Value = "*dimanche*" Then
                        Range("AF" & i).Value = Sheets("Grille").Range("L15").Value + Sheets("Grille").Range("B29").Value + Sheets("Grille").Range("B28").Value + Sheets("Grille").Range("F9").Value
                        Else
                        Range("AF" & i).Value = Sheets("Grille").Range("L15") + Sheets("Grille").Range("B29") + Sheets("Grille").Range("F9")
                        End If
                    End If
                    If Range("M" & i).Value > 601 Then
                        If Range("P" & i).Value = "*dimanche*" Then
                        Range("AF" & i).Value = Sheets("Grille").Range("L15").Value + Sheets("Grille").Range("B29").Value + Sheets("Grille").Range("B28").Value + Sheets("Grille").Range("F10").Value
                        Else
                        Range("AF" & i).Value = Sheets("Grille").Range("L15") + Sheets("Grille").Range("B29") + Sheets("Grille").Range("F10")
                        End If
                    End If
                    If Range("M" & i).Value > 701 Then
                        If Range("P" & i).Value = "*dimanche*" Then
                        Range("AF" & i).Value = Sheets("Grille").Range("L15").Value + Sheets("Grille").Range("B29").Value + Sheets("Grille").Range("B28").Value + Sheets("Grille").Range("F11").Value
                        Else
                        Range("AF" & i).Value = Sheets("Grille").Range("L15") + Sheets("Grille").Range("B29") + Sheets("Grille").Range("F11")
                        End If
                    End If
                    If Range("M" & i).Value > 801 Then
                        If Range("P" & i).Value = "*dimanche*" Then
                        Range("AF" & i).Value = Sheets("Grille").Range("L15").Value + Sheets("Grille").Range("B29").Value + Sheets("Grille").Range("B28").Value + Sheets("Grille").Range("F12").Value
                        Else
                        Range("AF" & i).Value = Sheets("Grille").Range("L15") + Sheets("Grille").Range("B29") + Sheets("Grille").Range("F12")
                        End If
                    End If
                    If Range("M" & i).Value > 901 Then
                        If Range("P" & i).Value = "*dimanche*" Then
                        Range("AF" & i).Value = Sheets("Grille").Range("L15").Value + Sheets("Grille").Range("B29").Value + Sheets("Grille").Range("B28").Value + Sheets("Grille").Range("F13").Value
                        Else
                        Range("AF" & i).Value = Sheets("Grille").Range("L15") + Sheets("Grille").Range("B29") + Sheets("Grille").Range("F13")
                        End If
                    End If
                    If Range("M" & i).Value > 1001 Then
                        If Range("P" & i).Value = "*dimanche*" Then
                        Range("AF" & i).Value = Sheets("Grille").Range("L15").Value + Sheets("Grille").Range("B29").Value + Sheets("Grille").Range("B28").Value + Sheets("Grille").Range("F14").Value
                        Else
                        Range("AF" & i).Value = Sheets("Grille").Range("L15") + Sheets("Grille").Range("B29") + Sheets("Grille").Range("F14")
                        End If
                    End If
                    If Range("M" & i).Value > 1201 Then
                        If Range("P" & i).Value = "*dimanche*" Then
                        Range("AF" & i).Value = Sheets("Grille").Range("L15").Value + Sheets("Grille").Range("B29").Value + Sheets("Grille").Range("B28").Value + Sheets("Grille").Range("F15").Value
                        Else
                        Range("AF" & i).Value = Sheets("Grille").Range("L15") + Sheets("Grille").Range("B29") + Sheets("Grille").Range("F15")
                        End If
                    End If
                    If Range("M" & i).Value > 1401 Then
                        If Range("P" & i).Value = "*dimanche*" Then
                        Range("AF" & i).Value = Sheets("Grille").Range("L15").Value + Sheets("Grille").Range("B29").Value + Sheets("Grille").Range("B28").Value + Sheets("Grille").Range("F16").Value
                        Else
                        Range("AF" & i).Value = Sheets("Grille").Range("L15") + Sheets("Grille").Range("B29") + Sheets("Grille").Range("F16")
                        End If
                    End If
                    If Range("M" & i).Value > 1601 Then
                        If Range("P" & i).Value = "*dimanche*" Then
                        Range("AF" & i).Value = Sheets("Grille").Range("L15").Value + Sheets("Grille").Range("B29").Value + Sheets("Grille").Range("B28").Value + Sheets("Grille").Range("F17").Value
                        Else
                        Range("AF" & i).Value = Sheets("Grille").Range("L15") + Sheets("Grille").Range("B29") + Sheets("Grille").Range("F17")
                        End If
                    End If
                    If Range("M" & i).Value > 1801 Then
                        If Range("P" & i).Value = "*dimanche*" Then
                        Range("AF" & i).Value = Sheets("Grille").Range("L15").Value + Sheets("Grille").Range("B29").Value + Sheets("Grille").Range("B28").Value + Sheets("Grille").Range("F18").Value
                        Else
                        Range("AF" & i).Value = Sheets("Grille").Range("L15") + Sheets("Grille").Range("B29") + Sheets("Grille").Range("F18")
                        End If
                    End If
                    If Range("M" & i).Value > 2001 Then
                        If Range("P" & i).Value = "*dimanche*" Then
                        Range("AF" & i).Value = Sheets("Grille").Range("L15").Value + Sheets("Grille").Range("B29").Value + Sheets("Grille").Range("B28").Value + Sheets("Grille").Range("F19").Value
                        Else
                        Range("AF" & i).Value = Sheets("Grille").Range("L15") + Sheets("Grille").Range("B29") + Sheets("Grille").Range("F19")
                        End If
                    End If
                    If Range("M" & i).Value > 2501 Then
                        If Range("P" & i).Value = "*dimanche*" Then
                        Range("AF" & i).Value = Sheets("Grille").Range("L15").Value + Sheets("Grille").Range("B29").Value + Sheets("Grille").Range("B28").Value + Sheets("Grille").Range("F20").Value
                        Else
                        Range("AF" & i).Value = Sheets("Grille").Range("L15") + Sheets("Grille").Range("B29") + Sheets("Grille").Range("F20")
                        End If
                    End If
                    If Range("M" & i).Value > 3001 Then
                        If Range("P" & i).Value = "*dimanche*" Then
                        Range("AF" & i).Value = Sheets("Grille").Range("L15").Value + Sheets("Grille").Range("B29").Value + Sheets("Grille").Range("B28").Value + Sheets("Grille").Range("F21").Value
                        Else
                        Range("AF" & i).Value = Sheets("Grille").Range("L15") + Sheets("Grille").Range("B29") + Sheets("Grille").Range("F21")
                        End If
                    End If
                    If Range("M" & i).Value > 4001 Then
                        If Range("P" & i).Value = "*dimanche*" Then
                        Range("AF" & i).Value = Sheets("Grille").Range("L15").Value + Sheets("Grille").Range("B29").Value + Sheets("Grille").Range("B28").Value + Sheets("Grille").Range("F22").Value
                        Else
                        Range("AF" & i).Value = Sheets("Grille").Range("L15") + Sheets("Grille").Range("B29") + Sheets("Grille").Range("F22")
                        End If
                    End If
                    If Range("M" & i).Value > 4501 Then
                        If Range("P" & i).Value = "*dimanche*" Then
                        Range("AF" & i).Value = Sheets("Grille").Range("L15").Value + Sheets("Grille").Range("B29").Value + Sheets("Grille").Range("B28").Value + Sheets("Grille").Range("F23").Value
                        Else
                        Range("AF" & i).Value = Sheets("Grille").Range("L15") + Sheets("Grille").Range("B29") + Sheets("Grille").Range("F23")
                        End If
                    End If
                End If
            End If
            If Range("E" & i).Value Like "*CDC*" Then
                If Range("G" & i).Value = 1 Then
                    If Range("M" & i).Value > 0 Then
                        If Range("P" & i).Value = "dimanche" Then
                        Sheets("teliway").Range("AF" & i).Value = Sheets("Grille").Range("L14").Value + Sheets("Grille").Range("B29").Value + Sheets("Grille").Range("B28").Value
                        Else
                        Sheets("teliway").Range("AF" & i).Value = Sheets("Grille").Range("L14").Value + Sheets("Grille").Range("B29").Value
                        End If
                    End If
                    If Range("M" & i).Value > 51 Then
                        If Range("P" & i).Value = "*dimanche*" Then
                        Range("AF" & i).Value = Sheets("Grille").Range("L14").Value + Sheets("Grille").Range("B29").Value + Sheets("Grille").Range("B28").Value + Sheets("Grille").Range("F3").Value
                        Else
                        Range("AF" & i).Value = Sheets("Grille").Range("L14").Value + Sheets("Grille").Range("B29").Value + Sheets("Grille").Range("F3").Value
                        End If
                    End If
                    If Range("M" & i).Value > 101 Then
                        If Range("P" & i).Value = "*dimanche*" Then
                        Range("AF" & i).Value = Sheets("Grille").Range("L14").Value + Sheets("Grille").Range("B29").Value + Sheets("Grille").Range("B28").Value + Sheets("Grille").Range("F4").Value
                        Else
                        Range("AF" & i).Value = Sheets("Grille").Range("L14") + Sheets("Grille").Range("B29") + Sheets("Grille").Range("F4")
                        End If
                    End If
                    If Range("M" & i).Value > 151 Then
                        If Range("P" & i).Value = "*dimanche*" Then
                        Range("AF" & i).Value = Sheets("Grille").Range("L14").Value + Sheets("Grille").Range("B29").Value + Sheets("Grille").Range("B28").Value + Sheets("Grille").Range("F5").Value
                        Else
                        Range("AF" & i).Value = Sheets("Grille").Range("L14") + Sheets("Grille").Range("B29") + Sheets("Grille").Range("F5")
                        End If
                    End If
                    If Range("M" & i).Value > 201 Then
                        If Range("P" & i).Value = "*dimanche*" Then
                        Range("AF" & i).Value = Sheets("Grille").Range("L14").Value + Sheets("Grille").Range("B29").Value + Sheets("Grille").Range("B28").Value + Sheets("Grille").Range("F6").Value
                        Else
                        Range("AF" & i).Value = Sheets("Grille").Range("L14") + Sheets("Grille").Range("B29") + Sheets("Grille").Range("F6")
                        End If
                    End If
                    If Range("M" & i).Value > 301 Then
                        If Range("P" & i).Value = "*dimanche*" Then
                        Range("AF" & i).Value = Sheets("Grille").Range("L14").Value + Sheets("Grille").Range("B29").Value + Sheets("Grille").Range("B28").Value + Sheets("Grille").Range("F7").Value
                        Else
                        Range("AF" & i).Value = Sheets("Grille").Range("L14") + Sheets("Grille").Range("B29") + Sheets("Grille").Range("F7")
                        End If
                    End If
                    If Range("M" & i).Value > 401 Then
                        If Range("P" & i).Value = "*dimanche*" Then
                        Range("AF" & i).Value = Sheets("Grille").Range("L14").Value + Sheets("Grille").Range("B29").Value + Sheets("Grille").Range("B28").Value + Sheets("Grille").Range("F8").Value
                        Else
                        Range("AF" & i).Value = Sheets("Grille").Range("L14") + Sheets("Grille").Range("B29") + Sheets("Grille").Range("F8")
                        End If
                    End If
                    If Range("M" & i).Value > 501 Then
                        If Range("P" & i).Value = "*dimanche*" Then
                        Range("AF" & i).Value = Sheets("Grille").Range("L14").Value + Sheets("Grille").Range("B29").Value + Sheets("Grille").Range("B28").Value + Sheets("Grille").Range("F9").Value
                        Else
                        Range("AF" & i).Value = Sheets("Grille").Range("L14") + Sheets("Grille").Range("B29") + Sheets("Grille").Range("F9")
                        End If
                    End If
                    If Range("M" & i).Value > 601 Then
                        If Range("P" & i).Value = "*dimanche*" Then
                        Range("AF" & i).Value = Sheets("Grille").Range("L14").Value + Sheets("Grille").Range("B29").Value + Sheets("Grille").Range("B28").Value + Sheets("Grille").Range("F10").Value
                        Else
                        Range("AF" & i).Value = Sheets("Grille").Range("L14") + Sheets("Grille").Range("B29") + Sheets("Grille").Range("F10")
                        End If
                    End If
                    If Range("M" & i).Value > 701 Then
                        If Range("P" & i).Value = "*dimanche*" Then
                        Range("AF" & i).Value = Sheets("Grille").Range("L14").Value + Sheets("Grille").Range("B29").Value + Sheets("Grille").Range("B28").Value + Sheets("Grille").Range("F11").Value
                        Else
                        Range("AF" & i).Value = Sheets("Grille").Range("L14") + Sheets("Grille").Range("B29") + Sheets("Grille").Range("F11")
                        End If
                    End If
                    If Range("M" & i).Value > 801 Then
                        If Range("P" & i).Value = "*dimanche*" Then
                        Range("AF" & i).Value = Sheets("Grille").Range("L14").Value + Sheets("Grille").Range("B29").Value + Sheets("Grille").Range("B28").Value + Sheets("Grille").Range("F12").Value
                        Else
                        Range("AF" & i).Value = Sheets("Grille").Range("L14") + Sheets("Grille").Range("B29") + Sheets("Grille").Range("F12")
                        End If
                    End If
                    If Range("M" & i).Value > 901 Then
                        If Range("P" & i).Value = "*dimanche*" Then
                        Range("AF" & i).Value = Sheets("Grille").Range("L14").Value + Sheets("Grille").Range("B29").Value + Sheets("Grille").Range("B28").Value + Sheets("Grille").Range("F13").Value
                        Else
                        Range("AF" & i).Value = Sheets("Grille").Range("L14") + Sheets("Grille").Range("B29") + Sheets("Grille").Range("F13")
                        End If
                    End If
                    If Range("M" & i).Value > 1001 Then
                        If Range("P" & i).Value = "*dimanche*" Then
                        Range("AF" & i).Value = Sheets("Grille").Range("L14").Value + Sheets("Grille").Range("B29").Value + Sheets("Grille").Range("B28").Value + Sheets("Grille").Range("F14").Value
                        Else
                        Range("AF" & i).Value = Sheets("Grille").Range("L14") + Sheets("Grille").Range("B29") + Sheets("Grille").Range("F14")
                        End If
                    End If
                    If Range("M" & i).Value > 1201 Then
                        If Range("P" & i).Value = "*dimanche*" Then
                        Range("AF" & i).Value = Sheets("Grille").Range("L14").Value + Sheets("Grille").Range("B29").Value + Sheets("Grille").Range("B28").Value + Sheets("Grille").Range("F15").Value
                        Else
                        Range("AF" & i).Value = Sheets("Grille").Range("L14") + Sheets("Grille").Range("B29") + Sheets("Grille").Range("F15")
                        End If
                    End If
                    If Range("M" & i).Value > 1401 Then
                        If Range("P" & i).Value = "*dimanche*" Then
                        Range("AF" & i).Value = Sheets("Grille").Range("L14").Value + Sheets("Grille").Range("B29").Value + Sheets("Grille").Range("B28").Value + Sheets("Grille").Range("F16").Value
                        Else
                        Range("AF" & i).Value = Sheets("Grille").Range("L14") + Sheets("Grille").Range("B29") + Sheets("Grille").Range("F16")
                        End If
                    End If
                    If Range("M" & i).Value > 1601 Then
                        If Range("P" & i).Value = "*dimanche*" Then
                        Range("AF" & i).Value = Sheets("Grille").Range("L14").Value + Sheets("Grille").Range("B29").Value + Sheets("Grille").Range("B28").Value + Sheets("Grille").Range("F17").Value
                        Else
                        Range("AF" & i).Value = Sheets("Grille").Range("L14") + Sheets("Grille").Range("B29") + Sheets("Grille").Range("F17")
                        End If
                    End If
                    If Range("M" & i).Value > 1801 Then
                        If Range("P" & i).Value = "*dimanche*" Then
                        Range("AF" & i).Value = Sheets("Grille").Range("L14").Value + Sheets("Grille").Range("B29").Value + Sheets("Grille").Range("B28").Value + Sheets("Grille").Range("F18").Value
                        Else
                        Range("AF" & i).Value = Sheets("Grille").Range("L14") + Sheets("Grille").Range("B29") + Sheets("Grille").Range("F18")
                        End If
                    End If
                    If Range("M" & i).Value > 2001 Then
                        If Range("P" & i).Value = "*dimanche*" Then
                        Range("AF" & i).Value = Sheets("Grille").Range("L14").Value + Sheets("Grille").Range("B29").Value + Sheets("Grille").Range("B28").Value + Sheets("Grille").Range("F19").Value
                        Else
                        Range("AF" & i).Value = Sheets("Grille").Range("L14") + Sheets("Grille").Range("B29") + Sheets("Grille").Range("F19")
                        End If
                    End If
                    If Range("M" & i).Value > 2501 Then
                        If Range("P" & i).Value = "*dimanche*" Then
                        Range("AF" & i).Value = Sheets("Grille").Range("L14").Value + Sheets("Grille").Range("B29").Value + Sheets("Grille").Range("B28").Value + Sheets("Grille").Range("F20").Value
                        Else
                        Range("AF" & i).Value = Sheets("Grille").Range("L14") + Sheets("Grille").Range("B29") + Sheets("Grille").Range("F20")
                        End If
                    End If
                    If Range("M" & i).Value > 3001 Then
                        If Range("P" & i).Value = "*dimanche*" Then
                        Range("AF" & i).Value = Sheets("Grille").Range("L14").Value + Sheets("Grille").Range("B29").Value + Sheets("Grille").Range("B28").Value + Sheets("Grille").Range("F21").Value
                        Else
                        Range("AF" & i).Value = Sheets("Grille").Range("L14") + Sheets("Grille").Range("B29") + Sheets("Grille").Range("F21")
                        End If
                    End If
                    If Range("M" & i).Value > 4001 Then
                        If Range("P" & i).Value = "*dimanche*" Then
                        Range("AF" & i).Value = Sheets("Grille").Range("L14").Value + Sheets("Grille").Range("B29").Value + Sheets("Grille").Range("B28").Value + Sheets("Grille").Range("F22").Value
                        Else
                        Range("AF" & i).Value = Sheets("Grille").Range("L14") + Sheets("Grille").Range("B29") + Sheets("Grille").Range("F22")
                        End If
                    End If
                    If Range("M" & i).Value > 4501 Then
                        If Range("P" & i).Value = "*dimanche*" Then
                        Range("AF" & i).Value = Sheets("Grille").Range("L14").Value + Sheets("Grille").Range("B29").Value + Sheets("Grille").Range("B28").Value + Sheets("Grille").Range("F23").Value
                        Else
                        Range("AF" & i).Value = Sheets("Grille").Range("L14") + Sheets("Grille").Range("B29") + Sheets("Grille").Range("F23")
                        End If
                    End If
                End If
                If Range("G" & i).Value = 2 Then
                    If Range("M" & i).Value > 0 Then
                        If Range("P" & i).Value = "dimanche" Then
                        Sheets("teliway").Range("AF" & i).Value = Sheets("Grille").Range("L17").Value + Sheets("Grille").Range("B29").Value + Sheets("Grille").Range("B28").Value
                        Else
                        Sheets("teliway").Range("AF" & i).Value = Sheets("Grille").Range("L17").Value + Sheets("Grille").Range("B29").Value
                        End If
                    End If
                    If Range("M" & i).Value > 51 Then
                        If Range("P" & i).Value = "*dimanche*" Then
                        Range("AF" & i).Value = Sheets("Grille").Range("L17").Value + Sheets("Grille").Range("B29").Value + Sheets("Grille").Range("B28").Value + Sheets("Grille").Range("F3").Value
                        Else
                        Range("AF" & i).Value = Sheets("Grille").Range("L17").Value + Sheets("Grille").Range("B29").Value + Sheets("Grille").Range("F3").Value
                        End If
                    End If
                    If Range("M" & i).Value > 101 Then
                        If Range("P" & i).Value = "*dimanche*" Then
                        Range("AF" & i).Value = Sheets("Grille").Range("L17").Value + Sheets("Grille").Range("B29").Value + Sheets("Grille").Range("B28").Value + Sheets("Grille").Range("F4").Value
                        Else
                        Range("AF" & i).Value = Sheets("Grille").Range("L17") + Sheets("Grille").Range("B29") + Sheets("Grille").Range("F4")
                        End If

                    If Range("M" & i).Value > 151 Then
                        If Range("P" & i).Value = "*dimanche*" Then
                        Range("AF" & i).Value = Sheets("Grille").Range("L17").Value + Sheets("Grille").Range("B29").Value + Sheets("Grille").Range("B28").Value + Sheets("Grille").Range("F5").Value
                        Else
                        Range("AF" & i).Value = Sheets("Grille").Range("L17") + Sheets("Grille").Range("B29") + Sheets("Grille").Range("F5")
                        End If
                    End If
                    If Range("M" & i).Value > 201 Then
                        If Range("P" & i).Value = "*dimanche*" Then
                        Range("AF" & i).Value = Sheets("Grille").Range("L17").Value + Sheets("Grille").Range("B29").Value + Sheets("Grille").Range("B28").Value + Sheets("Grille").Range("F6").Value
                        Else
                        Range("AF" & i).Value = Sheets("Grille").Range("L17") + Sheets("Grille").Range("B29") + Sheets("Grille").Range("F6")
                        End If
                    End If
                    If Range("M" & i).Value > 301 Then
                        If Range("P" & i).Value = "*dimanche*" Then
                        Range("AF" & i).Value = Sheets("Grille").Range("L17").Value + Sheets("Grille").Range("B29").Value + Sheets("Grille").Range("B28").Value + Sheets("Grille").Range("F7").Value
                        Else
                        Range("AF" & i).Value = Sheets("Grille").Range("L17") + Sheets("Grille").Range("B29") + Sheets("Grille").Range("F7")
                        End If
                    End If
                    If Range("M" & i).Value > 401 Then
                        If Range("P" & i).Value = "*dimanche*" Then
                        Range("AF" & i).Value = Sheets("Grille").Range("L17").Value + Sheets("Grille").Range("B29").Value + Sheets("Grille").Range("B28").Value + Sheets("Grille").Range("F8").Value
                        Else
                        Range("AF" & i).Value = Sheets("Grille").Range("L17") + Sheets("Grille").Range("B29") + Sheets("Grille").Range("F8")
                        End If
                    End If
                    If Range("M" & i).Value > 501 Then
                        If Range("P" & i).Value = "*dimanche*" Then
                        Range("AF" & i).Value = Sheets("Grille").Range("L17").Value + Sheets("Grille").Range("B29").Value + Sheets("Grille").Range("B28").Value + Sheets("Grille").Range("F9").Value
                        Else
                        Range("AF" & i).Value = Sheets("Grille").Range("L17") + Sheets("Grille").Range("B29") + Sheets("Grille").Range("F9")
                        End If
                    End If
                    If Range("M" & i).Value > 601 Then
                        If Range("P" & i).Value = "*dimanche*" Then
                        Range("AF" & i).Value = Sheets("Grille").Range("L17").Value + Sheets("Grille").Range("B29").Value + Sheets("Grille").Range("B28").Value + Sheets("Grille").Range("F10").Value
                        Else
                        Range("AF" & i).Value = Sheets("Grille").Range("L17") + Sheets("Grille").Range("B29") + Sheets("Grille").Range("F10")
                        End If
                    End If
                    If Range("M" & i).Value > 701 Then
                        If Range("P" & i).Value = "*dimanche*" Then
                        Range("AF" & i).Value = Sheets("Grille").Range("L17").Value + Sheets("Grille").Range("B29").Value + Sheets("Grille").Range("B28").Value + Sheets("Grille").Range("F11").Value
                        Else
                        Range("AF" & i).Value = Sheets("Grille").Range("L17") + Sheets("Grille").Range("B29") + Sheets("Grille").Range("F11")
                        End If
                    End If
                    If Range("M" & i).Value > 801 Then
                        If Range("P" & i).Value = "*dimanche*" Then
                        Range("AF" & i).Value = Sheets("Grille").Range("L17").Value + Sheets("Grille").Range("B29").Value + Sheets("Grille").Range("B28").Value + Sheets("Grille").Range("F12").Value
                        Else
                        Range("AF" & i).Value = Sheets("Grille").Range("L17") + Sheets("Grille").Range("B29") + Sheets("Grille").Range("F12")
                        End If
                    End If
                    If Range("M" & i).Value > 901 Then
                        If Range("P" & i).Value = "*dimanche*" Then
                        Range("AF" & i).Value = Sheets("Grille").Range("L17").Value + Sheets("Grille").Range("B29").Value + Sheets("Grille").Range("B28").Value + Sheets("Grille").Range("F13").Value
                        Else
                        Range("AF" & i).Value = Sheets("Grille").Range("L17") + Sheets("Grille").Range("B29") + Sheets("Grille").Range("F13")
                        End If
                    End If
                    If Range("M" & i).Value > 1001 Then
                        If Range("P" & i).Value = "*dimanche*" Then
                        Range("AF" & i).Value = Sheets("Grille").Range("L17").Value + Sheets("Grille").Range("B29").Value + Sheets("Grille").Range("B28").Value + Sheets("Grille").Range("F14").Value
                        Else
                        Range("AF" & i).Value = Sheets("Grille").Range("L17") + Sheets("Grille").Range("B29") + Sheets("Grille").Range("F14")
                        End If
                    End If
                    If Range("M" & i).Value > 1201 Then
                        If Range("P" & i).Value = "*dimanche*" Then
                        Range("AF" & i).Value = Sheets("Grille").Range("L17").Value + Sheets("Grille").Range("B29").Value + Sheets("Grille").Range("B28").Value + Sheets("Grille").Range("F15").Value
                        Else
                        Range("AF" & i).Value = Sheets("Grille").Range("L17") + Sheets("Grille").Range("B29") + Sheets("Grille").Range("F15")
                        End If
                    End If
                    If Range("M" & i).Value > 1401 Then
                        If Range("P" & i).Value = "*dimanche*" Then
                        Range("AF" & i).Value = Sheets("Grille").Range("L17").Value + Sheets("Grille").Range("B29").Value + Sheets("Grille").Range("B28").Value + Sheets("Grille").Range("F16").Value
                        Else
                        Range("AF" & i).Value = Sheets("Grille").Range("L17") + Sheets("Grille").Range("B29") + Sheets("Grille").Range("F16")
                        End If
                    End If
                    If Range("M" & i).Value > 1601 Then
                        If Range("P" & i).Value = "*dimanche*" Then
                        Range("AF" & i).Value = Sheets("Grille").Range("L17").Value + Sheets("Grille").Range("B29").Value + Sheets("Grille").Range("B28").Value + Sheets("Grille").Range("F17").Value
                        Else
                        Range("AF" & i).Value = Sheets("Grille").Range("L17") + Sheets("Grille").Range("B29") + Sheets("Grille").Range("F17")
                        End If
                    End If
                    If Range("M" & i).Value > 1801 Then
                        If Range("P" & i).Value = "*dimanche*" Then
                        Range("AF" & i).Value = Sheets("Grille").Range("L17").Value + Sheets("Grille").Range("B29").Value + Sheets("Grille").Range("B28").Value + Sheets("Grille").Range("F18").Value
                        Else
                        Range("AF" & i).Value = Sheets("Grille").Range("L17") + Sheets("Grille").Range("B29") + Sheets("Grille").Range("F18")
                        End If
                    End If
                    If Range("M" & i).Value > 2001 Then
                        If Range("P" & i).Value = "*dimanche*" Then
                        Range("AF" & i).Value = Sheets("Grille").Range("L17").Value + Sheets("Grille").Range("B29").Value + Sheets("Grille").Range("B28").Value + Sheets("Grille").Range("F19").Value
                        Else
                        Range("AF" & i).Value = Sheets("Grille").Range("L17") + Sheets("Grille").Range("B29") + Sheets("Grille").Range("F19")
                        End If
                    End If
                    If Range("M" & i).Value > 2501 Then
                        If Range("P" & i).Value = "*dimanche*" Then
                        Range("AF" & i).Value = Sheets("Grille").Range("L17").Value + Sheets("Grille").Range("B29").Value + Sheets("Grille").Range("B28").Value + Sheets("Grille").Range("F20").Value
                        Else
                        Range("AF" & i).Value = Sheets("Grille").Range("L17") + Sheets("Grille").Range("B29") + Sheets("Grille").Range("F20")
                        End If
                    End If
                    If Range("M" & i).Value > 3001 Then
                        If Range("P" & i).Value = "*dimanche*" Then
                        Range("AF" & i).Value = Sheets("Grille").Range("L17").Value + Sheets("Grille").Range("B29").Value + Sheets("Grille").Range("B28").Value + Sheets("Grille").Range("F21").Value
                        Else
                        Range("AF" & i).Value = Sheets("Grille").Range("L17") + Sheets("Grille").Range("B29") + Sheets("Grille").Range("F21")
                        End If
                    End If
                    If Range("M" & i).Value > 4001 Then
                        If Range("P" & i).Value = "*dimanche*" Then
                        Range("AF" & i).Value = Sheets("Grille").Range("L17").Value + Sheets("Grille").Range("B29").Value + Sheets("Grille").Range("B28").Value + Sheets("Grille").Range("F22").Value
                        Else
                        Range("AF" & i).Value = Sheets("Grille").Range("L17") + Sheets("Grille").Range("B29") + Sheets("Grille").Range("F22")
                        End If
                    End If
                    If Range("M" & i).Value > 4501 Then
                        If Range("P" & i).Value = "*dimanche*" Then
                        Range("AF" & i).Value = Sheets("Grille").Range("L17").Value + Sheets("Grille").Range("B29").Value + Sheets("Grille").Range("B28").Value + Sheets("Grille").Range("F23").Value
                        Else
                        Range("AF" & i).Value = Sheets("Grille").Range("L17") + Sheets("Grille").Range("B29") + Sheets("Grille").Range("F23")
                        End If
                    End If
                End If
            End If
        End If
    Next
End Sub

Bonjour,

Malheureusement à part jouer sur l'indentation on a pas d'autre solution.

Après j'ai l'impression que vos lignes se répètent dans leur structure. N'avez vous pas un algorithme plus efficace ? Voir une résolution par formule car cela ne m'a pas l'air impossible. Je n'ai pas le fichier sous les yeux mais on a des transformations, avec des tables de correspondances pour transformer une valeur en une autre et faire une somme dans une cellule de la même ligne d'une autre colonne ?

Si je prend par exemple ça :

                    If Range("M" & i).Value > 0 Then
                        If Range("P" & i).Value = "dimanche" Then
                        Sheets("teliway").Range("AF" & i).Value = Sheets("Grille").Range("L14").Value + Sheets("Grille").Range("B29").Value + Sheets("Grille").Range("B28").Value
                        Else
                        Sheets("teliway").Range("AF" & i).Value = Sheets("Grille").Range("L14").Value + Sheets("Grille").Range("B29").Value
                        End If
                    End If

Il n'y a pas d'intérêt à avoir deux If l'un dans l'autre sachant que vous n'avez pas de Else.

Dans ce cas en définissant des objets pour les worksheet, ne précisant pas .value des objets range qui est la propriété par défaut, et en utilisant le raccourci [] des range, on pourrait obtenir l'équivalence suivante :

Set WS_GR = Worksheets("Grille")
With Worksheets("teliway)                
    If Range("P" & i) = "dimanche" And Range("M" & i) > 0 Then
        .Range("AF" & i) = WS_GR.[L14] + WS_GR.[B28:B29]
        Else
        .Range("AF" & i).Value = WS_GR.[L14] + WS_GR.[B29]
    End If
End With

Après reste à comprendre la logique derrière le code et le cas échéant, trouver une algorithmie plus efficace.

Cdlt,

Bonjour Sothin, Ergotamine

Pour ce qui est de la lecture claire du code, l'indentation est une bonne solution,
j'utilise un outil payant mais très raisonnable au niveau du prix et pleins de fonctionnalités : MZ-Tools

Ensuite en totalement gratuit il y a également : Rubberduck
mais beaucoup plus lent

@+

Bonjour,

Merci beaucoup pour les infos !

Cependant, dommage qu'un mythe s'écroule... Quand je voyais vos beaux codes à tous, bien indentés, je me disais que vous étiez tous beaucoup plus rigoureux et structurés que moi. Mais en fait certains d'entre vous trichent 😁

Merci pour vos réponses rapides!

@Ergotamine: Effectivement, cela à l'air d'être plus clair ainsi. Cependant, la double condition risque de m'apporter des problèmes. Ce code essaie de donner le prix des factures en fonction de différents facteurs (notamment le poids, week-end ect..). Imaginons une commande faite le dimanche avec un poids x tel que 0<x<50. Tout va bien dans la première boucle SI mais à partir de la suivante, cette dernière ne remplira pas les doubles conditions et verra sa valeur prendre celle du Else et ainsi de suite. Voila pourquoi j'ai choisi cette méthode, il doit surement exister un autre moyen mais je suis encore trop débutant actuellement.

@BrunoM45: Merci je vais télécharger ceci de suite, cela va bien m'aider :)

Bonne journée!

Bonjour,

Comme là on ne voit qu'une petite partie du code, c'est compliqué de se représenter ce que vous souhaitez. Je pense qu'avec des tables structurées à triple voir quadruple entrées on aurait eu le même résultat par formule. Mais il nous aurait fallu un exemple représentatif avec les données de bases et le résultat attendu.

Ensuite il existe des alternatives au If. Pensez au ElseIf, Iif, Switch, Select Case ... Qui permettent de tester des valeurs selon différents patern, chacun ayant ses avantages et ses inconvénients.

Cdlt,

@JoyeuxNoel : Certains partent systématiquement d'une page vierge, c'est un choix subjectif. Mais il est vrai que j'ai pensé plus d'une fois à me constituer une bibliothèque de code pré-fait pour les sujets les plus redondants, pour l'instant je n'ai pas encore sauté le pas.

Re,

Je rejoins Ergotamine. Avec une table et des formules, on obtiendrait certainement le même résultat que l'usine à gaz VBA que tu es en train de préparer.

Pour tout le reste, Ergotamine, c'était justement l'objet de la proposition que je t'avais faite 😉

Il faut que je me remotive.

J'ai fait les changements au niveau de l'écriture mais la macro est trop grande malheureusement. Je vous joint le code pour me dire si je peux l'optimiser d'une manière. Il y a beaucoup de valeurs répétées comme les WS_GR.[B29] et WS_GR.[B28], tandis que d'autres suivent une boucle jusqu'à x=23 comme WS_GR.[C23]. Je ne connais pas très bien les tables mais si c'est le seul moyen d'y arriver, quelques conseils seraient les bienvenus!

Le but de ce VBA est de calculer les factures selon plusieurs critères: Tout d'abord, j'ai la colonne "E" qui me montre les différents flux (facturé différemment bien sur), ensuite la colonne F permet de trier en fonction des villes, la colonne G en fonction des zones de livraison (zone 1/zone2), ensuite la colonne M indique le poids et enfin la colonne P les jours de la semaine. J'ai une grille tarifaire dans la feuille "Grille" que j'utilise ensuite pendant les calculs. Par exemple en B29, j'ai un supplément qui est sur chacune des commandes et en B28 un supplément pour les livraisons le dimanche. En A1:F24, une grille tarifaire en fonction du poids et en I1:L17 le forfait fixe à chaque commande.

Ici on se focalise uniquement sur le flux LEX mais je dois faire marcher cette macro sur les autres flux aussi.

Je ne peux vous partager le fichier malheureusementt, confidentialité oblige...

Merci :)

Le code:

Sub LEX()
Dim i As Integer
Dim WS_GR As Worksheet
Dim WS_TW As Worksheet
Set WS_GR = Worksheets("Grille")
Set WS_TW = Worksheets("teliway")
With Worksheets("teliway")

For i = 2 To 10001
    If Range("E" & i) Like "*LEX*" Then
        If Range("F" & i) Like "*Avignon*" Then
            If Range("G" & i).Value = 1 Then
                If Range("M" & i) > 0 Then
                    If Range("P" & i) = "dimanche" Then
                        WS_TW.["AF" & i] = WS_GR.[L10] + WS_GR.[B29] + WS_GR.[B28]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L10] + WS_GR.[B29]
                    End If
                End If
                If Range("M" & i).Value > 51 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L10] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[E3]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L10] + WS_GR.[B29] + WS_GR.[E3]
                    End If
                End If
                If Range("M" & i).Value > 101 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L10] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[E4]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L10] + WS_GR.[B29] + WS_GR.[E4]
                    End If
                End If
                If Range("M" & i).Value > 151 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L10] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[E5]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L10] + WS_GR.[B29] + WS_GR.[E5]
                    End If
                End If
                If Range("M" & i).Value > 201 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L10] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[E6]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L10] + WS_GR.[B29] + WS_GR.[E6]
                    End If
                End If
                If Range("M" & i).Value > 301 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L10] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[E7]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L10] + WS_GR.[B29] + WS_GR.[E7]
                    End If
                End If
                If Range("M" & i).Value > 401 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L10] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[E8]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L10] + WS_GR.[B29] + WS_GR.[E8]
                    End If
                End If
                If Range("M" & i).Value > 501 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L10] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[E9]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L10] + WS_GR.[B29] + WS_GR.[E9]
                    End If
                End If
                If Range("M" & i).Value > 601 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L10] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[E10]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L10] + WS_GR.[B29] + WS_GR.[E10]
                    End If
                End If
                If Range("M" & i).Value > 701 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L10] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[E11]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L10] + WS_GR.[B29] + WS_GR.[E11]
                    End If
                End If
                If Range("M" & i).Value > 801 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L10] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[E12]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L10] + WS_GR.[B29] + WS_GR.[E12]
                    End If
                End If
                If Range("M" & i).Value > 901 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L10] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[E13]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L10] + WS_GR.[B29] + WS_GR.[E13]
                    End If
                End If
                If Range("M" & i).Value > 1001 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L10] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[E14]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L10] + WS_GR.[B29] + WS_GR.[E14]
                    End If
                End If
                If Range("M" & i).Value > 1201 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L10] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[E15]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L10] + WS_GR.[B29] + WS_GR.[E15]
                    End If
                End If
                If Range("M" & i).Value > 1401 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L10] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[E16]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L10] + WS_GR.[B29] + WS_GR.[E16]
                    End If
                End If
                If Range("M" & i).Value > 1601 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L10] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[E17]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L10] + WS_GR.[B29] + WS_GR.[E17]
                    End If
                End If
                If Range("M" & i).Value > 1801 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L10] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[E18]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L10] + WS_GR.[B29] + WS_GR.[E18]
                    End If
                End If
                If Range("M" & i).Value > 2001 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L10] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[E19]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L10] + WS_GR.[B29] + WS_GR.[E19]
                    End If
                End If
                If Range("M" & i).Value > 2501 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L10] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[E20]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L10] + WS_GR.[B29] + WS_GR.[E20]
                    End If
                End If
                If Range("M" & i).Value > 3001 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L10] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[E21]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L10] + WS_GR.[B29] + WS_GR.[E21]
                    End If
                End If
                If Range("M" & i).Value > 4001 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L10] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[E22]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L10] + WS_GR.[B29] + WS_GR.[E22]
                    End If
                End If
                If Range("M" & i).Value > 4501 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L10] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[E23]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L10] + WS_GR.[B29] + WS_GR.[E23]
                    End If
                End If
            End If
            If Range("G" & i).Value = 2 Then
                If Range("M" & i).Value > 0 Then
                    If Range("P" & i).Value = "dimanche" Then
                        WS_TW.["AF" & i] = WS_GR.[L11] + WS_GR.[B29] + WS_GR.[B28]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L11] + WS_GR.[B29]
                    End If
                End If
                If Range("M" & i).Value > 51 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L11] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[E3]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L11] + WS_GR.[B29] + WS_GR.[E3]
                    End If
                End If
                If Range("M" & i).Value > 101 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L11] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[E4]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L11] + WS_GR.[B29] + WS_GR.[E4]
                    End If
                End If
                If Range("M" & i).Value > 151 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L11] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[E5]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L11] + WS_GR.[B29] + WS_GR.[E5]
                    End If
                End If
                If Range("M" & i).Value > 201 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L11] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[E6]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L11] + WS_GR.[B29] + WS_GR.[E6]
                    End If
                End If
                If Range("M" & i).Value > 301 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L11] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[E7]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L11] + WS_GR.[B29] + WS_GR.[E7]
                    End If
                End If
                If Range("M" & i).Value > 401 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                       WS_TW.["AF" & i] = WS_GR.[L11] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[E8]
                    Else
                       WS_TW.["AF" & i] = WS_GR.[L11] + WS_GR.[B29] + WS_GR.[E8]
                    End If
                End If
                If Range("M" & i).Value > 501 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L11] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[E9]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L11] + WS_GR.[B29] + WS_GR.[E9]
                    End If
                End If
                If Range("M" & i).Value > 601 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L11] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[E10]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L11] + WS_GR.[B29] + WS_GR.[E10]
                    End If
                End If
                If Range("M" & i).Value > 701 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                         WS_TW.["AF" & i] = WS_GR.[L11] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[E11]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L11] + WS_GR.[B29] + WS_GR.[E11]
                    End If
                End If
                If Range("M" & i).Value > 801 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L11] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[E12]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L11] + WS_GR.[B29] + WS_GR.[E12]
                    End If
                End If
                If Range("M" & i).Value > 901 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                       WS_TW.["AF" & i] = WS_GR.[L11] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[E13]
                    Else
                       WS_TW.["AF" & i] = WS_GR.[L11] + WS_GR.[B29] + WS_GR.[E13]
                    End If
                End If
                If Range("M" & i).Value > 1001 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L11] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[E14]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L11] + WS_GR.[B29] + WS_GR.[E14]
                    End If
                End If
                If Range("M" & i).Value > 1201 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L11] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[E15]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L11] + WS_GR.[B29] + WS_GR.[E15]
                    End If
                End If
                If Range("M" & i).Value > 1401 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L11] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[E16]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L11] + WS_GR.[B29] + WS_GR.[E16]
                    End If
                End If
                If Range("M" & i).Value > 1601 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L11] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[E17]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L11] + WS_GR.[B29] + WS_GR.[E17]
                    End If
                End If
                If Range("M" & i).Value > 1801 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                         WS_TW.["AF" & i] = WS_GR.[L11] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[E18]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L11] + WS_GR.[B29] + WS_GR.[E18]
                    End If
                End If
                If Range("M" & i).Value > 2001 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L11] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[E19]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L11] + WS_GR.[B29] + WS_GR.[E19]
                    End If
                End If
                If Range("M" & i).Value > 2501 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L11] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[E20]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L11] + WS_GR.[B29] + WS_GR.[E20]
                    End If

                End If
                If Range("M" & i).Value > 3001 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L11] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[E21]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L11] + WS_GR.[B29] + WS_GR.[E21]
                    End If
                End If
                If Range("M" & i).Value > 4001 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L11] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[E22]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L11] + WS_GR.[B29] + WS_GR.[E22]
                    End If
                End If
                If Range("M" & i).Value > 4501 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L11] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[E23]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L11] + WS_GR.[B29] + WS_GR.[E23]
                    End If
                End If
            End If
        End If
        If Range("F" & i).Value Like "*Clermont*" Then
            If Range("G" & i).Value = 1 Then
                If Range("M" & i).Value > 0 Then
                    If Range("P" & i).Value = "dimanche" Then
                        WS_TW.["AF" & i] = WS_GR.[L6] + WS_GR.[B29] + WS_GR.[B28]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L6] + WS_GR.[B29]
                    End If
                End If
                If Range("M" & i).Value > 51 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L6] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[D3]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L6] + WS_GR.[B29] + WS_GR.[D3]
                    End If
                End If
                If Range("M" & i).Value > 101 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L6] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[D4]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L6] + WS_GR.[B29] + WS_GR.[D4]
                    End If
                End If
                If Range("M" & i).Value > 151 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                         WS_TW.["AF" & i] = WS_GR.[L6] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[D5]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L6] + WS_GR.[B29] + WS_GR.[D5]
                    End If
                End If
                If Range("M" & i).Value > 201 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L6] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[D6]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L6] + WS_GR.[B29] + WS_GR.[D6]
                    End If
                End If
                If Range("M" & i).Value > 301 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L6] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[D7]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L6] + WS_GR.[B29] + WS_GR.[D7]
                    End If
                End If
                If Range("M" & i).Value > 401 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L6] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[D8]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L6] + WS_GR.[B29] + WS_GR.[D8]
                    End If
                End If
                If Range("M" & i).Value > 501 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L6] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[D9]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L6] + WS_GR.[B29] + WS_GR.[D9]
                    End If
                End If
                If Range("M" & i).Value > 601 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L6] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[D10]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L6] + WS_GR.[B29] + WS_GR.[D10]
                    End If
                End If
                If Range("M" & i).Value > 701 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L6] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[D11]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L6] + WS_GR.[B29] + WS_GR.[D11]
                    End If
                End If
                If Range("M" & i).Value > 801 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L6] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[D12]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L6] + WS_GR.[B29] + WS_GR.[D12]
                    End If
                End If
                If Range("M" & i).Value > 901 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L6] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[D13]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L6] + WS_GR.[B29] + WS_GR.[D13]
                    End If
                End If
                If Range("M" & i).Value > 1001 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L6] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[D14]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L6] + WS_GR.[B29] + WS_GR.[D14]
                    End If
                End If
                If Range("M" & i).Value > 1201 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L6] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[D15]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L6] + WS_GR.[B29] + WS_GR.[D15]
                    End If
                End If
                If Range("M" & i).Value > 1401 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L6] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[D16]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L6] + WS_GR.[B29] + WS_GR.[D16]
                    End If
                End If
                If Range("M" & i).Value > 1601 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L6] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[D17]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L6] + WS_GR.[B29] + WS_GR.[D17]
                    End If
                End If
                If Range("M" & i).Value > 1801 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L6] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[D18]
                    Else
                         WS_TW.["AF" & i] = WS_GR.[L6] + WS_GR.[B29] + WS_GR.[D18]
                    End If
                End If
                If Range("M" & i).Value > 2001 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L6] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[D19]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L6] + WS_GR.[B29] + WS_GR.[D19]
                    End If
                End If
                If Range("M" & i).Value > 2501 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L6] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[D20]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L6] + WS_GR.[B29] + WS_GR.[D20]
                    End If
                End If
                If Range("M" & i).Value > 3001 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L6] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[D21]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L6] + WS_GR.[B29] + WS_GR.[D21]
                    End If
                End If
                If Range("M" & i).Value > 4001 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L6] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[D22]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L6] + WS_GR.[B29] + WS_GR.[D22]
                    End If
                End If
                If Range("M" & i).Value > 4501 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L6] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[D23]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L6] + WS_GR.[B29] + WS_GR.[D23]
                    End If
                End If
            End If
            If Range("G" & i).Value = 2 Then
                If Range("M" & i).Value > 0 Then
                    If Range("P" & i).Value = "dimanche" Then
                        WS_TW.["AF" & i] = WS_GR.[L7] + WS_GR.[B29] + WS_GR.[B28]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L7] + WS_GR.[B29]
                    End If
                End If
                If Range("M" & i).Value > 51 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L7] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[D3]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L7] + WS_GR.[B29] + WS_GR.[D3]
                    End If
                End If
                If Range("M" & i).Value > 101 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L7] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[D4]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L7] + WS_GR.[B29] + WS_GR.[D4]
                    End If
                End If
                If Range("M" & i).Value > 151 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L7] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[D5]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L7] + WS_GR.[B29] + WS_GR.[D5]
                    End If
                End If
                If Range("M" & i).Value > 201 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L7] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[D7]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L7] + WS_GR.[B29] + WS_GR.[D7]
                    End If
                End If
                If Range("M" & i).Value > 301 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                         WS_TW.["AF" & i] = WS_GR.[L7] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[D8]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L7] + WS_GR.[B29] + WS_GR.[D8]
                    End If
                End If
                If Range("M" & i).Value > 401 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L7] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[D9]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L7] + WS_GR.[B29] + WS_GR.[D9]
                    End If
                End If
                If Range("M" & i).Value > 501 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L7] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[D10]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L7] + WS_GR.[B29] + WS_GR.[D10]
                    End If
                End If
                If Range("M" & i).Value > 601 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L7] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[D11]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L7] + WS_GR.[B29] + WS_GR.[D11]
                    End If
                End If
                If Range("M" & i).Value > 701 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L7] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[D12]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L7] + WS_GR.[B29] + WS_GR.[D12]
                    End If
                End If
                If Range("M" & i).Value > 801 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L7] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[D13]
                    Else
                         WS_TW.["AF" & i] = WS_GR.[L7] + WS_GR.[B29] + WS_GR.[D13]
                    End If
                End If
                If Range("M" & i).Value > 901 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L7] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[D13]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L7] + WS_GR.[B29] + WS_GR.[D13]
                    End If
                End If
                If Range("M" & i).Value > 1001 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L7] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[D14]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L7] + WS_GR.[B29] + WS_GR.[D14]
                    End If
                End If
                If Range("M" & i).Value > 1201 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L7] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[D15]
                    Else
                         WS_TW.["AF" & i] = WS_GR.[L7] + WS_GR.[B29] + WS_GR.[D15]
                    End If
                End If
                If Range("M" & i).Value > 1401 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L7] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[D16]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L7] + WS_GR.[B29] + WS_GR.[D16]
                    End If
                End If
                If Range("M" & i).Value > 1601 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L7] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[D17]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L7] + WS_GR.[B29] + WS_GR.[D17]
                    End If
                End If
                If Range("M" & i).Value > 1801 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L7] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[D18]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L7] + WS_GR.[B29] + WS_GR.[D18]
                    End If
                End If
                If Range("M" & i).Value > 2001 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L7] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[D19]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L7] + WS_GR.[B29] + WS_GR.[D19]
                    End If
                End If
                If Range("M" & i).Value > 2501 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L7] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[D20]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L7] + WS_GR.[B29] + WS_GR.[D20]
                    End If
                End If
                If Range("M" & i).Value > 3001 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L7] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[D21]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L7] + WS_GR.[B29] + WS_GR.[D21]
                    End If
                End If
                If Range("M" & i).Value > 4001 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L7] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[D22]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L7] + WS_GR.[B29] + WS_GR.[D22]
                    End If
                End If
                If Range("M" & i).Value > 4501 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L7] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[D23]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L7] + WS_GR.[B29] + WS_GR.[D23]
                    End If
                End If
            End If
        End If
        If Range("F" & i).Value Like "*Genas*" Then
            If Range("G" & i).Value = 1 Then
                If Range("M" & i).Value > 0 Then
                    If Range("P" & i).Value = "dimanche" Then
                        WS_TW.["AF" & i] = WS_GR.[L14] + WS_GR.[B29] + WS_GR.[B28]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L14] + WS_GR.[B29]
                    End If
                End If
                If Range("M" & i).Value > 51 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L14] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[F3]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L14] + WS_GR.[B29] + WS_GR.[F3]
                    End If
                End If
                If Range("M" & i).Value > 101 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L14] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[F4]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L14] + WS_GR.[B29] + WS_GR.[F4]
                    End If
                End If
                If Range("M" & i).Value > 151 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L14] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[F5]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L14] + WS_GR.[B29] + WS_GR.[F5]
                    End If
                End If
                If Range("M" & i).Value > 201 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L14] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[F6]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L14] + WS_GR.[B29] + WS_GR.[F6]
                    End If
                End If
                If Range("M" & i).Value > 301 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L14] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[F7]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L14] + WS_GR.[B29] + WS_GR.[F7]
                    End If
                End If
                If Range("M" & i).Value > 401 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L14] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[F8]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L14] + WS_GR.[B29] + WS_GR.[F8]
                    End If
                End If
                If Range("M" & i).Value > 501 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L14] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[F9]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L14] + WS_GR.[B29] + WS_GR.[F9]
                    End If
                End If
                If Range("M" & i).Value > 601 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                       WS_TW.["AF" & i] = WS_GR.[L14] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[F10]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L14] + WS_GR.[B29] + WS_GR.[F10]
                    End If
                End If
                If Range("M" & i).Value > 701 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L14] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[F11]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L14] + WS_GR.[B29] + WS_GR.[F11]
                    End If
                End If
                If Range("M" & i).Value > 801 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L14] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[F12]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L14] + WS_GR.[B29] + WS_GR.[E12]
                    End If
                End If
                If Range("M" & i).Value > 901 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L14] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[F13]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L14] + WS_GR.[B29] + WS_GR.[F13]
                    End If
                End If
                If Range("M" & i).Value > 1001 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L14] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[F14]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L14] + WS_GR.[B29] + WS_GR.[F14]
                    End If
                End If
                If Range("M" & i).Value > 1201 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L14] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[F15]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L14] + WS_GR.[B29] + WS_GR.[F15]
                    End If
                End If
                If Range("M" & i).Value > 1401 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L14] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[F16]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L14] + WS_GR.[B29] + WS_GR.[F16]
                    End If
                End If
                If Range("M" & i).Value > 1601 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L14] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[F17]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L14] + WS_GR.[B29] + WS_GR.[F17]
                    End If
                End If
                If Range("M" & i).Value > 1801 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L14] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[F18]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L14] + WS_GR.[B29] + WS_GR.[F18]
                    End If
                End If
                If Range("M" & i).Value > 2001 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L14] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[F19]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L14] + WS_GR.[B29] + WS_GR.[F19]
                    End If
                End If
                If Range("M" & i).Value > 2501 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L14] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[F20]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L14] + WS_GR.[B29] + WS_GR.[F20]
                    End If
                End If
                If Range("M" & i).Value > 3001 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L14] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[F21]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L14] + WS_GR.[B29] + WS_GR.[F21]
                    End If
                End If
                If Range("M" & i).Value > 4001 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L14] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[F22]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L14] + WS_GR.[B29] + WS_GR.[F22]
                    End If
                End If
                If Range("M" & i).Value > 4501 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L14] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[F23]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L14] + WS_GR.[B29] + WS_GR.[F23]
                    End If
                End If
            End If
            If Range("G" & i).Value = 2 Then
                If Range("M" & i).Value > 0 Then
                    If Range("P" & i).Value = "dimanche" Then
                        WS_TW.["AF" & i] = WS_GR.[L15] + WS_GR.[B29] + WS_GR.[B28]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L15] + WS_GR.[B29]
                    End If
                End If
                If Range("M" & i).Value > 51 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L15] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[F3]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L15] + WS_GR.[B29] + WS_GR.[F3]
                    End If
                End If
                If Range("M" & i).Value > 101 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L15] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[F4]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L15] + WS_GR.[B29] + WS_GR.[F4]
                    End If
                End If
                If Range("M" & i).Value > 151 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L15] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[F5]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L15] + WS_GR.[B29] + WS_GR.[F5]
                    End If
                End If
                If Range("M" & i).Value > 201 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L15] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[F6]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L15] + WS_GR.[B29] + WS_GR.[F6]
                    End If
                End If
                If Range("M" & i).Value > 301 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L15] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[F7]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L15] + WS_GR.[B29] + WS_GR.[F7]
                    End If
                End If
                If Range("M" & i).Value > 401 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L15] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[F8]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L15] + WS_GR.[B29] + WS_GR.[F8]
                    End If
                End If
                If Range("M" & i).Value > 501 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                       WS_TW.["AF" & i] = WS_GR.[L15] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[F9]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L15] + WS_GR.[B29] + WS_GR.[F9]
                    End If
                End If
                If Range("M" & i).Value > 601 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L15] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[F10]
                    Else
                         WS_TW.["AF" & i] = WS_GR.[L15] + WS_GR.[B29] + WS_GR.[F10]
                    End If
                End If
                If Range("M" & i).Value > 701 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L15] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[F11]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L15] + WS_GR.[B29] + WS_GR.[F11]
                    End If
                End If
                If Range("M" & i).Value > 801 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L15] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[F12]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L15] + WS_GR.[B29] + WS_GR.[F12]
                    End If
                End If
                If Range("M" & i).Value > 901 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L15] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[F13]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L15] + WS_GR.[B29] + WS_GR.[F13]
                    End If
                End If
                If Range("M" & i).Value > 1001 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L15] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[F14]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L15] + WS_GR.[B29] + WS_GR.[F14]
                    End If
                End If
                If Range("M" & i).Value > 1201 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L15] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[F15]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L15] + WS_GR.[B29] + WS_GR.[F15]
                    End If
                End If
                If Range("M" & i).Value > 1401 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                       WS_TW.["AF" & i] = WS_GR.[L15] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[F16]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L15] + WS_GR.[B29] + WS_GR.[F16]
                    End If
                End If
                If Range("M" & i).Value > 1601 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L15] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[F17]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L15] + WS_GR.[B29] + WS_GR.[F17]
                    End If
                End If
                If Range("M" & i).Value > 1801 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L15] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[F18]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L15] + WS_GR.[B29] + WS_GR.[F18]
                    End If
                End If
                If Range("M" & i).Value > 2001 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L15] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[F19]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L15] + WS_GR.[B29] + WS_GR.[F19]
                    End If
                End If
                If Range("M" & i).Value > 2501 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L15] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[F20]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L15] + WS_GR.[B29] + WS_GR.[F20]
                    End If
                End If
                If Range("M" & i).Value > 3001 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L15] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[F21]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L15] + WS_GR.[B29] + WS_GR.[F21]
                    End If
                End If
                If Range("M" & i).Value > 4001 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L15] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[F22]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L15] + WS_GR.[B29] + WS_GR.[F22]
                    End If
                End If
                If Range("M" & i).Value > 4501 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L15] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[F23]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L15] + WS_GR.[B29] + WS_GR.[F23]
                    End If
                End If
            End If
        End If
        If Range("F" & i).Value Like "*St-Etienne*" Then
            If Range("G" & i).Value = 1 Then
                If Range("M" & i).Value > 0 Then
                    If Range("P" & i).Value = "dimanche" Then
                        WS_TW.["AF" & i] = WS_GR.[L2] + WS_GR.[B29] + WS_GR.[B28]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L2] + WS_GR.[B29]
                    End If
                End If
                If Range("M" & i).Value > 51 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L2] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[C3]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L2] + WS_GR.[B29] + WS_GR.[C3]
                    End If
                End If
                If Range("M" & i).Value > 101 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L2] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[C4]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L2] + WS_GR.[B29] + WS_GR.[C4]
                    End If
                End If
                If Range("M" & i).Value > 151 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L2] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[C5]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L2] + WS_GR.[B29] + WS_GR.[C5]
                    End If
                End If
                If Range("M" & i).Value > 201 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L2] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[C6]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L2] + WS_GR.[B29] + WS_GR.[C6]
                    End If
                End If
                If Range("M" & i).Value > 301 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L2] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[C7]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L2] + WS_GR.[B29] + WS_GR.[C7]
                    End If
                End If
                If Range("M" & i).Value > 401 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L2] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[C8]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L2] + WS_GR.[B29] + WS_GR.[C8]
                    End If
                End If
                If Range("M" & i).Value > 501 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L2] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[C9]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L2] + WS_GR.[B29] + WS_GR.[C9]
                    End If
                End If
                If Range("M" & i).Value > 601 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L2] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[C10]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L2] + WS_GR.[B29] + WS_GR.[C10]
                    End If
                End If
                If Range("M" & i).Value > 701 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L2] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[C11]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L2] + WS_GR.[B29] + WS_GR.[C11]
                    End If
                End If
                If Range("M" & i).Value > 801 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L2] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[C12]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L2] + WS_GR.[B29] + WS_GR.[C12]
                    End If
                End If
                If Range("M" & i).Value > 901 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                         WS_TW.["AF" & i] = WS_GR.[L2] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[C13]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L2] + WS_GR.[B29] + WS_GR.[C13]
                    End If
                End If
                If Range("M" & i).Value > 1001 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L2] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[C14]
                    Else
                         WS_TW.["AF" & i] = WS_GR.[L2] + WS_GR.[B29] + WS_GR.[C14]
                    End If
                End If
                If Range("M" & i).Value > 1201 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L2] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[C15]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L2] + WS_GR.[B29] + WS_GR.[C15]
                    End If
                End If
                If Range("M" & i).Value > 1401 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L2] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[C16]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L2] + WS_GR.[B29] + WS_GR.[C16]
                    End If
                End If
                If Range("M" & i).Value > 1601 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L2] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[C17]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L2] + WS_GR.[B29] + WS_GR.[C17]
                    End If
                End If
                If Range("M" & i).Value > 1801 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L2] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[C18]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L2] + WS_GR.[B29] + WS_GR.[C18]
                    End If
                End If
                If Range("M" & i).Value > 2001 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L2] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[C19]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L2] + WS_GR.[B29] + WS_GR.[C19]
                    End If
                End If
                If Range("M" & i).Value > 2501 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                       WS_TW.["AF" & i] = WS_GR.[L2] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[C20]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L2] + WS_GR.[B29] + WS_GR.[C20]
                    End If
                End If
                If Range("M" & i).Value > 3001 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L2] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[C21]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L2] + WS_GR.[B29] + WS_GR.[C21]
                    End If
                End If
                If Range("M" & i).Value > 4001 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L2] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[C22]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L2] + WS_GR.[B29] + WS_GR.[C22]
                    End If
                End If
                If Range("M" & i).Value > 4501 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                       WS_TW.["AF" & i] = WS_GR.[L2] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[C23]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L2] + WS_GR.[B29] + WS_GR.[C23]
                    End If
                End If
            End If
            If Range("G" & i).Value = 2 Then
                If Range("M" & i).Value > 0 Then
                    If Range("P" & i).Value = "dimanche" Then
                        WS_TW.["AF" & i] = WS_GR.[L3] + WS_GR.[B29] + WS_GR.[B28]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L3] + WS_GR.[B29]
                    End If
                End If
                If Range("M" & i).Value > 51 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L3] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[C3]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L3] + WS_GR.[B29] + WS_GR.[C3]
                    End If
                End If
                If Range("M" & i).Value > 101 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L3] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[C4]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L3] + WS_GR.[B29] + WS_GR.[C4]
                    End If
                End If
                If Range("M" & i).Value > 151 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L3] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[C5]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L3] + WS_GR.[B29] + WS_GR.[C5]
                    End If
                End If
                If Range("M" & i).Value > 201 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                         WS_TW.["AF" & i] = WS_GR.[L3] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[C6]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L3] + WS_GR.[B29] + WS_GR.[C6]
                    End If
                End If
                If Range("M" & i).Value > 301 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L3] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[C7]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L3] + WS_GR.[B29] + WS_GR.[C7]
                    End If
                End If
                If Range("M" & i).Value > 401 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L3] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[C8]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L3] + WS_GR.[B29] + WS_GR.[C8]
                    End If
                End If
                If Range("M" & i).Value > 501 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L3] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[C9]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L3] + WS_GR.[B29] + WS_GR.[C9]
                    End If
                End If
                If Range("M" & i).Value > 601 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L3] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[C10]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L3] + WS_GR.[B29] + WS_GR.[C10]
                    End If
                End If
                If Range("M" & i).Value > 701 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L3] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[C11]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L3] + WS_GR.[B29] + WS_GR.[C11]
                    End If
                End If
                If Range("M" & i).Value > 801 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L3] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[C12]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L3] + WS_GR.[B29] + WS_GR.[C12]
                    End If
                End If
                If Range("M" & i).Value > 901 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L3] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[C13]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L3] + WS_GR.[B29] + WS_GR.[C13]
                    End If
                End If
                If Range("M" & i).Value > 1001 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L3] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[C14]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L3] + WS_GR.[B29] + WS_GR.[C14]
                    End If
                End If
                If Range("M" & i).Value > 1201 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L3] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[C15]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L3] + WS_GR.[B29] + WS_GR.[C15]
                    End If
                End If
                If Range("M" & i).Value > 1401 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L3] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[C16]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L3] + WS_GR.[B29] + WS_GR.[C16]
                    End If
                End If
                If Range("M" & i).Value > 1601 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L3] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[C17]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L3] + WS_GR.[B29] + WS_GR.[C17]
                    End If
                End If
                If Range("M" & i).Value > 1801 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L3] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[C18]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L3] + WS_GR.[B29] + WS_GR.[C18]
                    End If
                End If
                If Range("M" & i).Value > 2001 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L3] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[C19]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L3] + WS_GR.[B29] + WS_GR.[C19]
                    End If
                End If
                If Range("M" & i).Value > 2501 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L3] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[C20]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L3] + WS_GR.[B29] + WS_GR.[C20]
                    End If
                End If
                If Range("M" & i).Value > 3001 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L3] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[C21]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L3] + WS_GR.[B29] + WS_GR.[C21]
                    End If
                End If
                If Range("M" & i).Value > 4001 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L3] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[C22]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L3] + WS_GR.[B29] + WS_GR.[C22]
                    End If
                End If
                If Range("M" & i).Value > 4501 Then
                    If Range("P" & i).Value = "*dimanche*" Then
                        WS_TW.["AF" & i] = WS_GR.[L3] + WS_GR.[B29] + WS_GR.[B28] + WS_GR.[C23]
                    Else
                        WS_TW.["AF" & i] = WS_GR.[L3] + WS_GR.[B29] + WS_GR.[C23]
                    End If
                End If
            End If
        End If
    End If
Next
End With
End Sub

Bonjour,

Il va pourtant bien falloir que tu anonymises ton classeur pour nous le passer pour qu'on puisse analyser la structure de TOUSSA.

Telle quelle ta macro fait déjà plus d'un millier de lignes : Je ne connais pas de cas ou VBA accepte plus de 3000 lignes de code. (et encore quand le code est bien écris) or mettre des crochets n'arrange rien, ça oblige juste VBA à faire des conversion inutilement chronophages...

On est à des années lumière du temps ou Microsoft préconisait de faire des macros qui n'excédaient pas 30 lignes... Et pourtant avec ça on arrivait à faire des calculs tout aussi puissant qu'aujourd'hui...

Cette macro étant cumulative on doit nécessairement passer par chaque ligne de code pour aller au bout donc pas (ou peu) possible de remplacer par un Select Case ou de refactoriser... Mais le pompon :

On travaille sur des Worksheets et des Range au lieu de travailler sur un Array ! C'est rédhibitoire.

La messe est dite : Tu peux arrêter, tu travailles pour rien ta macro ne sera jamais fonctionnelle.

Enfin... C'est juste un avis... Hein ! C'est pourquoi je le partage !

A+

Bonjour galopin01,

Juste une petite aparté pour te remercier pour ton retour, notamment cette remarque :

or mettre des crochets n'arrange rien, ça oblige juste VBA à faire des conversion inutilement chronophages...

J'avais lu que les crochets étaient une façon raccourci pour un objet range mais absolument pas dû à une utilisation masquée de application.evaluate ! J'en apprends tous les jours ici grâce, notamment, aux contributeurs actifs alors merci. Je vais essayer de changer mes automatismes sur ce point !

Cdlt,

Bonjour,

Arf, dommage, c'est plus rapide et pratique à écrire :(

Bonjour tout le monde,

Il y a belle lurette que je n'utilise plus que Notepad++ (gratuit) pour taper mes codes, que ce soit en VB, en PHP ou en Javascript. Et plus le code est complexe, mieux il s'en sort. Plusieurs raisons à cela :
- les langages sont reconnus et les mots clés, les variables, les fonctions et les balises ont des couleurs différentes
- dans l'indentation, une ligne verticale permet de relier la balise ouvrante de la balise de fermeture, ce qui permet de détecter les erreurs de structure. Lorsqu'on clique sur une balise ouvrante, les balises passent en rouge, ce qui est très pratique dans les boucles imbriquées.
- la taille de l'indentation est paramétrable. Personnellement je n'utilise que la touche de tabulation par défaut.

Ce n'est que lorsque mon code est propre que je fais un copier-coller dans l'éditeur de VBE pour le tester.

Bonjour à tous,

Voici un premier essai de factorisation du code en utilisant une fonction qui renvoie la somme des forfaits et suppléments (trouvés sur Grille) en fonction des poids, jour, et zone de teliway rentrés en arguments.

La fonction nécessite d’avoir les paliers de 0 à 4501 en Z2:Z23 de Grille. Le choix de Z est arbitraire, ces paliers existent déjà probablement sur une autre colonne (A peut-être ?).

Il faut avoir les suppléments en C, D, E, F de Grille avec la valeur 0 (aucun supp) en ligne 2 (pour chacune de ces 4 colonnes).

Sub LEX()
Dim dl&, i&, n&, tville, tLigBase, tColSupp, t()
tville = Array("Avignon", "Clermont", "Genas", "St-Etienne")
tLigForf = Array(10, 6, 14, 2) 'lignes de la colonne L correspondant aux villes : 10 pour Avignon si zone 1, 11 si zone 2, etc....
tColSupp = Array(5, 4, 6, 3) 'colonnes correspondant aux villes "E" (cad 5) pour Avignon etc...
With Worksheets("teliway")
    dl = .Cells(.Rows.Count, "E").End(xlUp).Row: ReDim t(1 To dl - 1)
    For i = 2 To dl
        If .Range("E" & i) Like "*LEX*" Then
            For n = LBound(tville) To UBound(tville)
                If .Range("F" & i) Like "*" & tville(n) & "*" Then
                    t(i - 1) = Calcul(.Range("M" & i), .Range("P" & i), .Range("G" & i), tLigForf(n), tColSupp(n))
                    Exit For
                End If
            Next n
        End If
    Next i
    .Range("AF2:AF" & dl) = Application.Transpose(t)
End With
End Sub

Function Calcul(Poids#, Jour$, Zone As Byte, LigForf, ColSupp)
With Worksheets("Grille")
    For k = 23 To 2 Step -1
        If Poids > .Range("Z" & k) Then
            Calcul = .Cells(LigForf + Zone - 1, "L") + .Range("B29") + IIf(Jour Like "*dimanche*", .Range("B28"), 0) + .Cells(k, ColSupp)
            Exit Function
        End If
    Next k
End With
End Function

Avec des données bien organisées, il serait possible d’obtenir le résultat avec une formule "assez" simple je pense et pour l'instant, une fonction dans ce genre pourrait marcher :

=SI(NB.SI(E2;"*LEX*")=1;(NB.SI(P2;"*dimanche*")=1)*B28+B29+INDEX(Grille;EQUIV(M2;Grille[Paliers];1)-1;EQUIV(F2;Grille[#En-têtes];0))+INDEX(L2:L23;EQUIV(F2;ColVille;0)+G2-1);0)

Cdlt,

Bonjour 3GB,

Je suis épaté que tu aies à la fois proposé ce code qui m'a l'air satisfaisant ( A tester ) mais aussi compris exactement comment s'organisait mon Excel. Il faut que j'essaye d'avoir le même mode de pensée :) Je te fais un retour dès que j'ai le temps de tester le code.

Merci beaucoup,

Cordialement,

Re 3GB, J'ai testé ton code et malheureusement, j'ai une erreur d'incompatibilité de type. Dois-je déclarer les variables qui ne le sont pas?

L'erreur se situe sur cette ligne:

t(i - 1) = Calcul(.Range("M" & i), .Range("P" & i), .Range("G" & i), tLigForf(n), tColSupp(n))

J'ai juste changé le Range("M" & i) en Range("R" & i) afin d'avoir le bon poids sur ce flux.

La plupart des données est sous forme de Nombre, sauf la colonne "P" ou c'est sous forme de Texte( ex: lundi/mardi/mercredi ect...)

L'un de vous saurait-il comment résoudre cette erreur?

Merciii

Bonjour,

Merci du retour et désolé que vous ayez été confronté à une erreur (j'avais dans l'espoir que le code fonctionne du premier coup^^).

Je remets le code ici, avec un changement dans les déclarations :

Sub LEX()
Dim dl&, i&, n&, tville, tLigForf, tColSupp, t()
tville = Array("Avignon", "Clermont", "Genas", "St-Etienne")
tLigForf = Array(10, 6, 14, 2) 'lignes de la colonne L correspondant aux villes : 10 pour Avignon si zone 1, 11 si zone 2, etc....
tColSupp = Array(5, 4, 6, 3) 'colonnes correspondant aux villes "E" (cad 5) pour Avignon etc...
With Worksheets("teliway")
    dl = .Cells(.Rows.Count, "E").End(xlUp).Row: ReDim t(1 To dl - 1)
    For i = 2 To dl
        If .Range("E" & i) Like "*LEX*" Then
            For n = LBound(tville) To UBound(tville)
                If .Range("F" & i) Like "*" & tville(n) & "*" Then
                    t(i - 1) = Calcul(.Range("M" & i), .Range("P" & i), .Range("G" & i), tLigForf(n), tColSupp(n))
                    Exit For
                End If
            Next n
        End If
    Next i
    .Range("AF2:AF" & dl) = Application.Transpose(t)
End With
End Sub

Function Calcul(Poids#, Jour$, Zone As Byte, LigForf, ColSupp)
With Worksheets("Grille")
    For k = 23 To 2 Step -1
        If Poids > .Range("Z" & k) Then
            Calcul = .Cells(LigForf + Zone - 1, "L") + .Range("B29") + IIf(Jour Like "*dimanche*", .Range("B28"), 0) + .Cells(k, ColSupp)
            Exit Function
        End If
    Next k
End With
End Function

A priori, toutes les variables sont déclarées (dans la macro) sauf une (que j'ai renommée dans le code au dernier moment) parmi les 2 dont la déclaration est utile : tligforf et tcolsupp.

La fonction Calcul attend 5 arguments :

Poids, de type double

Jour de type String

Zone de type byte

et LigForf et ColSupp de type variant.

Essayez avec le code mis à jour. Je m'étonne que vous n'ayez pas rencontré un blocage lors de la compilation. Sinon, il faudra utiliser des fonctions de conversion pour s'assurer que .range("M" & i) est de type double, .range("R" & i) de type string et surtout .range("G" & i) de type byte (nombre de 0 à 255).

Cdlt,

Salut à tous,

Je commençais à me poser la question, ne serait-il pas mieux de s'orienter vers une recherche de la ville, mais je vois que 3GB m'a bien devancé. Bravo...

Concernant l'indentation, j'ai aussi MZ-Tools 8.00 très bon complément qui aide vraiment, mais en ce qui concerne l'indentation je lui préfère Smart Indenter qui est beaucoup plus paramétrable.

Bonjour,

Alors, pour commencer, c'est à moi de m'excuser car je prends de votre temps et non à vous qui êtes en train de m'aider :) Je vous dis donc un grand merci!

Le code ne bloque pas, c'est déjà une belle avancée, mais les résultats ne s'affichent pas en "AF".

.Range("AF2:AF" & dl) = Application.Transpose(t)

Ne devrait-on pas mettre: .Range("AF" & dl) ?

Navré pour le peu d'idées que j'ai, je comprends ce que veux faire le code, mais je suis incapable de dire quoi changer. J'ai joint des captures d'écrans des variables locales. Je ne sais pas si cela peut aider..

Je vous remercie encore,

Cordialement,

test1 test2

Bonjour à tous,

@Jean-Paul : Oui, tu as sûrement raison. Je pense même qu'une formule pourrait convenir mais c'est dur à dire sans fichier.

@Sothin : Il faudrait regarder le tableau t dans la fenêtre de variables locales. Non, le collage des valeurs est bon. On pourrait écrire également :

.range("AF2").resize(dl) = application.transpose(t)

Mais il faut bien que la plage de destination contienne autant d'items que le tableau.

Je commente la partie du code qui nous intéresse :

        If .Range("E" & i) Like "*LEX*" Then '!!! si cellule en cours en colonne E contient "LEX" (respecte la casse attention !)
            For n = LBound(tville) To UBound(tville) 'pour chaque ville contenues dans tvilles
                If .Range("F" & i) Like "*" & tville(n) & "*" Then 'si cellule en cours en F contient ville en cours (respecte la casse !)
                    t(i - 1) = Calcul(.Range("M" & i), .Range("P" & i), .Range("G" & i), tLigForf(n), tColSupp(n)) 'calcul
                    Exit For 'sortie de boucle sur n car correspondance trouvée
                End If
            Next n
        End If

Il faut bien contrôler les colonnes E et F (de la feuille teliway) car ce sont pour l'instant les 2 raisons qui justifieraient un tableau vide, faute de correspondance. Ce qui est étrange, c'est que le calcul a bien lieu apparemment à la ligne 89... Avez-vous bien regardé la ligne 89 de la colonne AF de la feuille teliway pour s'assurer qu'elle ne contient pas 47,49 ?

Cdlt,

Arf, je viens de partir du travail.. Je me laisse le week end pour réflexion et dès lundi matin j’irai analyser tout cela.
Merci beaucoup 3GB, vos réponses ainsi que vos conseils sont extrêmement complets. Espérons qu’a l’avenir, je puisse aider mon prochain comme vous le faites :)

Passez un bon week-end!

Cordialement,

Rechercher des sujets similaires à "meilleur visualisation code vba"