IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Excel Discussion :

Détection d'une "Référence circulaire" par MACRO [XL-2016]


Sujet :

Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2015
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2015
    Messages : 12
    Points : 13
    Points
    13
    Par défaut Détection d'une "Référence circulaire" par MACRO
    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
    Fichiers attachés Fichiers attachés

  2. #2
    Membre à l'essai
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2015
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2015
    Messages : 12
    Points : 13
    Points
    13
    Par défaut ... C'est toujours quand on soumet un post que l'on trouve la solution
    Bon... Et bien je n'ai rien à ajouter, tout est dans le titre...

    Je ne savais pas que les MACROs pouvaient bidouiller les Options d'Excel et donc activer le mode de calcul Automatique...

    Voici mes nouvelles lignes de codes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
        PreviousConfig = Application.Calculation
     
        If (PreviousConfig <> xlAutomatic) Then
            Application.Calculation = xlAutomatic
        End If
     
       'ICI mon process de détection
     
        If (PreviousConfig <> xlAutomatic) Then
            Application.Calculation = PreviousConfig
        End If
    Bonne journée,

    Nadreoh

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Référence circulaire causée par une requete A
    Par mcollong dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 06/02/2014, 14h07
  2. [XL-2010] Comment ajouter une référence à un XLA par macro ?
    Par Siefch1 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 25/03/2013, 15h38
  3. [AC-2007] référence circulaire causé par requête
    Par le_sayan dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 09/07/2010, 16h42
  4. [RegEx] Détection d'une chaine présente plusieurs fois par ligne
    Par Tchupacabra dans le forum Langage
    Réponses: 6
    Dernier message: 03/07/2009, 16h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo