Objet requis Err 424

Résolu
Bonjour,

Voici le problème (qui doit être bidon), je ne comprend pas pourquoi à cette ligne
 codeActuel = Worksheets(1).range("D" & cellF1.Row).Value
Il me dis "objet requis", après debugging il semblerait que
cellF1.Row
ne correspond à rien.

Le but de ce programme est de supprimer les cas unique, si le code fournisseur actuel est différent du précèdent, on enlève la ligne actuel sinon on fait rien.

codeActuel = Worksheets(1).range("D2").Value
LastLineFeuil1 = Sheets("ART305FZ").range("D" & Rows.Count).End(xlUp).Row
Set RangeF1 = Sheets("ART305FZ").range("D2:D" & LastLineFeuil1)

For Each cellF1 In RangeF1
If (StrComp(Worksheets(1).range("D" & cellF1.Row),fournisseur,vbTextCompare) <> 0) Then
Worksheets(1).range("D" & cellF1.Row).EntireRow.Delete
End If
codeActuel = Worksheets(1).range("D" & cellF1.Row).Value
Next


C'est d'autant plus ridicule que j'ai déjà réussi à corriger cette erreur mais là ça passe pas :/

1 réponse

  1. Pour supprimer les lignes, il faut aller de la dernière vers la première !
    1. Je craint que ça ne change pas le problème actuel.
    2. bonjour,

      en fait tu n'as pas définit ce qu'était cell1

      essaie :

      Dim cell1 As Range

      codeActuel = Worksheets(1).range("D2").Value
      LastLineFeuil1 = Sheets("ART305FZ").range("D" & Rows.Count).End(xlUp).Row
      Set RangeF1 = Sheets("ART305FZ").range("D2:D" & LastLineFeuil1)

      For Each cellF1 In RangeF1
      If (StrComp(Worksheets(1).range("D" & cellF1.Row),fournisseur,vbTextCompare) <> 0) Then
      Worksheets(1).range("D" & cellF1.Row).EntireRow.Delete
      End If
      codeActuel = Worksheets(1).range("D" & cellF1.Row).Value
      Next
    3. @melanie1324Bonjour Mélanie

      D'où l'intérêt de commencer par chaque module par
      Option Explicit

      C'est pas Cell1 mais CellF1 :
      Dim CellF1 as Range

      Mais crains que le problème soit ailleurs (.Delete a pour effet de mettre CellF1 à Nothing)
    4. @Patrice33740Oui merci, (j'ai trouver un peu avant mais ça me permet de confirmer) c'était effectivement ça le problème dans le cas ou la ligne est supprimer la valeur CellF1.Row n'existe plus.

      Par ailleurs je ne vous ai montré que la parti du programme en lui même la déclaration des variables est au dessus :)
    5. @ShadorbUne des solutions consiste à utiliser un offset(1) pour le test et pour la suppression.