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 :

Comportement Evaluate surprenant pour ne pas dire buggé ! [XL-2013]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2017
    Messages : 2
    Par défaut Comportement Evaluate surprenant pour ne pas dire buggé !
    Bonjour,

    En essayant de débuguer un programme, qui faisait un usage intensif de la fonction Evaluate, j'ai
    fini par isoler un comportement bizarre illustré par le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    Function test()
      Debug.Print "enter"
      Dim ws As Worksheet
        Set ws = ActiveSheet
     myString = "04/01/2017=04/04/2017"
     If (ws.Evaluate(myString)) Then
        Debug.Print " same date " & myString
     Else
        Debug.Print " different date " & myString
     End If
     
     myString = "04/01/2017=16/04/2017"
     If (ws.Evaluate(myString)) Then
        Debug.Print " same date " & myString
     Else
        Debug.Print " different date " & myString
     End If
     Debug.Print "exit"
      test = 1
    End Function
    Et le résultat obtenu est :
    enter
    different date 04/01/2017=04/04/2017
    same date 04/01/2017=16/04/2017
    exit

    C'est tout de même surprenant, le code semble fonctionner pour certaines dates, et pas pour d'autres.
    J'aimerais bien comprendre ce qui se passe, et je l'espère éviter de devoir entièrement refaire mon classeur.

  2. #2
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut
    Bonjour,

    Evaluate n'est pas du tout en cause mais bien comment cette méthode est - donc mal - utilisée !

    C'est juste une grossière erreur de syntaxe de l'expression évaluée
    et même de compréhension du type de comparaison car ce ne sont pas des dates testées mais juste du texte ‼

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub Demo4Noob()
        For Each V In [{"""04/01/2017""=""04/04/2017""","""04/01/2017""=""16/04/2017"""}]
            Debug.Print IIf(Evaluate(V), "same", "different") & " ""date"" : " & V
        Next
    End Sub
    ___________________________________________________________________________________________________________

          Merci de cliquer sur en bas à droite de chaque message ayant aidé puis sur pour clore cette discussion …

    ___________________________________________________________________________________________________________
    Je suis Paris, Egypte, Stockholm, London, Istanbul, Berlin, Nice, Bruxelles, Charlie, …

  3. #3
    Candidat au Club
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2017
    Messages : 2
    Par défaut
    Merci,
    cette solution résout bien mon problème.

  4. #4
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Pour rappel Evaluate se comportant telle une formule de feuille de calculs,
    commencer donc par écrire une formule dans une cellule et, une fois cette dernière fonctionnelle,
    juste l'adapter pour cette méthode Evaluate

    En conclusion :     bonne formule de feuille de calculs, bonne Evaluate !

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

Discussions similaires

  1. Configuration pour ne pas passer par le proxy
    Par Worldofdada dans le forum JWS
    Réponses: 5
    Dernier message: 10/11/2005, 19h54
  2. pour ne pas répéter where plusieurs fois
    Par djouahra.karim1 dans le forum Bases de données
    Réponses: 2
    Dernier message: 06/06/2005, 10h31
  3. Que dois-je faire pour ne pas imprimer l'url de ma page ????
    Par pontus21 dans le forum Général Conception Web
    Réponses: 3
    Dernier message: 01/06/2005, 20h09
  4. Réponses: 11
    Dernier message: 09/12/2004, 15h03

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