Masquer le message [Avertissement de référence circulaire]
Bonjour à tous,
J'ai créé un fichier Excel/VBA qui, de part son codage, créé des références circulaires. Ces références circulaires sont essentielles pour la méthode de travail que nous avons. Voici un bref résumé :
- L'utilisateur de la feuille mère modifie la couleur de la case B2, les cases B2 des autres feuilles sont également modifiées de la même couleur (feuilles filles).
- Les feuilles filles sont autonomes, l'utilisateur peut modifier la couleur d'une case sans porter de modifications sur les autres feuilles.
- L'utilisateur de la feuille mère modifie, de nouveau, la couleur de la case B2 : cette nouvelle modification s'applique sur toutes les autres feuilles du classeur.
PS: Nous utilisons des codes (1, 2, 3) qui sont transformés en couleur avec une mise en forme conditionnelle.
Cette méthode entraine donc la problématique des références circulaires. Ainsi donc, le message d'information suivant apparaît à chaque ouverture :
J'ai déjà parcouru le forum à la recherche d'un moyen pour faire disparaître ce message. J'ai appris qu'il suffisait d'activer le calcul itératif dans les options. Toutefois, l'activation étant volatile, Je suis tombé sur ce sujet : https://forum.excel-pratique.com/excel/regler-le-calcul-iteratif-une-fois-pour-toutes-dans-un-fichi-t46756.html proposait d'activer le calcul itératif à chaque ouverture du classeur, grâce à la création d'une macro événementielle.
J'ai testé cette technique et malheureusement le message apparaît toujours.
De plus, je suis confronté une contrainte : nous activons la fonction du classeur partagé pour travailler ensemble sur le classeur.
Ma question : y-a-t-il un moyen de masquer ce message (avec VBA par exemple) lors de l'ouverture de mon fichier ?
Pour vous aider je vous joint :
> Mon code permettant de copier une mise en forme sur plusieurs feuille de classeur :
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Sh As Worksheet
If Not Intersect(Target, [Build1]) Is Nothing Then
For Each Sh In Sheets
Sheets("Feuille Fille 1").Cells(Target.Row, Target.Column) = Target.Value
Sheets("Feuille Fille 2").Cells(Target.Row, Target.Column) = Target.Value
Sheets("Feuille Fille 3").Cells(Target.Row, Target.Column) = Target.Value
Sheets("Feuille Fille 4").Cells(Target.Row, Target.Column) = Target.Value
Sheets("Feuille Fille 5").Cells(Target.Row, Target.Column) = Target.Value
Next Sh
End If
End Sub
> Le code de la macro événementielle que j'ai inclus dans ThisWorkBook :
Private Sub Workbook_Open()
With Application 'Active par défaut le calcul itératif
.Iteration = True
.MaxIterations = 1000
.MaxChange = 0.00001
End With
End Sub
Merci de votre aide et bonne soirée,
Baptiste.
Bonjour
A tester
Private Sub Workbook_Open()
With Application 'Active par défaut le calcul itératif
Application.DisplayAlerts = False
.Iteration = True
.MaxIterations = 1000
.MaxChange = 0.00001
Application.DisplayAlerts = True
End With
End Sub
Cordialement
Bonsoir,
Cette méthode entraine donc la problématique des références circulaires.
Pour avoir cet avertissement, c'est que tu dois avoir des formules, dont tu n'as pas parlé, qui le provoque...
Tu devrais aussi éliminer les incohérences de ta procédure Change !
Cordialement.
Bonjour MFerrand et Amadeus,
Finalement j'avais bien une référence circulaire présente sur quelques feuilles de calcul que je me suis empressé de supprimer.
Tout fonctionne parfaitement désormais. Merci beaucoup !
Baptiste.