execution automatique de macro sur chgt de val cellule

excellentt

XLDnaute Nouveau
J'ai ecrit cette macro ( avec l'aide du forum )

Elle semblait bien marcher mais a de plus en plus de mal a s'executer ( je ne sais pas pourquoi )

Elle se lancais lorsque je changais une valeur dans la plage manuellement.

Y'a t'il une astuce pour que la macro se lance automatiquement si une valeur dans les cellules de la plage change ?

cdlt

Private Sub Worksheet_Change(ByVal Target As Range)

'Dim flag As Boolean


Dim i As Integer
Dim Plage As Range, Intersection As Range
If flag = True Then Exit Sub
flag = True
Application.EnableEvents = False
Set Plage = Range("B9:B55")
Set Intersection = Application.Intersect(Plage, Target)

If Not (Intersection Is Nothing) Then
With Sheets(Target.Worksheet.Name)
For i = 9 To 55 Step 1

If .Cells(i, 8).Value = "ACHAT" Then
If .Cells(i, 2).Value <> "FAUX" Then
If IsNumeric(.Cells(i, 7)) Then
If .Cells(i, 7).Value < .Cells(4, 2).Value Then
.Range(.Cells(i, 1), .Cells(i, 7)).Copy
Sheets("portefeuille- compte").Range("A9").PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Sheets("portefeuille- compte").Rows("9:9").Insert Shift:=xlDown
With Sheets("portefeuille- compte")
.Rows(8).Copy .Rows(9)
End With
.Range(.Cells(i, 1), .Cells(i, 7)).Copy
Sheets("histo").Range("A5").PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Sheets("histo").Rows("5:5").Insert Shift:=xlDown
Else
End If
Else
End If
Else
End If
Else
End If
Next i
End With
End If
flag = False
Application.EnableEvents = True

End Sub
 

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : execution automatique de macro sur chgt de val cellule

bonjour excellentt,

ton code se déclenche chaque fois que tu change de cellule
Private Sub Worksheet_Change(ByVal Target As Range)

essaie avec l'évènement suivant
Code:
Private Sub Worksheet_Calculate()
[COLOR="Blue"]ton code.................[/COLOR]
End Sub

et dis-nous
 

JNP

XLDnaute Barbatruc
Re : execution automatique de macro sur chgt de val cellule

Bonjour le forum :),
Tu ne peux pas compiler directement. Dans
Code:
Private Sub Worksheet_Change(ByVal [B][COLOR=red]Target[/COLOR][/B] As Range)
tu envoie la référence de la cellule qui vient de changer et que tu utilises à partir de
Code:
Set Intersection = Application.Intersect(Plage, [COLOR=red][B]Target[/B][/COLOR])

If Not ([COLOR=red][B]Intersection[/B][/COLOR] Is Nothing) Then
With Sheets([COLOR=red][B]Target[/B][/COLOR].Worksheet.Name)
alors qu'avec
Code:
Private Sub Worksheet_Calculate()
tu n'envoie aucune donnée, ce qui est logique puisque plusieurs cellules peuvent avoir été calculées en même temps.
Bonne soirée :cool:
 

Discussions similaires

Statistiques des forums

Discussions
312 231
Messages
2 086 447
Membres
103 213
dernier inscrit
Poupoule