UserForm format dans les TextBox

Mister alex

XLDnaute Nouveau
Bonjour à tout le forum,

Voici ma problématique : Je débute en VBA. J’ai créé un UserForm pour entrer des valeurs dans un tableau. Ce Userform est composé de 4 Text Box
Textbox1 pour le nom de l’article
Textbox 2 pour la date de commande
Textbox 3 pour la date de réception
Textbox 4 pour la quantité

Les valeurs entrées dans le UserForm se remplissent après validation dans les cellules appropriées. Mais lorsque je choisis de ne pas remplir une TextBox (la textbox 3 en l’occurrence) ou que je lui attribue un 0, dans le premier cas, un message d’erreur apparaît m’envoyant dans le débogueur, et dans le deuxième cas, un format heure apparait dans la cellule même après avoir mis le format standard dans la cellule.

J’aimerais donc avoir la possibilité de ne pas remplir la textbox3 ou de pouvoir lui attribuer seulement un 0.

Je vous laisse le fichier en pièce jointe pour plus de compréhension.
J'espère que quelqu'un pourra m'aider, merci d'avance,
Mister Alex
 

Pièces jointes

  • Gestion de stock atelier macro.zip
    212.2 KB · Affichages: 81
  • Gestion de stock atelier macro.zip
    212.2 KB · Affichages: 80
  • Gestion de stock atelier macro.zip
    212.2 KB · Affichages: 76

MichD

XLDnaute Impliqué
Re : UserForm format dans les TextBox

Bonjour,

Lorsque tu saisis une donnée qui représente une date dans un textbox,
il est sage de vérifier si le format "Date" saisi par l'usager est un des
formats reconnus par Excel.

D'ailleurs, c'est une bonne idée d'utiliser un formulaire avec le contrôle "Calendar1"
ou le contrôle "Microsoft Date et Timer picker". L'usager ne se servant d'un de
ces contrôles pour saisir la date, tu es certain qu'il respecte le format date
que tu veux utiliser!

Enfin, les fonctions de conversions Cdate(), Cdbl(), Clng().... utilise les formats
définis dans le panneau de configuration de Windows. La valeur passée à la
fonction doit être valide ou cela plantera.


VB:
If IsDate(Me.TextBox2) Then
    dest.Offset(0, 1) = CDate(TextBox2)
Else
    MsgBox "La date saisie n'est pas dans un format " & _
    "Reconnu par Excel."
    Me.TextBox2.SetFocus
    Me.TextBox2.SelStart = 0
    Me.TextBox2.SelLength = Len(Me.TextBox2)
    Exit Sub
End If
 

MichD

XLDnaute Impliqué
Re : UserForm format dans les TextBox

Tu as 2 textbox contenant des dates. Je t'ai donné les explications pour un de ces 2 textbox.
Il faut appliquer la même chose à l'autre. C'est peut-être difficile, mais il faut tenter de
comprendre... au-delà du copier-coller.

En VBA, les dates possibles débutent le 1 janvier de l'an 100 au 31 décembre de l'an 9999.

La valeur 0 n'est pas une date possible!

VB:
Private Sub CommandButton1_Click()
Dim dest As Range

Set dest = Sheets("Entrée").Cells(Application.Rows.Count, 3).End(xlUp).Offset(1, 0)
If IsDate(Me.TextBox2) Then
     dest.Offset(0, 1) = CDate(TextBox2)
 Else
     MsgBox "La date saisie n'est pas dans un format " & _
     "Reconnu par Excel."
     Me.TextBox2.SetFocus
     Me.TextBox2.SelStart = 0
     Me.TextBox2.SelLength = Len(Me.TextBox2)
     Exit Sub
 End If
 If IsDate(Me.TextBox3) Then
     dest.Offset(0, 1) = CDate(TextBox3)
 Else
     MsgBox "La date saisie n'est pas dans un format " & _
     "Reconnu par Excel."
     Me.TextBox3.SetFocus
     Me.TextBox3.SelStart = 0
     Me.TextBox3.SelLength = Len(Me.TextBox3)
     Exit Sub
 End If
dest.Offset(0, 2).Value = Me.Articles.Value
dest.Offset(0, 3).Value = Me.TextBox4.Value
dest.Offset = CDate(TextBox2)
dest.Offset(0, 1) = CDate(TextBox3)
Unload UserForm1

End Sub
 

Mister alex

XLDnaute Nouveau
Re : UserForm format dans les TextBox

Merci MichD,
J'avais bien compris tes explications, je n'avais juste pas bien placé le code dans la macro et donc la macro ne marchait ni dans la textbox2 ni dans la textbox3. Je me suis mis à VBA il n'y a pas longtemps donc j'ai encore un peu de mal.
Mais c'est bon je l'ai replacé et ça mache très bien.
Je te remercie pour tes explications et pour ton aide, ça me sera bien utile par la suite.
 

Statistiques des forums

Discussions
312 510
Messages
2 089 151
Membres
104 053
dernier inscrit
ftexfr