Erreur 424 que je ne comprends pas

Bonjour à toutes et à tous !

Je viens de débuter sur VBA que j'utilise pour un stage dans lequel j'ai d'énorme quantité de données à traiter.

Pour faciliter le traitement j'essaye de coder sur VBA.

Cette communauté m'a déjà rendu un fier service alors je reviens appeler à l'aide.

Deux codes, pourtant simples, me renvoient une "erreur 424, objet requis" et je n'arrive pas à les corriger.

Voici les deux codes en question :

Sub SupressionValeursNulles()
'

    With Sheets("correction")
        dl = .Cells(Rows.Count, 10).End(xlUp).Row

        For i = 2 To dl

            If .Cells(i, 10).Value = "0" Then cell.EntireRow.Delete

        Next i

    End With
End Sub

Sub SuppressionNuits()
'
' SuppressionHeureNuit Macro
' Supprime les données de 22h à 4h59

With Sheets("correction")
        dl = .Cells(Rows.Count, 7).End(xlUp).Row

    For i = 2 To dl
        gn = .Cells(i, 7)
        If cell.Value = "0" Then cell.EntireRow.Delete

        If cell.Value = "1" Then cell.EntireRow.Delete

        If cell.Value = "2" Then cell.EntireRow.Delete

        If cell.Value = "3" Then cell.EntireRow.Delete

        If cell.Value = "4" Then cell.EntireRow.Delete

        If cell.Value = "22" Then cell.EntireRow.Delete

        If cell.Value = "23" Then cell.EntireRow.Delete

    Next i

End With

End Sub

merci d'avance pour votre coup de main !

Bonjour Ugo

Il faut mettre "Option Explicit" en haut de chaque module

Ensuite dans les subroutines il faut déclarer les variables

On peut ajouter une gestion d'erreur "On Error goto" qui permettra d'avoir du détail sur une erreur avec une commande "Debug.Print err.Number & " " & err.Description

ce n'est pas qu'une bonne habitude, c'est indispensable.

Ensuite on va le menu "Débogage et on lance "Compiler VBAProject"

Si ceci est fait on peut poursuivre

Bonjour !

Donc si je comprends bien, j'écris l'instruction "Option Explicit" entre le nom du sub et le With, Dans le With je déclare "i" (mon numéro de ligne) comme un entier ?

Ensuite, pour la gestion d'erreur, je renvoie où ?

bonjour,

et surtout après le With ne pas oublier de semer quelques points (.) devant chaque Cells ( .Cells...)

A+

la faute la plus importante, quand on fait de trucs parreil (delete rows, ...) c'est de commencer au bout et de reculer, donc

For i = dl to 2 step -1

autrement on risque d'oublier un ou plusieurs regles successives avec valeur "0" !!!

2ieme remarque

 Select Case cell.Value
          Case "0", "1", "2", "3", "4", "22": cell.EntireRow.Delete ""
     End Select

3ieme remarque, au lieu d'effacer plusieurs fois une ligne, fait-le en un fois

Sub Plus_De_Vitesse()
     Dim UN

     With Sheets("correction")
          dl = .Cells(Rows.Count, 10).End(xlUp).Row
          Set UN = .Range("A1")     'une cellulle hors la colonne 10

          For i = dl To 2 Step -1
               If .Cells(i, 10).Value = "0" Then Set UN = Union(UN, .Cells(i, 10))    'toutes ces cellulles
          Next i

          If UN.Cells.Count > 1 Then
               Set UN = Intersect(UN, .Columns(10))     'exclude la cellulle A1
               UN.EntireRow.Delete     'tous les autres cellulles
          End If

     End With
End Sub

Bonjour,

Merci pour le programme de suppression des lignes comportant une valeur nulle, il fonctionne super bien !

Je n'ai pas bien compris vos recommandations sur le programme des suppressions des heures de nuits mais voici un programme qui fonctionne :

Sub SuppressionNuits()
'
' SuppressionHeureNuit Macro
' Supprime les données de 22h à 4h59

    Dim i As Long
With Sheets("correction")

        dl = .Cells(Rows.Count, 7).End(xlUp).Row
    For i = dl To 2 Step -1

    If UCase(Cells(i, 7)) Like 0 Then Rows(i).EntireRow.Delete
    If UCase(Cells(i, 7)) Like 1 Then Rows(i).EntireRow.Delete
    If UCase(Cells(i, 7)) Like 2 Then Rows(i).EntireRow.Delete
    If UCase(Cells(i, 7)) Like 3 Then Rows(i).EntireRow.Delete
    If UCase(Cells(i, 7)) Like 4 Then Rows(i).EntireRow.Delete
    If UCase(Cells(i, 7)) Like 22 Then Rows(i).EntireRow.Delete
    If UCase(Cells(i, 7)) Like 23 Then Rows(i).EntireRow.Delete

Next i
End With

End Sub

Merci à toutes et à tous pour votre aide !

Ugo

le contenu de ces cellules, c'est un numéro sous forme de string (texte) ou un vrai numéro ?

avec cette construction, c'est plus facile à selectionner.

' strings
Select Case cell.Value
          Case "0", "1", "2", "3", "4", "22": cell.EntireRow.Delete ""
     End Select

'des valeurs integer
 Select Case cell.Value
          Case 0 to 4, 22 to 23: cell.EntireRow.Delete ""
     End Select
Rechercher des sujets similaires à "erreur 424 que comprends pas"