VBA variable objet ou variabe de bloc With non définie

Fermé
Miss_tik76 Messages postés 26 Date d'inscription dimanche 3 août 2008 Statut Membre Dernière intervention 23 janvier 2014 - 5 oct. 2012 à 14:57
 Utilisateur anonyme - 9 oct. 2012 à 19:49
Bonjour,

Voici mon code :

Private Sub ok_click()

    Sheets("Donnees").Select

    Dim DerligC, Iter, LigC As Integer
    Dim Col_C As Range
    Dim Nb_Tr As Long

    Application.ScreenUpdating = False

    With Worksheets("Donnees")
'Recherche derniere ligne colonne C
        DerligC = .Columns("C").Find(commande.Value, , , , , xlPrevious).Row
        Set Col_C = .Range("C2:C" & DerligC)
        
'Pour diminuer le temps de recherche
        Nb_Tr = Application.CountIf(Col_C, commande.Value)
        If Nb_Tr > 0 Then
            LigC = 1

            For Iter = 1 To DerligC Step 1
            
'Recherche de la ligne à supprimer (xlWhole recherche une valeur exacte)
                LigC = .Columns("C").Find(commande.Value, .Cells(LigC, "C"), , xlWhole).Row
                If Cells(LigC, "H").Value = produit.Value And Cells(LigC, "E").Value = delai.Value Then
                    Rows(LigC).Select
                    Selection.Delete Shift:=xlUp
                Else
                    Unload Me
                End If
            Next Iter
        End If
    End With
    
    Application.ScreenUpdating = True
  
    Unload Me

End Sub


Je ne comprends pas pourquoi à la dernière ittération le programme bug et affiche le message suivant : "variable objet ou variabe de bloc With non définie"

Merci par avance pour votre aide !

5 réponses

Miss_tik76 Messages postés 26 Date d'inscription dimanche 3 août 2008 Statut Membre Dernière intervention 23 janvier 2014 1
5 oct. 2012 à 15:53
Voici mon code suite à vos explications, mais j'ai toujours la même erreur arrivé à la dernière ittération :

Private Sub ok_click()

    Sheets("Donnees").Select

    Dim DerligC, Iter As Integer
    Dim LigC As Long
    Dim Col_C As Range
    Dim Nb_Tr As Long

    Application.ScreenUpdating = False

    With ActiveSheet

'Recherche derniere ligne colonne K
        DerligC = .Columns("C").Find(commande.Value, , , , , xlPrevious).Row
        Set Col_C = .Range("C2:C" & DerligC)
        
'Pour diminuer le temps de recherche
        Nb_Tr = Application.CountIf(Col_C, commande.Value)
        If Nb_Tr > 0 Then
            LigC = 1

            For Iter = DerligC To 1 Step -1
            
'Recherche de la position pour copier la ligne (xlWhole recherche une valeur exacte)
                LigC = .Columns("C").Find(commande.Value, .Cells(LigC, "C"), , xlWhole).Row
                If .Cells(LigC, "H").Value = produit.Value And .Cells(LigC, "E").Value = delai.Value Then
                    Rows(LigC).Select
                    Selection.Delete Shift:=xlUp
                Else
                    Unload Me
                End If
            Next Iter
        End If
    End With
    
    Application.ScreenUpdating = True
  
    Unload Me

End Sub
1