Erreur 1004 méthode 'Range' dans boucle
Keyran
-
Keyran -
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') :
Merci de votre aide, je ne trouve pas du tout le soucis.
Rose
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
-
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 ?