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 :

contrôle de format date


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    473
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 473
    Points : 493
    Points
    493
    Par défaut contrôle de format date
    Bonjour à tous,

    Voila je voudrais en controler la date

    en 1 faire les barres d'espacement automatiquement (ça marche!!)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Private Sub TextBox2_Change()
     
     
    TextBox2.MaxLength = 10
    Valeur = Len(TextBox2)
     
    If Valeur = 2 Or Valeur = 5 Then TextBox2 = TextBox2 & "/"
    If Len(TextBox2) = 10 And Not IsDate(TextBox2) Then TextBox2 = ""
    en 2 :contrôler si je suis bien en format date, par contre ça ne marche pas!!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    If Len(TextBox2.Value) = Format(mydate, "dd/mm/yyyy") Then GoTo fin1
     
    If Len(TextBox2.Value) <> Format(mydate, "dd/mm/yyyy") Then
     
    MsgBox "Entrer la date dans ce format jj/mm/aa"
    End If
    fin1:
    End Sub
    de plus je voudrais que lorsque je ne suis pas dans le bon format, il faudrait retourner sur le textbox2

    en 3: comment faire pour contrôler une date se trouvant par exemple entre le 01/10/07 et 30/09/08

    merci de votre renseignement

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Tu peux faire ça avec Like dans Textbox1_exit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    Dim EstDate as boolean
            EstDate = TextBox1.text Like "##/##/####"
            If not EstDate then
                 Msgbox "respecter le format date jj/mm/aaaa"
                 TextBox1.text = ""
                 cancel = true
            endif
    End sub
    Edit
    J'aurais une suggestion à te faire si la date est celle "d'aujourd'hui"...
    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 TextBox1_Enter()
        TextBox1 = Format(Now(), "dd/mm/yyyy")
    End Sub
     
    Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    Dim EstDate As Boolean
            EstDate = TextBox1.Text Like "##/##/####"
            If TextBox1 = "" Then Exit Sub
            If Not EstDate Then
                MsgBox "Saisir la date au format jj/mm/aaaa"
                TextBox1 = ""
                Cancel = True
            End If
    End Sub

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    473
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 473
    Points : 493
    Points
    493
    Par défaut
    Merci Ouskel'n'or,

    OK ça marche trés bien mais peut-on réduire ou augmenter la date par + ou -

    et comment faire pour ne pas dépasser une date et lui donner un minimum

    Merci

  4. #4
    Membre confirmé
    Avatar de Bigalo
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    445
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 445
    Points : 563
    Points
    563
    Par défaut
    Bonsoir,

    Pourquoi n’utilises-tu pas simplement IsDate, qui t’offre bien plus de souplesse :

    Par exemple, si on saisit une date au format j/m, Excel complète automatiquement avec l’année en cours. Il n’est donc utile de saisir l’année que s’il ne s’agit pas celle en cours.

    Il est parfaitement licite de saisir 9/2 comme date pour le 9 février 2008 si les préférences régionales sont sur France.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
            If Not IsDate(TextBox2) Then
                Msgbox "La date doit être saisie au format j/m/aa"
                TextBox2 = ""
                Cancel = True
            Else
                MsgBox CDate(TextBox2)
            End If
    End Sub
    Tu peux le vérifier ainsi : entre 9/2 dans le TextBox2, puis appuie sur tabulation

  5. #5
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Dans une date, l'unité est le jour. Les décimales sont les heures, minutes et secondes.
    Donc, si tu ajoutes 1 à une date, tu as le lendemain d'aujourd'hui
    Par contre, si tu prends ta date dans le textbox, tu dois préciser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        TextBox1 = Format(Now(), "dd/mm/yyyy") ' => 09/02/2008
        TextBox1 = CDate(TextBox1) + 1         ' => 10/02/2008
    A+

  6. #6
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 754
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 754
    Points : 9 396
    Points
    9 396
    Par défaut
    pour ajouter un jour a une date tu peux aussi utiliser dateadd

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    textbox1.text=DateAdd("d", 1, cdate(Textbox1.text))

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    491
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 491
    Points : 542
    Points
    542
    Par défaut
    bonsoir,

    pour les formats des dates

    http://www.developpez.net/forums/sho...d.php?t=435532

Discussions similaires

  1. Fonction pour contrôle de format de date
    Par veve4work dans le forum Développement
    Réponses: 5
    Dernier message: 07/03/2012, 12h04
  2. contrôle calendrier + format date
    Par chris67 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 08/07/2008, 10h02
  3. [date] Contrôle de format et contrôle d'intervalle
    Par dodik dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 27/06/2005, 16h14
  4. interfaces Access et format Date
    Par say dans le forum InterBase
    Réponses: 21
    Dernier message: 10/05/2004, 17h24
  5. Format date
    Par cochet dans le forum Bases de données
    Réponses: 4
    Dernier message: 02/03/2004, 08h37

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