Rechercher : dans
Par :

[VBA] format de date dans textbox

Dernière réponse le 29 aoû 2007 à 17:14:48 antic80, le 9 jan 2006 à 15:54:21 
 Signaler ce message aux modérateurs

Bonjour

voila j'aimerai savoir comment forcer en VBA sous excel , un utilisateur a mettre une date au format jjmmyy car si par exemple j'ecris 222 dans la textbox il me fais la conversion

je veux que l'utilisateur soit obliger de mettre par exemple 151205 qui sera converti en 15/12/2005

actuellement j'ai ca pour le formatage de la date en 15/12/2005

TXT_du = Left(TXT_du, 2) & "/" & Mid(TXT_du, 3, 2) & "/" & Right(TXT_du, 2)

merci a vous

Meilleures réponses pour « [VBA] format de date dans textbox » dans :
Vérifier le format d'une date en PHP VoirIl existe plusieurs méthodes pour verifier le format d'une date en PHP, vous pouvez par exemple découper la chaîne puis tester les valeurs de chaque élément. Plus simplement nous utiliserons les expressions régulières. Pour valider une date au...
Fichier DAT VoirFormat DAT Un fichier DAT Un fichier .dat est un fichier de données (.DAT signifie data). En général, il s'agit d'un fichier binaire, créé par un programme et utilisable uniquement par ce programme, ce qui signifie qu'il n'est pas censé être ouvert...
VBScript - Les fonctions de date et de temps VoirLes fonctions de date et de temps Fonction Description Date Retourne la date du système DateAdd(interval, number, date) Ajoute un intervalle de temps (interval) à une...

1

antic80, le 9 jan 2006 à 16:09:59

J'aimerai aussi savoir comment empecher de passer au textbox suivant si la date n'est pas correcte

Répondre à antic80

2

blux, le 9 jan 2006 à 16:58:43

Salut,

sous quelle application ? (ACCESS, EXCEL..)
A+ Blux

 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"

Répondre à blux

3

antic80, le 9 jan 2006 à 17:33:52
  • +2

Excel

Répondre à antic80

4

Lupin, le 9 jan 2006 à 20:20:45

Slt,

Quelque chose comme :

Private Sub TextBox3_Change()
    Dim Exemple As String
    Dim ExDate As String
    Exemple = TextBox3.Value
    If ((Len(Exemple) > 5) And (Len(Exemple) < 10)) Then
        Application.EnableEvents = False
        ExDate = Mid(Exemple, 1, 2) & "-" & Mid(Exemple, 3, 2) & "-20" & Mid(Exemple, 5)
        TextBox3.Value = ExDate
        Application.EnableEvents = True
    End If
End Sub


Lupin

Répondre à Lupin

5

antic80, le 10 jan 2006 à 10:41:39

Merci lupin mais j'ai un petit soucis

quand je saisie ma date normale j'ai en dessous un morceau de code qui me dois en fais recuperer le mois saisie et allez rechercher ce mois ds un tableau

si par exemple je date 220 il me plante sur la ligne de recherche du moi

je te met mon code au cas ou

Exemple = TXT_du.Value
If ((Len(Exemple) > 5) And (Len(Exemple) < 10)) Then
Application.EnableEvents = False
ExDate = Mid(Exemple, 1, 2) & "-" & Mid(Exemple, 3, 2) & "-20" & Mid(Exemple, 5)
TXT_du.Value = ExDate
Application.EnableEvents = True


End If

'exemple de contrôle on ne fait le calcul que si txt_au est rempli

If TXT_au <> "" Then
TXT_TotalJour = CDate(TXT_au) - CDate(TXT_du)
End If
mois_debut = (Mid(TXT_du, 4, 2))
Sheets("Month").Select
Range("LeMois").Find(what:=mois_debut, after:=ActiveCell, LookIn:=xlFormulas, lookat:=xlPart, searchorder:=xlByRows, searchdirection:=xlNext, MatchCase:=False, searchformat:=False).Activate
mois = ActiveCell.Offset(0, 1).Value
Sheets("Calendrier").Select
jour_debut = Left(TXT_du, 2)
Range(mois).Select
Range(mois).Find(what:=jour_debut, after:=ActiveCell, LookIn:=xlFormulas, lookat:=xlPart, searchorder:=xlByRows, searchdirection:=xlNext, MatchCase:=False, searchformat:=False).Activate
jour = ActiveCell.Value
an = 2000 + Format(Right(TXT_du, 2), "00")
Label6.Caption = jour & " " & mois & " " & an

