Désactiver les itérations/références circulaires à l'ouverture d'un fichier

Private Sub Workbook_Open()

 Application.Iteration = True

End Sub

Bonjour à toutes et à tous,

Comment peut-on enlever le message d'erreur des références circulaires à l'ouverture du fichier ?

J'ai un code d'un OPEN Workbook, mais les itérations se désactivent après la POP-UP.

Donc le code fonctionne mais s'active trop tard....

D'avance merci !

Bonjour Vincent_SL7

Quelle question

En modifiant les formules qui font les références circulaires...

Dans le menu Formules -> Groupe Vérification

image

A+

Re Bruno, Au fait ma référence circulaire ne doit pas être corrigée car elle est voulue. Peut-on peut-être autorisé certain calcul à référence circulaire ? La question initial est pourquoi j'ai la pop up référence circulaire si dans mon Open_workbook il y a l'activation des références circulaires.. Comment je peux faire pour activer tout de suite les itérations ?

Bonjour Vincent,

Perso, j'ai toujours évité de faire des calculs itératifs,
je me suis souvent rendu compte que ça pouvait être dangereux.

Sinon pour résoudre "peut-être"

Private Sub Workbook_Open()
  Application.DisplayAlerts = False
  Application.Iteration = True
End Sub

A+

Bonjour,

et si tu coches le calcul itératif dans les options/Formules ?
eric

Hello Eric & BrunoM45, Pour Bruno même en désactivant les alertes ça s'effectue par la suite tout de même.... donc j'ai le message d'erreur de référence circulaires et ensuite il désactive le reste. Eric, le problème est que normalement le calcul itératif est pour le par défaut de l'utilisateur, et je n'aimerai pas mettre par défaut le calcul itératif car lorsque mes collègues sortent du fichier il y a un évent BeforeClose qui met le calcul itératif en false... Je ne sais pas quoi faire

Bonjour,

à tout hasard j'ai testé avec le vieux Sub auto_open(), mais non, il ne s'exécute pas avant non plus.
Une solution pourrait être un fichier intermédiaire qui s'occupe d'activer le calcul itératif, puis ouvre ton fichier principal (qui devient annexe pour le coup)
eric

Bonjour, Par exemple que ça ouvre un fichier excel nommé "intéruption" dans le disque M ? Très bonne idée, je vais essayer et je vous tiens au courant.

Re,

j'ai essayé avec le code ci-dessous, j'ai quand même le message qui apparaît et arrête le code.

Autre idée ?

Private Sub Workbook_Open()

Application.DisplayAlerts = False
 Application.Iteration = True

 Workbooks.Open Filename:="chemin\Interuption.xlsx"

 Application.DisplayAlerts = False
 Application.Iteration = True

Workbooks("Interuption").Close Savechanges:=False

End Sub

Sinon j'avais utilisé le code ci-dessous pour autre chose, qui permettait d'intercepter, mais je ne comprends pas trop ce code...Par contre à adapter avec le ThisworkBook du fichier Excel

Dim WithEvents App As Excel.Application

Private Sub Workbook_Open()
  Set App = Excel.Application
End Sub

Private Sub App_WorkbookOpen(ByVal Wb As Workbook)
  'Intercepte l'ouverture de tout classeur

  If Wb.Name <> "PERSONAL.XLSB" Then

Bonjour,

à mon avis ça ne changera rien.
Que ce soit l'événement d'application ou l'événement classeur c'est toujours Workbook Open.

Bah si, ça a l'air de fonctionner en faisant les choses dans le bon ordre.
Il faut rétablir après la fermeture du classeur avec les ref circulaires.
Si jamais dans la vraie vie tu enregistres le classeur, il faudra peut-être ajouter une tempo le temps qu'il finisse son travail

Private Sub Workbook_Open()

    Application.DisplayAlerts = False
    Application.Iteration = True
    Workbooks.Open Filename:="E:\Téléchargement Chrome\test.xlsx"
'Stop

    Workbooks("test.xlsx").Close Savechanges:=False
    Application.DisplayAlerts = True
    Application.Iteration = False
End Sub

Je n'ai aucun message
eric

PS : j'ai laissé le .DisplayAlerts = False mais dans ce cadre il ne sert à rien, autant le supprimer

PS2 : un doute subit m'assaille : un calcul itératif est parfois long. Tu as pensé à contrôler que les calculs sur feuille soient bien finis pour éviter que l'utilisateur n'ait un résultat intermédiaire sans le savoir ?

Re Eriiic,

Je viens d'essayer avec ton code, j'ai quand même le message des références circulaires qui apparaît avant l'ouverture du fichier d'interception...

Est-ce peut-être à cause que le fichier est très volumineux ? 4000KO ?

Je commence à perdre espoir ahah.

Bonjour,

essaie d'ajouter une tempo avant :

Sub timerS(t As Double)
    ' tempo t en secondes décimales
        Dim s As Double
    s = Timer: Do While Timer < s + t: DoEvents: Loop
End Sub

dans ton code :

'Appel :
timerS 1

bien je sois dubitatif...
eric

Rechercher des sujets similaires à "desactiver iterations references circulaires ouverture fichier"