Easy-Micro

ESPACEMEMBRE Projet VBA
Formulaire VBA

Projet VBA

VBA Objectif
Créer dynamiquement un classeur de frais (frais_2010.xlsx) à partir d'un formulaire Excel.

VBA Création du formulaire
Dans l'éditeur VBA (Alt + F11), menu Insertion / UserForm
Dans la fenêtre "Propriétés" (menu Affichage / Fenêtre Propriétés), renommer le formulaire (via la propriété Name) en "frm_nouveau_classeur_de_frais" et donnez-lui le titre (propriété Caption) "Nouvelle fiche de frais".

Rajoutez les 4 contrôles suivant (Affichage Boîte à outils) :
◊ Un intitulé (Label) avec la propriété Caption "Année"
◊ Une zone de texte (TextBox) avec la propriété Name : "txt_annee"
◊ Un bouton de commande (CommandButton) avec la propriété Caption "Ok", la propriété Name "btn_ok" et la propriété Default à True (lié à la touche "Entrée").
◊ Un bouton de commande (CommandButton) avec la propriété Caption "Annuler" et la propriété Name "btn_annuler"

Attention : l'ordre d'insertion des contrôles implique la propriété "TabIndex".

VBA
Le formulaire "frm_nouveau_classeur_de_frais"

VBA Code du formulaire
Double cliquer sur les boutons "Ok" et "Annuler" et saisissez ce code dans les procédures évennementielles qui sont apparue:

'Code du bouton "Annuler"
Private Sub btn_annuler_Click()
frm_nouvelle_fiche_de_frais.Hide
End Sub

'Code du bouton "Ok"
Private Sub btn_ok_Click()

'On test la saisie - Code à rajouter plus tard...
If txt_annee.Value = "" Then
MsgBox "Merci de saisir une année", vbCritical, "Données manquantes"
txt_annee.SetFocus
ElseIf IsNumeric(txt_annee.Value) = False Then
MsgBox "Saisie incorrecte", vbCritical, "Données incorrectes"
txt_annee.Value = "" 'Vide le champ
txt_annee.SetFocus
'Si vous voulez obliger une saisie :
'If txt_annee.TextLength >= 4 Then... ' Voir aussi la propriété MaxLength
Else


MsgBox "Création d'un classeur de frais pour l'année " & _
txt_annee.Value, vbInformation + vbOKOnly, "CREATION"

'Appel de procédure distante (voir code du module "Gestion_de_frais")
proc_nouveau_classeur

'Appel de procédure distante (à réaliser plus tard)
proc_recapitulatif_annuel

'Appel de procédure distante (à réaliser encore plus tard)
proc_ajoute_12_nouvelles_feuilles

'Masque le formulaire
frm_nouvelle_fiche_de_frais.Hide 'Ou bien Unload Me

Enf If 'ferme le If du début
End Sub

' Procédure évènementielle de remize à zéro des champs du formulaire (facultative)
' A réaliser sur la feuille de code du formulaire en utilisant les menus d'évènement


Private Sub UserForm_Activate()

txt_annee.Value = "" 'Nettoyage du champ Année
txt_annee.SetFocus 'Met le focus dans le champ

'Remise par defaut du bouton ok (si utilisation du bouton Annuler)
btn_ok.Default = True

End Sub


< Page précédente PROJET VBA Page suivante >