Formule Excel personnalisée

Résolu/Fermé
Marc-F_70 Messages postés 1 Date d'inscription vendredi 25 juin 2021 Statut Membre Dernière intervention 28 juin 2021 - 28 juin 2021 à 22:05
yg_be Messages postés 20753 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 2 décembre 2022 - 29 juin 2021 à 09:37
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 20753 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 2 décembre 2022 1 273
29 juin 2021 à 09:37
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