Petits exercices de styles sur un formulaire…
- Créer un formulaire
Se rendre dans le VBE (Visual Basic Edit) en appuyant sur les touches ALT+F11. Par un clic droit, on sélectionne les commandes suivantes et l’on obtient un formulaire comme celui en arrière plan - Poser des objets
Avec la boîte à outils nous pouvons déposer sur le formulaire différents objets. Ici 3 TextBoxes, qui nous serviront dans les différents exercicesPlaçons également un bouton
que nous éditerons par un simple clic gauche pour y inscrire « STOP ! ».
Celui-ci nous permettra de fermer le formulaire avec le code suivant que nous entrons en effectuant un double clic sur le bouton
Private Sub CommandButton1_Click() Unload UserForm1 End Sub
Pour faire apparaître le formulaire nous jouerons sur l’événement qui se produit lorsque nous changeons de feuille , on aurait pu choisir autre chose. Remarquez que le code est posé dans ThisWorkbook
Les préparatifs sont terminés
- Donner une apparence (oserais je dire un format ? …pas sûr !) « date » à la TextBox1 Le contenu d’une TextBox est, comme son nom l’indique de type « Texte ». C’est une chose à ne JAMAIS perdre de vue lors de la manipulation de celle-ci. On est bien souvent confronté à un comportement que l’on n’espère pas de notre code parce que l’on oublie ce précepte…Donc, attention…
Faites un double clic sur la textbox1 et entrez le code suivant
Private Sub textbox1_Change() Select Case Len(TextBox1) 'on récupère la longueur du contenu de la textbox Case 2, 5 'si la longueur est de 2 ou bien de 5 caractères on exécutera TextBox1 = TextBox1 & "/" 'donc on peut obtenir par exemple 01/ et puis 01/12 End Select End Sub
-
Il faut savoir qu’à chaque frappe sur une touche, vous provoquez l’événement « Change » dans la textbox. Donc le code ci-dessus va agir comme une boucle (comme un For Each…next). Il va compter combien de caractères vous avez déjà, il va ajouter automatiquement le caractère / lorsque vous aurez frappé 2 caractères (ce qui donne par exemple 25/ ) puis au 5ème caractère (ne pas perdre de vue que Excel a frappé le 3ème à votre place) (ce qui donne 25/12/ ). Il boucle encore inutilement (je vous le concède) lors de la frappe des 2 derniers caractères…Vous avez maintenant du texte qui ressemble à une date.
-
Entrer automatiquement la date du jour dans une textbox Avec le code suivant, chaque fois que le formulaire sera initialisé, la date du jour sera entrée dans la textbox2 mais n’oubliez pas, c’est toujours de type « Texte »
Private Sub UserForm_Initialize() TextBox2 = Format(Now(), "dd/mm/yy") End Sub
- Pour manipuler les textboxes en format date, c’est à dire pouvoir effectuer des calculs en tenant compte des mois à 30 ou 31 jours, etc… il faut Convertir ces données…on peut par exemple calculer la différence en jours entre la TextBox1 et la TexBox2 au moment où l’on entre dans la TextBox3 et afficher le résultat…La fonction ABS permet d’éviter d’avoir le signe « – » (moins) . Remarquez les commandes « CDATE » qui convertissent le type des données
Private Sub TextBox3_Enter() TextBox3 = Abs(CDate(TextBox1) - CDate(TextBox2)) End Sub
Remarquez que je n’ai pas traité les erreurs que l’utilisateur pourrait faire, par exemple entrer une lettre à la place d’un chiffre, ne pas respecter les 28,29,30,31 jours selon les mois, entrer 13 comme mois etc… ceci pour être plus clair mais ce seraient des contrôles à mettre en place
Télécharger le fichier exemple JouerAvecUnFormulaire