Enclencher une macro sur worksheet_change

Fermé
BoJav Messages postés 49 Date d'inscription mardi 23 février 2021 Statut Membre Dernière intervention 17 février 2022 - 10 févr. 2022 à 16:33
BoJav Messages postés 49 Date d'inscription mardi 23 février 2021 Statut Membre Dernière intervention 17 février 2022 - 15 févr. 2022 à 15:02
Bonjour,

J'ai créer une macro qui additionne les valeur des cellules d'une ligne et l'affiche dans une colonne ou une autre selon que le résultat de l'addition est positif ou négatif.
Je voudrais que cette macro se relance à chaque fois que je modifie les valeurs des cellules additionnées.

NB. le nombre de ligne va évoluer avec le temps.

Voici la macro

Sub Test()

Dim LR As Integer
Dim x As Integer

LR = Range("A500").End(xlUp).Row

    For i = LR To 3 Step -1
                
        Range("F" & i).FormulaR1C1 = "=RC[-4]+RC[-3]+RC[-2]+RC[-1]"
           
           x = Range("F" & i).Value
            
            If x >= 0 Then
                Cells(i, 6).Value = x
            Else
            
                Cells(i, 7).Value = x * -1
                Cells(i, 6).ClearContents
                
            End If
            
      Next

End Sub



J'ai tenté dans la worksheet de mettre sur change le code suivant :

Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Target, Range("B3:E300")) Is Nothing Then
Call Test(Intersect(Target, Range("B3:E300")))
End If

End Sub


Mais Excel indique Erreur de compilation, nombre d'arguments incorrect ou affectation de propriété incorrecte.

D'avance Merci pour votre aide

Configuration: Windows / Chrome 97.0.4692.71
A voir également:

4 réponses

yg_be Messages postés 22859 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 7 juin 2024 1 474
10 févr. 2022 à 17:36
bonjour Test() est déclaré sans argument, et appelé avec deux arguments,
Ce qui provoque l'erreur.
1
ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 160
Modifié le 13 févr. 2022 à 00:45
bonsoir le fil, bonsoir le forum,

Si j'ai bien compris, peut-être comme ça :
Private Sub Worksheet_Change(ByVal Target As Range)
Dim S As Double 'ou Integer ?

If Application.Intersect(Target, Columns("B:E")) Is Nothing Then Exit Sub
S = Application.WorksheetFunction.Sum(Cells(Target.Row, 2).Resize(1, 4))
If S >= 0 Then
    Cells(Target.Row, 6).Value = S: Cells(Target.Row, 7).Value = ""
Else
    Cells(Target.Row, 6).Value = "": Cells(Target.Row, 7).Value = S
End If
End Sub



1
BoJav Messages postés 49 Date d'inscription mardi 23 février 2021 Statut Membre Dernière intervention 17 février 2022
15 févr. 2022 à 11:50
Merci pour vos réponses.

Au final en enlevant (Intersect(Target, Range("B3:E300"))) dans le call de la macro ça semble marcher.
0
yg_be Messages postés 22859 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 7 juin 2024 1 474
15 févr. 2022 à 12:14
peux-tu alors marquer la discussion comme résolue?
0
BoJav Messages postés 49 Date d'inscription mardi 23 février 2021 Statut Membre Dernière intervention 17 février 2022
15 févr. 2022 à 15:02
ben je voudrais bien mais je n'ai pas le lien vert marquer comme résolu ??
0