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

Macros et VBA Excel Discussion :

[CircleInvalid] comportement totalement incompréhensible


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 92
    Par défaut [CircleInvalid] comportement totalement incompréhensible
    Bonjour,

    Je viens demander votre aide, car là "je pète un plomb".

    J'ai une feuille avec des cellules qui ont des validations.

    Si je clique via le menu sur "Entourer les données non valides", j'ai bien les ronds rouges qui apparaissent aux bons endroits.

    En revanche, si j'exécute le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveSheet.CircleInvalid
    Je n'ai aucun rond qui ne s'affiche (c'est pourtant exactement ce code qui est généré quand on enregistre une macro et qu'on utilise la fonction "Entourer les données non valides").

    J'ai "tout" essayé, appeler CircleInvalid de différentes manières (Worksheets(index), Worksheets("nom de feuille") etc ...) rien y fait.

    Autre bizarrerie : Si j'entoure les données non valide via l'interface, et que j'exécute ensuite via VBA un "CircleInvalid", je n'ai alors plus aucun cercle, ils ont été supprimés par le "CircleInvalid".

    Pour info, ma feuille fonctionnai très bien avant ... (avant quoi ? si je pouvais le savoir justement ...)

    Merci d'avance pour votre aide.

    a+
    Damran

  2. #2
    Membre éclairé Avatar de tomy7
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    540
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 540
    Par défaut
    peux tu poster ton fichier?

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 92
    Par défaut
    Bonjour,

    Je ne peux pas me permettre de passer ici la feuille Excel (données/structure confidentielles).

    Je vais donc essayer d'épurer complétement la feuille, en vérifiant bien que le "bug" est toujours là, puis je passerai cette version épuré.


    En tout cas, merci pour ton aide

    a+
    Damran

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 92
    Par défaut
    Bonjour,

    J'ai remarqué quelque chose qui pourait aider à résoudre le problème :
    Lorsque j'exécute dans la fenêtre d'exécution le code "ActiveSheet.CircleInvalid"
    Alors la barre des titres indique un court instant : "Execution en cours..."

    J'ai alors retiré tout code (module, feuilles et formulaires) ... idem, toujours un "Execution en cours..." qui apparaît après lancement de CircleInvalid.

    Je fait alors un CTRL+BREAK juste après le lancement de ActiveSheet.CircleInvalid
    J'ai alors la boite de message de débogage, sauf que le bouton "déboguer" est grisé ... impossible donc voir quel code est exécuté ... il y'a bien du code qui s'exécute, mais ce n'est apparemment pas mon code.

    J'ai retiré toute référence intuiles ... même constat.

    Dernier constat : si je fais le CTRL+BREAK très rapidement après le ActiveSheet.CircleInvalid et bien cela se met à fonctionner !
    Et à partir de là, je peut utiliser ActiveSheet.CircleInvalid, le "Execution en cours..." n'apparait plus, la fonction marchera ... tant que je ne ferme pas la feuille.

    Voilà pour les précisions.

    a+ et merci encore.
    Damran

  5. #5
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Bonjour,

    Tout donne à penser que cette instruction est envoyée prématurément.

    Peux-tu nous dire dans quel évènement tu en demandes l'exécution ?

  6. #6
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    92
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 92
    Par défaut
    Bonjour,

    Citation Envoyé par ucfoutu Voir le message
    Peux-tu nous dire dans quel évènement tu en demandes l'exécution ?
    Pour mon message précédent, il n'y a pas d'évènement particulier. C'est juste en lançant la fonction dans la fenêtre "exécution automatique" de l'interface VBA.

    Pour le reste, l'instruction est notamment présente dans une "moulinette" qui est lancé à la demande de l'utilisateur, via un menu prévue à cet effet.
    La routine réalise un traitement de données pour exportation. Elle reprend les infos des différentes feuilles, les mets en forme pour cette exportation.
    Le traitement, en gros, est réalisé comme suit :
    - Vérification de certaines données via VBA
    - Vérification des validation de données : j'utilise ici le CircleInvalid
    - traitement

    Malheureusement, le comportement est toujours le même. Que l'instruction soit lancée tout seule (dans un sub ou fenêtre d'exécution), qu'elle soit précédée ou non de "calculate", "calculateFull" etc.., toujours même résultat.

    Seule chose qui peut arrêter le phénomène (hormis le CTRL-BREAK) : Supprimer des feuilles. Mais c'est très aléatoire, ne dépend ni de la ou des feuilles supprimée(s), ni du nombre de feuille supprimé.

    Là, celui qui me trouve la solution je lui paye un resto... et même deux fois tiens !

    a+
    Damran

Discussions similaires

  1. [WD17] Comportement xlsOuvre incompréhensible
    Par GEY3008 dans le forum WinDev
    Réponses: 3
    Dernier message: 07/05/2013, 12h53
  2. Incompréhension totale Polymorphisme
    Par ketaaa dans le forum Débuter
    Réponses: 4
    Dernier message: 01/02/2010, 20h25
  3. Réponses: 8
    Dernier message: 22/01/2009, 11h13
  4. Réponses: 1
    Dernier message: 23/05/2008, 10h10
  5. [Serveur Samba] Comportement incompréhensible
    Par Siguillaume dans le forum Réseau
    Réponses: 1
    Dernier message: 26/10/2007, 16h55

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