Objet requis Err 424

Résolu/Fermé
Shadorb Messages postés 53 Date d'inscription lundi 4 avril 2016 Statut Membre Dernière intervention 20 juin 2016 - 18 avril 2016 à 09:43
Shadorb Messages postés 53 Date d'inscription lundi 4 avril 2016 Statut Membre Dernière intervention 20 juin 2016 - 18 avril 2016 à 16:23
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

Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 775
18 avril 2016 à 10:41
Pour supprimer les lignes, il faut aller de la dernière vers la première !
0
Shadorb Messages postés 53 Date d'inscription lundi 4 avril 2016 Statut Membre Dernière intervention 20 juin 2016
18 avril 2016 à 13:30
Je craint que ça ne change pas le problème actuel.
0
melanie1324 Messages postés 1505 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 31 janvier 2018 154
18 avril 2016 à 13:37
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
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 775 > melanie1324 Messages postés 1505 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 31 janvier 2018
18 avril 2016 à 13:54
Bonjour 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)
0
Shadorb Messages postés 53 Date d'inscription lundi 4 avril 2016 Statut Membre Dernière intervention 20 juin 2016 > Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023
Modifié par Shadorb le 18/04/2016 à 14:06
Oui 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 :)
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 775 > Shadorb Messages postés 53 Date d'inscription lundi 4 avril 2016 Statut Membre Dernière intervention 20 juin 2016
18 avril 2016 à 14:48
Une des solutions consiste à utiliser un offset(1) pour le test et pour la suppression.
0