Problème d'incompatibilité de type (erreur d'exécution 13)

Fermé
bebette - 3 juil. 2013 à 16:49
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 - 4 juil. 2013 à 10:45
Bonjour,

Bonjour à tous.

J'ai été vachement aidé par un membre pour un code ! (je ne sais pas ce que j'aurai fait sans lui)

J'ai encore un petit soucis et j'ai essayé toute les solution que je connaissais, ça ne marche pas...

Je vous explique mon problème, j'ai un macro qui permet de copier des données des feuilles "Tools" "Consommables" "Revisable" vers la première feuille lorsque la reférence est identique
Sauf que j'ai plusieurs cas ou les références des 3 feuilles citées n'apparaissent pas dans la première feuille... du coup (enfin je pense que c'est pour ca) j'ai une erreur.

J'ai essayé en mettant un condition (if / else) mais l'erreur persiste...
Si quelqu'un à un idée je suis preneur !

Voici le code
Sub Recap()
    Dim C As Range, F, Dico As Object, Tabl1() As String, Tabl2() As Integer
    Dim Res As String, Txt, Ligne As Long, Ctr As Long
    Set Dico = CreateObject("Scripting.Dictionary")
    Ligne = 1
    With Sheets("MPD_AMM")
        ReDim Tabl1(Application.CountA(.[E:E]) - 2)
        ReDim Tabl2(Application.CountA(.[E:E]) - 2, 2)
        Ctr = -1
        For I = 2 To .Cells(.Rows.Count, 5).End(xlUp).Row
            If .Cells(I, 5) <> "" Then
                Ctr = Ctr + 1
                Tabl1(Ctr) = .Cells(I, 5)
            End If
        Next I
        F = Array("Tools", "Consommables", "Revisables")
        .[E2:E2105].Clear
        .[R2:T2105].Clear
    End With
    For I = 0 To 2
        With Sheets(F(I))
            For Each C In .Range(.[B2], .Cells(.Rows.Count, 2).End(xlUp))
                If C.Offset(, -1) <> "" Then
                    Res = C.Offset(, -1)
                End If
                If Not Dico.exists(Res & "***" & I + 1 & "***" & C.Value) Then
                    Dico.Add Res & "***" & I + 1 & "***" & C.Value, Res & "***" & I + 1 & "***" & C.Value
                End If
            Next C
        End With
    Next I
    With Sheets("MPD_AMM")
        For Each Item In Dico.items
            Txt = Split(Item, "***")
            lig = Application.Match(Txt(0), Tabl1, 0) - 1
            Tabl2(lig, CInt(Txt(1)) - 1) = Tabl2(lig, CInt(Txt(1)) - 1) + 1
        Next Item
        For I = 0 To UBound(Tabl1)
            lig = 0
            For x = 0 To UBound(Tabl2, 2)
                If Tabl2(I, x) > lig Then lig = Tabl2(I, x)
            Next x
            For x = 1 To lig
                Ligne = Ligne + 1
                .Cells(Ligne, 5) = Tabl1(I)
            Next x
        Next I
        For Each Item In Dico.items
            For I = 2 To .Cells(.Rows.Count, 5).End(xlUp).Row
                Txt = Split(Item, "***")
                If .Cells(I, 5) = Txt(0) And .Cells(I, 17).Offset(, CInt(Txt(1))) = "" Then
                    .Cells(I, 17).Offset(, CInt(Txt(1))) = Txt(2)
                    Exit For
                End If
            Next I
        Next Item
        With .[E1].CurrentRegion
            .Borders.LineStyle = xlContinuous
            .BorderAround xlContinuous, xlThin, xlColorIndexAutomatic
        End With
        With .[E1].CurrentRegion.Offset(, 13).Resize(, 3)
            .Borders.LineStyle = xlContinuous
            .BorderAround xlContinuous, xlThin, xlColorIndexAutomatic
        End With
        Res = "E2"
        Application.DisplayAlerts = False
        For I = 2 To .Cells(.Rows.Count, 5).End(xlUp).Row
            If .Cells(I, 5) <> .Range(Res) Then
                .Range(.Cells(I, 5).Offset(-1), Range(Res)).Merge
                Res = .Cells(I, 5).Address
            End If
            If I = .Cells(.Rows.Count, 5).End(xlUp).Row Then
                .Range(.Cells(I, 5), Range(Res)).Merge
            End If
        Next I
        .Range(.[E2], .Cells(.Rows.Count, 5).End(xlUp)).VerticalAlignment = xlCenter
        Application.DisplayAlerts = True
    End With
End Sub




Avec le débogage, j'ai l'erreur liée à cette ligne

lig = Application.Match(Txt(0), Tabl1, 0) - 1



N'hésitez pas a demander si je ne suis pas assez clair !

Merci d'avance

G.


1 réponse

Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
4 juil. 2013 à 10:45
Bonjour,

lig est déclaré où ? et quel type lui est assigné ?
0