en fait ca plante sur la ligne qui commence par Range("LeMois")

Répondre à antic80

6

Lupin, le 10 jan 2006 à 14:28:05

Re :

Sub TestExemple()

    Exemple = Txt_Du.Value
    If ((Len(Exemple) > 5) And (Len(Exemple) < 10)) Then
        Application.EnableEvents = False
        ExDate = Mid(Exemple, 1, 2) & "-" & Mid(Exemple, 3, 2) & "-20" & Mid(Exemple, 5)
        Txt_Du.Value = ExDate
        Application.EnableEvents = True
    End If
    '
    'exemple de contrôle on ne fait le calcul que si txt_au est rempli
    '
    If (TXT_au.Value <> "") Then
        TXT_TotalJour = CDate(TXT_au) - CDate(Txt_Du)
    End If
    mois_debut = (Mid(Txt_Du.Value, 4, 2))
    Sheets("Month").Select
    mois = Range("LeMois").Find(what:=mois_debut).Offset(0, 1).Value
    'mois = ActiveCell.Offset(0, 1).Value
    Sheets("Calendrier").Select
    jour_debut = Left(Txt_Du, 2)
    Range(Format(mois, "00")).Select
    jour = Range(mois).Find(what:=jour_debut).Value
    'jour = ActiveCell.Value
    an = 2000 + Format(Right(Txt_Du, 2), "00")
    Label6.Caption = jour & " " & mois & " " & an
'

End Sub


et j'assume que [ LeMois ] est une plage nommé !
est-ce une seule cellule ou vraiment une plage nommé !

Lupin

Répondre à Lupin

7

antic80, le 10 jan 2006 à 15:54:14

Oui c une plage nommé

par contre je viens de tester et si dans ma textbox je tape par exemple 220 j'ai un message d'erreur

variable d'objet ou variable de bloc with non définie

et le message se rapporte a
mois = Range("LeMois").Find(what:=mois_debut).Offset(0, 1).Value

Répondre à antic80

8

antic80, le 10 jan 2006 à 16:22:22

Une autre chose aussi je suppose que la propriété application.enableevents empeche de passer a la txtbox suivante mais moi qu'elle soit sur true ou false le changement se fais

si je saisie une date inferieur a la date du jour je passe quand meme a la suivante

Répondre à antic80

9

Lupin, le 10 jan 2006 à 17:46:35

Re:

mois = Range("LeMois").Find(what:=mois_debut).Offset(0, 1).Value

c'est possible, je n'ai jamais utilisé la méthode [OffSet]
sur un find !

ta façon de faire semble mieux !

Range("LeMois").Find(what:=mois_debut).Value
mois = Activecell.Offset(0,1).Value

peut-être que :
mois = range(Range("LeMois").Find(what:=mois_debut).Address).Offset(0,1).Value

[Application.EnableEvents = False] est utilisé à l'intérieur
de [TextBox3_Change] pour ne pas engendrer de récursivité
sur l'objet.

Lupin

Répondre à Lupin

10

antic80, le 10 jan 2006 à 18:19:29

Ok ben j'essaierai des que possible

Répondre à antic80

11

 rima, le 29 aoû 2007 à 17:14:48

Salut
on fé du reporting sur un fichier et il ya uune colonne spécial date
je vx prendre en considération ke lé cellules ki sont inférieur au mois ou lon fé loperation
g donc créer un msbgx ki invite a entrer la date du mois et le code en bas pour faire linversion du format américain o format francé (ds le fichier source c en amrécian(mm/dd/yyyy)
il me donne un message derreur"invalid use of null"



Dim x As Date
file = InputBox("Entrez la Date du Reporting")
x = datereporting = Format(datereporting, "mm/dd/yyyy")
Selection.AutoFilter Field:=1, Criteria1:="<" & datereporting
Dim i As Long
For i = FirstLineIndex To LastLineIndex
'Sélectionne la cellule
Cells(i, ColIndex).Select
With Selection
If IsDate(.Value) Then
'Condition d'inversion
If .NumberFormat = "mm/dd/yyyy" Then
'Mémorise la date
myDate = .Value
'Transforme le type du format date
.NumberFormat = "dd/mm/yyyy"
'Transforme la date en inversant les valeurs du mois et du jour

End If
End If
End With
Next i

Configuration: Windows XP
Internet Explorer 6.0

Répondre à rima
Collection CommentÇaMarche.net