Formulaire de saisie

Mojojo53

XLDnaute Nouveau
Bonjour,
J'aimerais créer un formulaire de saisie et je me suis servis d'exemple que j'ai trouvé sur le forum pour le réalisé. Mais il y'a quelques petits détails que je n'arrive pas à faire. J'ai mis des commentaires dans mon fichier pour compendre.
 

Pièces jointes

  • Essai formulaire.xls
    104 KB · Affichages: 49

Robert

XLDnaute Barbatruc
Repose en paix
Re : Formulaire de saisie

Bonjour Mojojo, bonjour le forum,

En pièce jointe ton fichier modifié.
• Le nom des différents contrôles est ordonnée (désolé c'est une manie chez moi)
• Regarde la propriété [Tag] des textboxes et comboboxes, elle équivaut à la colonne où doit être renvoyée la valeur du contrôle. C'est grâce à elle que la validation se fait par une simple boucle...
• le code des TextBoxes PIC rajoute deux points ":" automatiquement.
Pour toutes les valeurs inférieures à 10 il faut taper "0" et la valeur.
Dès que les quatre digits sont édités, le contrôle suivant est sélectionné
Pour écrire 05:20, il suffit de taper 0520...
• les Textboxes PIC et Intensité n'acceptent que des chiffres. Aucun autre caractère que {0, 1, 2, 3, 4, 5, 6, 7, 8 ou 9}.
• Le module [Module1] a été supprimé puisque le bouton Valider renvoie toutes les données dans le tableau.

Code commenté...
 

Pièces jointes

  • Mojojo_v01.xls
    79.5 KB · Affichages: 63

Lone-wolf

XLDnaute Barbatruc
Re : Formulaire de saisie

Bonsoir Mojojo, Robert :)

Une autre façon de mise en forme des TextBox's. Mais il faut supprimer les Key Ascii

Code:
Private Sub TextBox2_Change()
TextBox2 = Format(TextBox2, "dddd d mmmm") 'D'après ce que tu as dit sur ton fichier
End Sub

Private Sub TextBox3_Change()
Me.TextBox3 = Replace(Me.TextBox3, ".", ":")
End Sub

Private Sub TextBox4_Change()
Me.TextBox4 = Replace(Me.TextBox4, ".", ":")
End Sub

Private Sub CommandButton1_Click() 'bouton "Valider" ou touche [Entrée]
Dim CTRL As Control 'déclare la variable CTRL (Contrôle)
Dim LI As Long 'déclare la variable LI (Ligne)

LI = DL + 1 'définit la ligne LI
For Each CTRL In Me.Controls 'boucle sur tous les contrôle de l'UserFrom
    'si la propriété [Tag] du contrôle n'est pas vide, renvoie dans la cellule ligne : LI,
    'colonne : propriété [Tag] du contrôle convertie en entier Byte, de l'onglet D, la valeur du contrôle
    If CTRL.Tag <> "" Then D.Cells(LI, CByte(CTRL.Tag)).Value = CTRL.Value
    If CTRL.Tag = "2" Then D.Cells(LI, CByte(CTRL.Tag)).Value = Format(CTRL.Value, "dddd d mmmm")
Next CTRL 'prochain contrôle de la boucle
MsgBox "Les données ont été enregistrées avec succés !" 'message (est-ce vraiment nécessaire ?)
Unload Me 'vide et ferme l'UserForm
End Sub
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Formulaire de saisie

Bonsoir le fil, bonsoir le forum,

@Loup solitaire
Pas tout à fait d'accord avec toi. Si je tape 10.50 ça deviendra 10:50, Ok. Le point est plus facile à taper que deux points mais ça reste un caractère en plus à taper. Avec mon code 1050 suffit. Ça c'est pour le Change.
Pour le KeyPress, si je tape par mégarde !).%) avec ton code ça deviendra !):%) mais ça restera une donnée non exploitable. Alors qu'avec KeyPress seuls les chiffres sont acceptés, évitant ce genre d'erreur.

Puis, si tu utilises :

Code:
Private Sub TextBox2_Change()
TextBox2 = Format(TextBox2, "dddd d mmmm") 'D'après ce que tu as dit sur ton fichier
End Sub
et :
Code:
If CTRL.Tag = "2" Then D.Cells(LI, CByte(CTRL.Tag)).Value = Format(CTRL.Value, "dddd d mm")
La date renvoyée dans la colonne B ne sera pas une date mais du texte. Il faut toujours renvoyer une date au format américain : yyyy/mm/dd. C'est ensuite le format de la cellule qui fait le reste, c'est pourquoi la colonne B du fichier proposé est formatée, elle : jjjj jj mmmm.
 

Discussions similaires

Réponses
17
Affichages
748

Statistiques des forums

Discussions
312 400
Messages
2 088 086
Membres
103 711
dernier inscrit
mindo