Formule Excel personnalisée [Résolu]

Signaler
Messages postés
1
Date d'inscription
vendredi 25 juin 2021
Statut
Membre
Dernière intervention
28 juin 2021
-
Messages postés
16448
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
27 juillet 2021
-
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

Messages postés
16448
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
27 juillet 2021
880
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