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

VBA Access Discussion :

Code bon, mais pas bon..


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    218
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 218
    Par défaut Code bon, mais pas bon..
    Bonjour,

    j'ai ecrit un petit code, pour copier dans un champ la date la plus importante, entre deux champs date.

    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
    Private Sub Form_Load()
    Dim dateEcart As Long
    Dim date1 As Date
    Dim date2 As Date
     
    date1 = Nz([D_Maint_HD], "10/12/1980")
    date2 = Nz([D_Maint_HDES], "10/12/1980")
    dateEcart = DateDiff("m", date2, date1)
    If dateEcart >= 0 Then
    msgBox dateEcart
        Me.[Fin_abonnement].Value = Me.[D_Maint_HD]
    Else
        Me.[Fin_abonnement].Value = Me.[D_Maint_HDES]
    End If
    End Sub
    Il m'affiche bien untexte box, avec une valeur positive...
    sauf que il s'arrete là... il ne veut pas donner la valeur de [D_maint_HD] au champ [fin_abonnement]

    par contre si je fais un bouton avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.Fin_abonnement = Me.[D_Maint_HD]
    là ça marche...

    donc par A+B = je ne comprend pas !!

    Si quelqu'un voit l'erreur... moi je la voit pas...

  2. #2
    Inactif
    Profil pro
    Inscrit en
    Août 2006
    Messages
    219
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Canada

    Informations forums :
    Inscription : Août 2006
    Messages : 219
    Par défaut
    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
     
    Private Sub Form_Load()
    Dim dateEcart As Long
    Dim date1 As Date
    Dim date2 As Date
     
    date1 = Nz([D_Maint_HD], "10/12/1980")
    date2 = Nz([D_Maint_HDES], "10/12/1980")
    dateEcart = DateDiff("m", date2, date1)
    If dateEcart >= 0 Then
    msgBox dateEcart
        Me.Fin_abonnement = Me.[D_Maint_HD]
    Else
        Me.Fin_abonnement = Me.[D_Maint_HDES]
    End If
    End Sub
    Est ce que ça marche?

    Alex

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    218
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 218
    Par défaut non
    non...

    Par contre, si je met une date2 > a date 1 (par superieure, j'entend plus recente dans le temps)

    et ben là il me colle cette date2 dans mon champ indépendant...
    et je trouve pas la logique dans cela...

    Où mon code lui dit-il de faire cela!!??
    bon... apparement, ça marche mieux pour si j'inverse date2 et date1...

    normal.. date2 est souvent vide...
    en fait c'est mon Nz qui marche pas...
    car si la date 2 est vide ça ne marche pas...

    pourquoi mon Nz n'est-il pas fonctionnel???
    ça vient du type de champ!??
    une idée??

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    74
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2007
    Messages : 74
    Par défaut
    Citation Envoyé par alexandrebergercyr
    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
     
    Private Sub Form_Load()
    Dim dateEcart As Long
    Dim date1 As Date
    Dim date2 As Date
     
    date1 = Nz([D_Maint_HD], "10/12/1980")
    date2 = Nz([D_Maint_HDES], "10/12/1980")
    dateEcart = DateDiff("m", date2, date1)
    If dateEcart >= 0 Then
    msgBox dateEcart
        Me.Fin_abonnement = Me.[D_Maint_HD]
    Else
        Me.Fin_abonnement = Me.[D_Maint_HDES]
    End If
    End Sub
    Est ce que ça marche?

    Alex

    A mon avis, il y a déjà un pépin avec DateDiff qui doit recevoir des arguments de type Variant (Date) et pas des string or le second argument de ta fonction Nz renvoit un string.

    Il faudrait peut-être utiliser cdate("10/12/1980") comme argument dans Nz.

  5. #5
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    129
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 129
    Par défaut
    Salut

    Date1 et Date2 sont identiques, il n'y a donc pas de différence et donc le programme ne rentre pas dans le if, c'est normal, non?

  6. #6
    Inactif
    Profil pro
    Inscrit en
    Août 2006
    Messages
    219
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : Canada

    Informations forums :
    Inscription : Août 2006
    Messages : 219
    Par défaut Prise 2
    Test ceci je suis pas mal certain que ça marche

    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
     
    Dim dateEcart As Long
    Dim date1 As Date
    Dim date2 As Date
     
    date1 = Nz("10/12/1980", "10/12/1980")
    date2 = Nz(Null, "10/12/1980")
    dateEcart = DateDiff("m", date2, date1)
    If dateEcart >= 0 Then
    MsgBox dateEcart
        D_Maint_HD.SetFocus
        Me.[Fin_abonnement].Value = D_Maint_HD.Text
    Else
        D_Maint_HDES.SetFocus
        Me.[Fin_abonnement].Value = D_Maint_HDES.Text
    End If
    Alexxx

Discussions similaires

  1. Réponses: 4
    Dernier message: 02/08/2018, 11h04
  2. template bon en paramètre de fonction mais pas en sortie
    Par goran kajfes dans le forum Langage
    Réponses: 10
    Dernier message: 02/06/2009, 23h54
  3. [POO] Solution d'objet en session partagé. Bon ou pas bon ?
    Par berceker united dans le forum Langage
    Réponses: 20
    Dernier message: 10/07/2008, 09h49
  4. value bon sous firefox mais pas sous ie
    Par keub51 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 26/04/2007, 10h05
  5. Réponses: 5
    Dernier message: 27/10/2005, 12h23

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