Erreur définie par l'application ou par l'objet

Bonjour,

je me tourne une fois de plus vers vous car je suis confronté à un problème lors de l’exécution de mon code.

Lorsque mon code atteint ma ligne :

If .Cells(h, 11) = "Yes" & ligne = Lignes(j, 1) Then

il bugg

Le code en entier:

Public Sub Recherche()
Dim Plage As Range
Dim Lignes(), i As Long
Dim Texte As String
Dim Flag As Boolean
P_ligne = Sheets("Écriture").Range("D1").End(xlDown).Row + 1
D_ligne = Sheets("Écriture").Cells(Rows.Count, "D").End(xlUp).Row
Dim j As Integer
Dim h As Integer
Dim ligne As Integer
Dim Nbre As Integer
Dim ws As Worksheet

For i = 1 To D_ligne
    If Sheets("Écriture").Cells(i, "B").Value = "m --" Then
                Sheets("Écriture").Cells(i, "A").Clear
    Exit For
    End If
Next i
For i = 1 To D_ligne
    If Sheets("Écriture").Cells(i, "A").Value = "Program Name" Then
        Sheets("Écriture").Cells(i, "A").Offset(0, 1).Clear
        Exit For
    End If
Next i

Set Plage = Sheets("Écriture").Columns(2) 'plage de recherche
Texte = "#*"   'expression cherchée
Flag = Find_Next(Plage, Texte, Lignes())  'appel de la fonction
If Flag Then  'si fonction retourne Vrai = expression trouvée dans la plage
    For i = LBound(Lignes) To UBound(Lignes)   'restitution des lignes correspondantes
        Debug.Print Lignes(i, 1) & "-->  " & Lignes(i, 2) & "-->  " & Lignes(i, 3) '1 n°ligne, 2 Nom Machine Brut, 3 Nom Machine

    Next i
Else
    'MsgBox "L'expression : " & Texte & " n'a pas été trouvée dans la plage : " & Plage.Address
End If

Nbre = Application.CountIf(Plage, Texte)
Set ws = Worksheets("Écriture")
ligne = 0
With ws
For j = LBound(Lignes) To UBound(Lignes)
    For h = 0 To D_ligne
        If .Cells(h, 11) = "Yes" & ligne = Lignes(j, 1) Then
            .Cells(h, 12) = Lignes(j, 3)
        Else: End If
        ligne = ligne + 1
    Next h
Next j
End With

End Sub

'Sources : Net
Public Function Find_Next(Rng As Range, Texte As String, Tbl()) As Boolean

Dim Nbre As Integer
Dim Lig As Long, Cptr As Long

    Nbre = Application.CountIf(Rng, Texte)
    If Nbre > 0 Then 'Nbre contient le nombre de machines
        ReDim Tbl(Nbre - 1, 1 To 3)
        Lig = 1
        For Cptr = 0 To Nbre - 1
            Lig = Rng.Find(Texte, Cells(Lig, Rng.Column), xlValues).Row
            Tbl(Cptr, 1) = Lig ' tableau qui contient les numéro de ligne pour chaque machine
            Tbl(Cptr, 2) = Cells(Lig, Rng.Column).Value 'tableau qui contient le nom de chaque machines
            Tbl(Cptr, 3) = Mid(Tbl(Cptr, 2), 4, 4)
            If Tbl(Cptr, 2) = "#1(FX-2)" Then
                Tbl(Cptr, 3) = Replace(Tbl(Cptr, 3), "FX-2", "FX-21")
            ElseIf Tbl(Cptr, 2) = "#2(FX-2)" Then
                Tbl(Cptr, 3) = Replace(Tbl(Cptr, 3), "FX-2", "FX-22")
            ElseIf Tbl(Cptr, 2) = "#1(FX-1R)" Then
                Tbl(Cptr, 3) = Replace(Tbl(Cptr, 3), "FX-1", "FX-21")
            Else:

            End If
        Next
        Debug.Print Nbre
    Else
        GoTo Absent
    End If
    Find_Next = True
    Exit Function
Absent:
    Find_Next = False
End Function

bonjour,

Normal :

h= 0

or il ne peut pas exister de .Cells(h, 11)...

la ligne 0 n'existe pas...

A+

Merci, j'ai honte...

Rechercher des sujets similaires à "erreur definie application objet"