Bonjour à tous,
Ce n'est pas dans mon habitude de publier un nouveau post car en général je trouve tout ce qu'il me faut sur nos Forums. Mais cette fois-ci, je bloque...
Après des heures passées à chercher cette Information, je viens donc vers vous pour essayer de résoudre mon problème.
(1) Présentation du cas d'étude:
Mon document Excel va servir d'interface utilisateur pour insérer des données via formulaire.
Ces utilisateurs Lambda peuvent avoir aucune connaissance d'Excel et Excel VBA. Il va donc falloir tout automatiser de a à z afin d'éviter toute erreur de saisie.
Lors d'une entrée du formulaire, l'utilisateur peut avoir commis une erreur qui va engendrer une "Référence circulaire". (Rappel: "Référence circulaire" est une boucle générée par formule entre deux ou plusieurs cellules. Voir ma pièce jointe, Feuille "Exemple1".)
Celle-ci apparaitra lorsqu'une formule d'une cellule Excel sera modifiée par MACRO.
Si cette "Référence circulaire" apparait, pas de panique, mon document Excel devra simplement retourner un message d'alerte pour prévenir l'utilisateur d'effectuer une correction de son entrée.
(2) Conditions d'utilisation:
Mon document ne part pas à zéro. J'ai dors et déjà réussi à détecter une "Référence circulaire" si l'option "mode de calcul Automatique" est activée (Fichier>Option>Formules>Mode de calcul>Automatique). Voir ma pièce jointe, feuille "Exemple2".
Je rappelle que l'utilisateur Lambda peut avoir aucune connaissance d'Excel. Cette fameuse Option pourrait donc etre configurée sur "Manuel" (Fichier>Option>Formules>Mode de calcul>Manuel).
Soit, dans ma pièce jointe j'ai également fourni un exemple qui fonctionne (feuille "Exemple3"). MAIS...
Cette exemple a besoin de traiter de manière récursive l'ensemble des cellules concernées en appliquant la ligne de Code suivante : Range("cellule concernée").Calculate
(3) Probleme:
"Bon bah si tu as trouvée une solution, pourquoi rédiges-tu ce post???"
Eh bien ma solution ne me convient pas du tout à vrai dire. Dans ma pièce jointe, j'ai volontairement simplifier le problème pour vous illustrer mes propos.
Mon document final va devoir gérer entre 100 et 1000 cellules qui pourraient contenir des "Références circulaires".
Or ma solution est obligée d'effectuer un Scan récursif et redondant qui va fortement allourdir mon temps de process...
Si l'utilisateur Lambda est confronté à un "sablier" du au temps de process, il va abandonner sa requete et me transmettre que mon document Excel est à jetter.
Et en sachant qu'il se peut qu'un utilisateur effectue une dizaine voir centaine de requetes de ce type en dix minutes, il aura entièrement raison.
(4) Ma question:
Quelqu'un pourrait-il m'indiquer une autre méthode de détection de "Référence circulaire" lorsque l'option "Manuel" d'Excel est activée? (Fichier>Option>Formules>Mode de calcul>Manuel)
Cette méthode devra impérativement prendre le moins de temps de process que possible.
Petite précision: mon choix de détection de "Référence circulaire" est murement réfléchi. Je m'attends donc à recevoir des solutions directes et non des conseils ou méthodes pour contourner mon problème...
(5) Pièce jointe:
Feuille "Exemple1" - Indique qu'Excel détecte la présence de "Référence circulaire", et ce, meme en mode "Manuel" (Fichier>Option>Formules>Mode de calcul>Manuel).
Feuille "Exemple2" - Ma première solution, fonctionnant parfaitement en mode "Automatique" (Fichier>Option>Formules>Mode de calcul>Automatique).
Feuille "Exemple3" - Mon deuxiéme solution, à modifier, fonctionnant en mode "Manuel".
J'espère que toutes mes explications seront Claires et je resterai très actif durant toute la semaine qui vient afin de regarder vos réponses (je croise les doigts pour que quelqu'un puisse me débloquer...),
Nadreoh
Partager