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 :

Test inopérant


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de shkyo
    Homme Profil pro
    Développeur Robotique - Administrateur systèmes
    Inscrit en
    Juin 2003
    Messages
    841
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur Robotique - Administrateur systèmes

    Informations forums :
    Inscription : Juin 2003
    Messages : 841
    Par défaut Test inopérant
    Bonjour à tous,

    J'ai un soucis avec des tests dans une macro VBA pour Excel 2003 SP2.

    Voici le test :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        'If ((temp <> date_6h_mat) And (temp <> date_6h_mat_plus) And (temp <> date_6h_mat_moins)) Then
        If (temp <> date_6h_mat) Then
            If (temp <> date_6h_mat_plus) Then
                If (temp <> date_6h_mat_moins) Then
                    MsgBox "ALERTE !!! YA UN MEGA PROBLEME !!!!!", 16, "ERREUR !!!"
                End If
            End If
        End If
    La variable 'temp' est locale à une sous-routine, c'est un format Date.
    Les variables 'date_6h_mat', 'date_6h_mat_plus' et 'date_6h_mat_moins' sont aussi des formats Date et sont de type 'public' à toute la macro.

    Quand je trace le prog ligne à ligne, je vois bien que :
    'temp' contient "20/06/2008 05:59:00"
    'date_6h_mat' contient "20/06/2008 06:00:00"
    'date_6h_mat_plus' contient "20/06/2008 06:01:00"
    'date_6h_mat_moins' contient "20/06/2008 05:59:00"

    Donc, que ce soit un test en une seule ligne (voir la 1ère ligne en commentaire du code) ou la succession des 3 tests, cela ne marche pas !!!
    Pourtant 'temp' et 'date_6h_mat_moins' étant égales, il ne devrait pas afficher la message box, et bien si... ARGH !!!

    Si quelqu'un a une idée, je suis preneur...

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 288
    Par défaut
    peut etre que ta variable Temp doit etre publique?

    sinon ta sous routine qui te donne Temp te renvoit elle bien la bonne valeur?

    sinon pas d'autre idee..

  3. #3
    Membre éclairé Avatar de shkyo
    Homme Profil pro
    Développeur Robotique - Administrateur systèmes
    Inscrit en
    Juin 2003
    Messages
    841
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur Robotique - Administrateur systèmes

    Informations forums :
    Inscription : Juin 2003
    Messages : 841
    Par défaut
    Citation Envoyé par pyrene Voir le message
    peut etre que ta variable Temp doit etre publique?

    sinon ta sous routine qui te donne Temp te renvoit elle bien la bonne valeur?

    sinon pas d'autre idee..
    La var 'temp' est remplie à l'aide de la fonction suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Function transform_timer_date(compteur As Long) As Date
    ' transforme un compteur exprimé en nbre de seconde en vraie date
    ' ATTENTION : le calcul se fait à partir de la date 01/01/1980 qui est le référentiel de la supervision
    ' une cellule (lointaine) de la feuille ouverte est utilisée pour le calcul
     
        Dim tempo As Double, tempo_date As Date
     
        tempo = compteur / 86400
        Set plage = ActiveSheet.Cells(1, 245)
        plage.FormulaLocal = "=""01/01/1980""+" & tempo & ""
        tempo_date = ActiveSheet.Cells(1, 245).Value
     
        transform_timer_date = tempo_date
    End Function
    Je vais tester le fait de la passer en 'public'.

    => je viens de la passer en 'public', et pas mieux...

  4. #4
    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,

    j'isole en fonction de ce que tu nous dis (abstraction donc faite de tout le reste et notamment de l'origine des valeurs... ou de leur type réel ...)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub Command1_Click()
      Dim temp As Date, date_6h_mat_moins As Date, date_6h_mat_plus As Date, date_6h_mat As Date
      temp = "6/20/2008 5:59:00 AM"
      date_6h_mat = "20/06/2008 06:00:00"
      date_6h_mat_plus = "20/06/2008 06:01:00"
      date_6h_mat_moins = "6/20/2008 5:59:00 AM"
      If (temp <> date_6h_mat) Then
        If (temp <> date_6h_mat_plus) Then
          If (temp <> date_6h_mat_moins) Then
             MsgBox "ALERTE !!! YA UN MEGA PROBLEME !!!!!", 16, "ERREUR !!!"
          End If
        End If
      End If
    End Sub
    et aucun message ne s'affiche ...

  5. #5
    Membre éclairé Avatar de shkyo
    Homme Profil pro
    Développeur Robotique - Administrateur systèmes
    Inscrit en
    Juin 2003
    Messages
    841
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur Robotique - Administrateur systèmes

    Informations forums :
    Inscription : Juin 2003
    Messages : 841
    Par défaut
    Dis-moi UCFOUTU, je veux être sûr de bien comprendre :
    le fait de passer la variable 'temp' en "6/20/2008 5:59:00 AM" au lieu de "20/06/2008 05:59:00" et le test fonctionne ??

  6. #6
    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
    Dis-voir, toi :

    je ne joue pas au poker javanais (relis ce que tu as écrit dans ta question originelle).. et-reviens ensuite, s'il te plait (mais cette fois-ci en te montrant précis, tant en ce qui concerne les types que les formats)...

    A bientôt, donc...

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

Discussions similaires

  1. Script test de deux chaine avec if
    Par kacedda dans le forum Linux
    Réponses: 6
    Dernier message: 02/05/2003, 15h38
  2. [XMLRAD] test de nullité
    Par Pm dans le forum XMLRAD
    Réponses: 5
    Dernier message: 29/11/2002, 10h57
  3. test collisions
    Par tatakinawa dans le forum OpenGL
    Réponses: 5
    Dernier message: 08/06/2002, 06h03

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