Formule Excel personnalisée

Résolu
Marc-F_70 Messages postés 1 Date d'inscription   Statut Membre Dernière intervention   -  
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

J'ai un petit problème avec le code suivant :

' Feuil1 :
Function MaFonction()
Dim Feuil As Worksheet
Dim FeuilColl As Collection: Set FeuilColl = New Collection

FeuilColl.Add Worksheets("Feuil2")
FeuilColl.Add Worksheets("Feuil3")
FeuilColl.Add Worksheets("Feuil4")

' Je procède ainsi car je ne veux pas que toutes les feuilles du classeur soient affectées par la boucle qui suit :
For Each Feuil In FeuilColl
Feuil.Range("Cellule").Value = Me.Range("Cellule").Value ' C'est cette ligne qui pose problème. Si je la mets en commentaires, la fonction s'exécute correctement et la valeur 0 s'affiche dans la cellule CelluleDeMaFonction. Tel quel, elle s'interrompt et lqa valeur #Valeur s'affiche dans la cellule. Comment résoudre mon problème ?
Next
End Function

Private Sub Worksheet_Change(ByVal Target As Range)
' Ceci afin d'éviter une itération sans fin, car ce code est également inscrit dans Worksheet_Change de Feuil2.
If ((Me.Range("Cellule").Address = Target.Address) And (TypeName(Application.Caller) = "Error")) Then
Me.Range("CelluleDeMaFonction").Formula = "=Feuil1.MaFonction()"
End If
End Sub

' Feuil2 :
' Code identique, sauf que je remplace FeuilColl.Add Worksheets("Feuil2") par FeuilColl.Add Worksheets("Feuil1").


Ce que j'essai de faire, c'est que lorsque je change de valeur dans la cellule Cellule de la feuille Feuil1, cette même valeur s'inscrive dans la cellule Cellule de la feuille Feuil2, et vice-versa.

Si quelqu'un a une idée pour mon code ou pour une autre façon de procéder, j'attends de vos nouvelles...

1 réponse

yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
bonjour,
suggestion:
Private Sub Worksheet_Change(ByVal Target As Range)
    If [a1].Address = Target.Address Then
        Application.EnableEvents = False
        Sheets("deux").[a1] = Target
        Application.EnableEvents = True
    End If
End Sub
0