Saisie d'une date du mois en cours à l'aide d'une textbox

Michou9

XLDnaute Occasionnel
Bonjour

J’ai réalisé une macro pour remplir un tableau ligne par ligne
La 1ère saisie consiste à l’entrée de la date du mois en cours
Ce n’est que cette partie que je mets ici, car le reste de la macro pour l’instant ne pose pas de problème

Le but, est que la personne qui rentre la date n’est à taper que le jour
(Le mois par défaut étant obligatoirement le mois en cours)
Exemple 5 pour 5 mai (Mai étant le mois en cour)

1er problème
J’ai réalisé un premier test, si la personne rentre un nombre supérieur à 31, une MsgBox l’avertit de son erreur
J’aurais souhaité alors retourner directement dans la TextBox, faire un « Clear » pour que la personne puisse retaper une autre date
Mais l’instruction TextBox1.clear () m’est refusée ??

2 ème problème
Excel sait reconnaitre une date valide, si je frappe 31/02/2014, la cellule indiquera ceci en valeur texte et non une date
Partant de là, je me demande si je ne pourrai pas mettre un contrôle dans ma macro pour indiquer à la personne qui rentre par exemple le nombre 31 au mois d’avril, que cette date est fausse.

Merci d'avance pour votre aide
 

Pièces jointes

  • Saisie d'une date du mois en cours.xlsm
    16.4 KB · Affichages: 28
  • Saisie d'une date du mois en cours.xlsm
    16.4 KB · Affichages: 34
  • Saisie d'une date du mois en cours.xlsm
    16.4 KB · Affichages: 31

gilbert_RGI

XLDnaute Barbatruc
Re : Saisie d'une date du mois en cours à l'aide d'une textbox

Bonjour

pourquoi ne pas employer un DTPicker ?
 

Pièces jointes

  • Saisie d'une date du mois en cours.xlsm
    21.1 KB · Affichages: 45
  • Saisie d'une date du mois en cours.xlsm
    21.1 KB · Affichages: 45
  • Saisie d'une date du mois en cours.xlsm
    21.1 KB · Affichages: 37
Dernière édition:

néné06

XLDnaute Accro
Re : Saisie d'une date du mois en cours à l'aide d'une textbox

Bonjour gilbert,Michou,
Sinon une piste !
Code:
Private Sub CommandButton1_Click()
On Error Resume Next
    X = TextBox1.Value
    Y = CDate(Format(Val(X) & "/" & Month(Date) & "/" & Year(Date), dd - mm - aaaa))
    If IsDate(Y) Then  'SI valeur numérique ...
        Range("A1") = X 'Copie en A1
        Unload Me 'Fermeture
    Else 'SINON ...
        MsgBox "Valeur incorrecte", , X
            TextBox1.Value = ""
            Exit Sub
    End If
    ActiveCell = Y
End Sub

A+
René
 

Pièces jointes

  • Saisie d'une date du mois en cours.xlsm
    19.5 KB · Affichages: 32
  • Saisie d'une date du mois en cours.xlsm
    19.5 KB · Affichages: 29
  • Saisie d'une date du mois en cours.xlsm
    19.5 KB · Affichages: 32

Michou9

XLDnaute Occasionnel
Re : Saisie d'une date du mois en cours à l'aide d'une textbox

Bonjour

Merci pour ton aide, mais je ne connais pas DTPicker
Je viens de regarder sur le Web
Mais cela ne semble correspondre à ce que je veux faire ?
Sinon il faudrait si possible m'en dire une peu plus

A+
 

Michou9

XLDnaute Occasionnel
Re : Saisie d'une date du mois en cours à l'aide d'une textbox

Bonjour Néné06

Merci pour ton aide
C'est très ingénieux, si j'ai bien compris ton principe ??
Etant donné qu'une date non valide est considérée comme une valeur texte sous Excel
Tu testes pour voir si la valeur obtenue est une valeur numérique
Si elle ne l'est pas elle passe en Erreur !
C'est bien cela ??

En tour cas, c'est impeccable

Juste une petit problème qui persiste comme dans ma propre macro
Quand on passe en erreur, il me faut d'abord cliquer dans la Textbox avant de frapper à nouveau la date du jour
Ne serait-il pas possible de retourner dans la TextBox sans avoir à cliquer dedans ?

A+
 

Michou9

XLDnaute Occasionnel
Re : Saisie d'une date du mois en cours à l'aide d'une textbox

