Erreur 1004 méthode 'Range' dans boucle [Fermé]

Signaler
-
 Keyran -
Bonjour,

J'avais un macro très simple qui me permettait de supprimer la ligne d'un tableau si celle-ci comportait moins de 4 valeurs. Cela fonctionnait, mais j'ai voulu améliorer un peu tout ça en lançant le traitement automatiquement sur toutes les feuilles de mon classeur.
Depuis, mon code ne fonctionne plus et l'erreur s'affiche : "Erreur d'exécution '1004' : la méthode 'Range' de l'objet 'Worksheets' a échoué"

Je vous mets ici mon code défaillant. En gras ce que j'ai modifié depuis le programme qui fonctionnait (boucle + changé Sheets('Feuil1') en 'FS') :

<bold>Dim FS As Worksheet
For Each FS In Worksheets</bold>
Dim i As Integer
For i = 1700 To 3 Step -1
    If Application.WorksheetFunction.CountBlank(<bold>FS</bold>.Range(Cells(i, 30), Cells(i, 39))) > 4 Then
        Range(Cells(i, 29), Cells(i, 39)).Delete Shift:=xlUp
    End If
Next i
<bold>Next FS</bold>


Merci de votre aide, je ne trouve pas du tout le soucis.

Rose
EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.

2 réponses

Messages postés
1412
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
9 mars 2021
153
Bonjour Keyran, bonjour le forum,

Peut-être comme ça :
Sub Macro1()
Dim FS As Worksheet
Dim i As Integer

For Each FS In Worksheets
    For i = 1700 To 3 Step -1
        If Application.WorksheetFunction.CountBlank(FS.Range(FS.Cells(i, 30), FS.Cells(i, 39))) > 4 Then
        FS.Range(FS.Cells(i, 29), FS.Cells(i, 39)).Delete Shift:=xlUp
    End If
    Next i
Next FS
End Sub


Résolu : Il me suffisait simplement de taper 'FS.Activate' après la ligne For Each FS In WorkSheets.

Ce n'est peut-être pas le plus élégant mais ça fonctionne, merci encore de votre aide !

PS : ayant posté ce message en invité, je ne suis pas reconnue comme son auteur et n'arrive pas à le mettre en résolu, une idée ?