erreur d'exécution 424

  • Initiateur de la discussion Initiateur de la discussion meldja
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

meldja

XLDnaute Impliqué
Bonjour,
Je suis en train de faire une petite macro pour un ami.
Sur un tableau dans la première feuille du classeur, il a un résultat en colonne O.
Il s'agit du stock restant qui se calcul avec la quantité totale (colonne G) moins les quantités vendues en colonne J et L.
Il voulait que si la quantité restante (en colonne O) est égale à zéro, la ligne soit recopiée à la fin d'un tableau sur la deuxième feuille, puis que la ligne recopiée soit supprimée dans la première feuille.
J'ai pensé faire la macro avec l'évènement Change, lorsqu'il rentre une quantité vendue en colonne J ou L.
La macro s'exécute bien, mais j'ai une erreur d'exécution 424 (Objet requis).
Les lignes en couleur rouge sont surlignées :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Integer
Dim x As Integer
x = Sheets(2).Range("A5000").End(xlUp).Offset(1, 0).Row
For i = 3 To 5000
   [COLOR="Red"] If Target.Address = "$J$" & i And Range("O" & i).Value = 0 Or _
    Target.Address = "$L$" & i And Range("O" & i).Value = 0 Then[/COLOR]

    Range("A" & i & ":M" & i).Copy
    Sheets(2).Activate
    Sheets(2).Range("A" & x).Select
    ActiveSheet.Paste
    Sheets(1).Rows(i).Delete

    End If
    
Next i
End Sub
Je pense que c'est la dernière ligne (Sheets(1).Rows(i).delete) qui pose problème, car lorsque je la supprime, plus d'erreur.
J'ai fait plein d'essais, mais je n'ai pas trouvé de solution.
Je joins le fichier en question.
Merci d'avance et bonne journée.
 

Pièces jointes

Re : erreur d'exécution 424

Salut,

Le probleme vient de la boucle (qui ne sert a rien).

Une version simplifié:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim x As Integer

    If (Target.Column = 10 Or Target.Column = 12) And Range("O" & Target.Row).Value = 0 Then
        x = Sheets(2).Range("A65536").End(xlUp).Offset(1, 0).Row
        Range("A" & Target.Row & ":M" & Target.Row).Copy Sheets(2).Range("A" & x)
        Sheets(1).Rows(Target.Row).Delete
    End If
End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
8
Affichages
233
Réponses
2
Affichages
202
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
479
Réponses
5
Affichages
232
Réponses
4
Affichages
177
Réponses
25
Affichages
607
Réponses
3
Affichages
210
Retour