Bonjour,
Il est tout à fait logique que ton code tourne en boucle, tu ne testes pas la cellule qui est modifiée, mais tu ne fais que tester la valeur de la cellule A1 à CHAQUE changement dans la feuille....
Or, à la fin, tu mets cette ligne :
Range("a2") = Range("a2") + Range("f1")
Il y a un changement, donc il contrôle de nouveau la valeur de A1, qui n'est toujours pas vide, donc c'est reparti pour un tour...
si tu modifies la cellule A1 uniquement, fais un test pour savoir si c'est bien celle-là qui est modifiée :
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Not Intersect(Target, Range("A1")) Is Nothing Then
If [A1] <> "" Then
Call MaMacro
End If
End If
End Sub
Bonne journée