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 :

Pb:forcer le format d'une textbox


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 66
    Par défaut Pb:forcer le format d'une textbox
    Salut.
    Je galere depuis quelques temps sur une boite de dialogue qui permet de saisir des dates de rentrée de facture. voila le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub SpinButton1_SpinDown()
      TextBox1.Text = DateValue(TextBox1.Text) - 1
    End Sub
    Private Sub SpinButton1_SpinUp()
       TextBox1.Text = DateValue(TextBox1.Text) + 1
    End Sub
    Sub userform_Activate()
    textbox1.value = Date
    end sub
    Voila pour la base seulement il faut pouvoir saisir manuellement dans la textbox la date seulement pour la suite de ma macro il faut que l'on ne puisse pas valider si le format est different de 21/03/2008
    D'avance merci

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2007
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 514
    Par défaut
    Bonjour,

    Une solution ici

    Cordialement,

    Tirex28/

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 66
    Par défaut
    Merci pour la solution mais y aurrait-il une solution plus simple du genre if format ou if lettre? Un code plus conditionnel?

  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,

    plus simple ?
    Ok

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub Command1_Click()
     MsgBox tester_date(textbox1.text)
    End Sub
     
    Private Function tester_date(a As String) As Boolean
      tester_date = True
      If Not IsDate(a) Then tester_date = False
      If tester_date Then
        If Not a Like "##/##/####" Or Month(a) > 12 Then
          tester_date = False
        End If
      End If
    End Function

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 66
    Par défaut
    UCFOUTU et TIREX, merci pour ces codes ils sont au top .
    Du grand art le (le 8eme exactement).
    Je n'ai plus de bug surma boite. j'ai rajouté un exit sub et cela empeche les bug de format.
    Merci bonne journée.

  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
    Stop !

    J'ai fait une blague qui ne protège pas de la saisie de "12/31/2008" au lieu de "31/12/2008" (VB est assez particulier !!!)

    correction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Function tester_date(a As String) As Boolean
      tester_date = True
      If Not IsDate(a) Then tester_date = False
      If tester_date Then
        If Not a Like "##/##/####" Or Val(Mid(a, 4, 2)) > 12 Then
          tester_date = False
        End If
      End If
     
    End Function
    ou (mieux encore) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Function tester_date(a As String) As Boolean
      tester_date = True
      If Not IsDate(a) Then tester_date = False: Exit Function
      If Format(DateSerial(Year(a), Month(a), Day(a)), "dd/mm/yyyy") <> a Then tester_date = False
    End Function

  7. #7
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2007
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 514
    Par défaut
    Bonsoir,

    Si ma proposition te parait trop complique et ne sachant pas si tu l'as retenu ou si tu as préféré celle d'ucfoutu - que je salue au passage - voici ce que ca aurait pu donner:

    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    Dim MyDate As DateBox                           'Déclaration
     
    Private Sub UserForm_Initialize()
        Set MyDate = New DateBox                    'Création
        With MyDate
            .Initialize Me.Controls("TextBox1")     'Connection avec le TextBox
            .ShortYear = False                      'Définition du format
            .Separator = "/"
            .Order = dbxDayMonthYear
        End With
    End Sub
     
    Private Sub CommandButton1_Click()
        If MyDate.Status = dbxNotCompleted Then
            MsgBox "Saisie incorrecte"
        Else
            MsgBox Format(MyDate.Value, "dddd dd mmmm yyyy")
        End If
    End Sub
     
    Private Sub SpinButton1_SpinDown()
        Incrementer -1
    End Sub
     
    Private Sub SpinButton1_SpinUp()
        Incrementer 1
    End Sub
     
    Private Sub Incrementer(Pas As Long)
        On Error Resume Next    'Si la saisie n'est pas achevé
        MyDate.Value = MyDate.Value + Pas
    End Sub
    Bonne soirée,

    Tirex28/

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

Discussions similaires

  1. format d'une textbox
    Par sylvain591 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 09/12/2009, 13h11
  2. [XL-2007] propriete Format dans une textbox non reconnue
    Par karim19 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 19/10/2009, 13h25
  3. [XL-2007] Forcer le format d'une date
    Par AMO05 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 29/04/2009, 12h44
  4. format dans une textbox
    Par bosk1000 dans le forum Excel
    Réponses: 8
    Dernier message: 17/02/2009, 11h07
  5. Comment forcer le format d'une cellule?
    Par cha_cha dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 18/11/2005, 15h31

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