Re,

Merci Gilbert_RGI pour ces liens
Cela devrait m'en apprendre un plus sur ce contrôle

J'ai donc installer le contrôle nécessaire
De fait, il apparait bien dans la boite à outils
Mais quand je passe au-dessus apparait "Inconnu"
et quand je l'insère dans mon UserForm
J'ai le message :
%1 n'a pas pu être trouvé


Néné06
En supprimant dans la macro la ligne:

"MsgBox "Valeur incorrecte", , X

C'est un peu embêtant car je n'aurai alors plus de message d'erreur :mad:
Mais en fait cela ne change rien.
Je viens de le faire, il faut toujours recliquer dans la Textbox avant de refrapper la date

Idem si je supprime TextBox1.Value = ""

La ligne suivante n'est pas dans ton code
TextBox1.SetFocus

A+
 
Dernière édition:

Robert

XLDnaute Barbatruc
Repose en paix
Re : Saisie d'une date du mois en cours à l'aide d'une textbox

Bonjour le fil, bonjour le forum,

pourquoi ne pas employer un DTPicker ?
Je ne le recommande pas, ça ne marche pas sur la version 64 bits. Donc si tu repasses ton fichier tu risques de rencontrer des problèmes. Mais ce n'est que mon avis...

Une autre proposition avec le code ci-dessous :
Code:
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If KeyAscii < 48 Or KeyAscii > 57 Then KeyAscii = 8 'empêche l'utilisation de toute autre touche que {0, 1, 2, 3, 4, 5, 6, 7, 8 et 9}
End Sub


Private Sub CommandButton1_Click()
Dim X As Byte 'déclare la variable X
Dim D As Date 'déclare la variable D

X = CByte(TextBox1.Value) 'définit la variable D
D = DateSerial(Year(Date), Month(Date) + 1, 0) 'définit le dernier jour du mois
On Error Resume Next 'gestion des erreurs (en cas dérreur passe à la ligne suivante)
D = CDate(X & "/" & Month(Date) & "/" & Year(Date)) 'définit la date D (génère une erreur si date invalide [31 févier] par exemple)
If Err <> 0 Then 'condition : si une erreur a été générée
    MsgBox "Date invalide ! Vous devez taper une valeur entre 1 et " & Day(D) 'message
    With Me.TextBox1 'prend en compte la TextBox1
        .SelStart = 0 'début de la sélection
        .SelLength = Len(.Value) 'longueur de la sélection
        .SetFocus 'place le curseur
    End With 'fin de la prise en compte de la TextBox1
    Exit Sub 'sort de la procédure
End If 'fin de la condition
D = DateSerial(Year(Date), Month(Date), X) 'redéfinit la date D
ActiveCell.Value = D 'place la date formatée dans la cellule active
Unload Me 'vide et ferme l'Userform
End Sub
Le fichier :
 

Pièces jointes

  • Michou_v01.xlsm
    17.9 KB · Affichages: 36

néné06

XLDnaute Accro
Re : Saisie d'une date du mois en cours à l'aide d'une textbox

Re,

@Michou

Donc ne pas supprimer dans la macro la ligne:

"MsgBox "Valeur incorrecte", , X"

mais rajouter après
TextBox1.Value = ""

TextBox1.SetFocus

@ Robert, Bien le bonjour !!

A+

René
 

Michou9

XLDnaute Occasionnel
Re : Saisie d'une date du mois en cours à l'aide d'une textbox

Re,

Merci Néné, excuse moi je n'avais pas compris
Comme cela c'est Ok. :)

Bonjour Robert et merci pour intervention
Effectivement je viens de regarder sur la toile
et je vois que bon nombre d’utilisateur rencontre des problème pour activer ce contrôle !

Je vais de ce pas essayer ton code

A+
 

Si...

XLDnaute Barbatruc
Re : Saisie d'une date du mois en cours à l'aide d'une textbox

salut

quand "DTPicker" n'est pas disponible, 2 autres propositions - avec gestion du nombre de jours du mois -, l'une avec un bouton "Toupie" l'autre avec un clavier géré par un Module Classe.
 

Pièces jointes

  • Saisie d'une date du mois en cours(UsF).xlsm
    25.2 KB · Affichages: 43

gilbert_RGI

XLDnaute Barbatruc

Discussions similaires

Statistiques des forums

Discussions
311 724
Messages
2 081 936
Membres
101 844
dernier inscrit
pktla