Erreur 9 suite à ajout ligne en VBA +corriger une ligne code

Bonjour,

J'ai une macro qui sauvegarde des données, puis ajoute des lignes si nécessaire puis compare la base sauvegardée avec la base actuelle afin de compléter une colonne.

Mon problème est que mes vu que j'ai ajouté des lignes qui n'étaient pas présentes dans ma base de départ, il me met l'erreur 9, l'indice n'appartient pas à la selection.

Je cherche un moyen de contourner cette erreur de cette façon, S'il y a erreur, alors, la valeur de la colonne M est égale à 0.

je met mon code

Option Explicit
Dim derLn, tabloCol, tablo, c, ln, i, j, v(), w(), n, label, k

Sub Lancer()
    Dim fin&, aa, bb, a&
    With Feuil31
        aa = .Range("$A$2:$N$" & .Range("C" & Rows.Count).End(xlUp).Row)
        .Range("$A$2:$L$" & .Range("C" & Rows.Count).End(xlUp).Row).RemoveDuplicates Columns:=Array(1, 2, 3, 4, 5, 6 _
                                                                                                                   , 7, 8, 9, 10, 11, 12), Header:=xlNo
        derLn = .Range("C" & Rows.Count).End(xlUp).Row
        Set tabloCol = .Range("C3:C" & derLn)
        Set tablo = .Range("A3:N" & derLn)
        ReDim v(derLn - 2, 14)
        i = 0
        For Each c In tabloCol
            If c.Offset(0, -2).Value = 1 Then
                For j = 0 To 13
                    v(i, j) = .Cells(c.Row, 1 + j)
                Next j
                i = i + 1
            End If
        Next c
        tablo.Select
        Selection = v
        derLn = .Range("C" & Rows.Count).End(xlUp).Row
        ReDim w((derLn - 2) * 14, 14)
        For i = 0 To derLn - 3
            For n = 0 To 13
                k = n + 1
                label = Choose(k, 1, 1.2, 2, 2.2, 3, 3.2, 4, 5, 6, 7, 7.5, 8, 9, 10)
                For j = 0 To 13
                    If j = 0 Then
                        w(i * 14 + n, j) = label    'v(i, j)
                    Else
                        w(i * 14 + n, j) = v(i, j)
                    End If
                Next j
            Next n
        Next i
        .Range("A3:N" & (derLn - 2) * 14 + 2) = w
        fin = .Cells(Rows.Count, "C").End(xlUp).Row
        .Range("J3:L3").FormulaR1C1 = "='reference lineaire'!R[1]C[-4]"
        .Range("J3").AutoFill .Range("J3:J" & fin)
        .Range("K3").AutoFill .Range("K3:K" & fin)
        .Range("L3").AutoFill .Range("L3:L" & fin)
        .Range("N3").FormulaR1C1 = "=RC[-1]*RC[-2]"
        .Range("N3").AutoFill .Range("N3:N" & fin)
        .Range("N3:N" & fin).Copy
        .Range("N3:N" & fin).PasteSpecial Paste:=xlPasteValues
        bb = .Range("A3:O" & .Range("C" & Rows.Count).End(3).Row)
        For i = 1 To UBound(bb)
            For a = 1 To UBound(aa)
        'C'est à la ligne dessous que ça bloque, entre le If et le Then : Si la référence n'est pas trouvée, alors la macro est arrêtée et j'ai droit au message d'erreur, je voudrais que s'il y a erreur alors bb(i, 13) = 0
                If (bb(i, 1) = aa(a, 1) And bb(i, 2) = aa(a, 2) And bb(i, 3) = aa(i, 3)) = True Then bb(i, 13) = aa(i, 13) : Exit For
            Next a
        Next i
        .Range("A3").Resize(UBound(bb), UBound(bb, 2)) = bb
    End With

    Cells(3, 1).Select
End Sub

Merci d'avance pour toute aide

Cordialement

Bonjour

Si tu joignais ton fichier, même rendu anonyme, tu aurais plus de chance d'avoir une réponse...

Bye !

Rechercher des sujets similaires à "erreur suite ajout ligne vba corriger code"