Documentos de Académico
Documentos de Profesional
Documentos de Cultura
NET
89
DescoDev
90
Les fonctions seront ici prsentes au sein de tableau o la premire colonne contient le nom de la fonction, la seconde colonne contient une description de la fonction et la troisime colonne contient un exemple de lutilisation de la fonction. Notez que vous trouverez des explications trs dtailles de chacune des fonctions dans le fichier daide MSDN de Visual Basic.NET.
Pour ceux et celles qui auraient travaill laide des versions antrieures de Visual Basic, notez quil est dsormais obligatoire dencadrer les paramtres au sein de parenthse et, ce, mme lorsque la valeur de retour de la fonction nest pas retenue. Cette nouvelle syntaxe a t adopte afin de standardiser lappel des fonctions et procdures. Notez que lditeur de Visual Basic.NET inscrit automatiquement les parenthses si vous les omettez.
DescoDev
91
Retourne la valeur hexadcimale de lexpression. Retourne la valeur octale de lexpression. Retourne la valeur numrique de lexpression
Retourne 20 Retourne 40
DescoDev
92
Retourne True si lexpression spcifie est une date valide. Retourne True si lexpression spcifie est une valeur nulle non-spcifie correspondant au type System.DBNull. IsDBNull Utilis principalement lors daccs des champs nuls au sein de bases de donnes. Retourne True si lexpression spcifie IsError est un objet de type Error. Retourne True si lobjet spcifi na pas IsNothing t instanci ou a t dtruit. Retourne True si lexpression spcifie IsNumeric est une valeur numrique valide. Retourne True si lexpression spcifie est une rfrence. Retourne donc True IsReference lorsque applique des tableaux, des objets ou des chanes de caractres. Retourne une chane de caractres contenant le nom du type de donnes SystemTypeName .NET correspondant au type de donnes Visual Basic spcifi. TypeName VarType vbTypeName
Exemple Dim Tb() As Integer If IsArray(Tb) Then End If If IsDate(x) Then End If
If IsError(obj) Then End If If IsNothing(obj) Then End If If IsNumeric(x) Then End If Dim Tb() As Integer If IsReference(Tb) Then End If
Dim Ss As String Ss = SystemTypeName( "Long") 'Ss vaut "System.Int64" Dim Ss As String Retourne une chane de caractres Dim X As Integer contenant le nom du type de donnes de Ss = TypeName(x) la variable spcifie. 'Ss vaut "Integer" Retourne le type de donnes de la variable Dim N As Integer X = VarType(N) spcifie. Dim Ss As String Retourne une chane de caractres Ss = SystemTypeName( contenant le nom du type de donnes "Int32") Visual Basic correspondant au type de 'Ss vaut "Integer" donnes .NET spcifi.
DescoDev
93
La fonction MsgBox
La fonction MsgBox permet de spcifier le texte afficher au sein de la bote de dialogue mais galement les boutons et icnes afficher ainsi que le titre que devra arborer la bote de dialogue selon le prototype suivant : MsgBox ( Message [, Boutons] [,Titre] ) Le paramtre Boutons peut prendre lune des valeurs constantes suivantes : Constante MsgBoxStyle.OkOnly MsgBoxStyle.OkCancel MsgBoxStyle.AbortRetryIgnore MsgBoxStyle.YesNoCancel MsgBoxStyle.YesNo MsgBoxStyle.RetryCancel MsgBoxStyle.Critical MsgBoxStyle.Question MsgBoxStyle.Exclamation MsgBoxStyle.Information MsgBoxStyle.DefaultButton1 MsgBoxStyle.DefaultButton2 MsgBoxStyle.DefaultButton3 MsgBoxStyle.SystemModal MsgBoxStyle.MsgBoxRight Valeur 0 1 2 3 4 5 16 32 48 64 0 256 512 4096 524288 Description Affiche le bouton Ok seulement. Affiche les boutons Ok et Annuler. Affiche les boutons Abandonner, Ressayer et Ignorer. Affiche les boutons Oui, Non et Annuler. Affiche les boutons Oui et Annuler. Affiche les boutons Ressayer et Annuler. Affiche licne correspondant aux erreurs critiques. Affiche licne correspondant aux questions. Affiche licne correspondant aux avertissements. Affiche licne correspondant aux informations. Slectionne par dfaut le premier bouton. Slectionne par dfaut le second bouton. Slectionne par dfaut le troisime bouton. Suspend le systme jusqu ce que lutilisateur ait rpondu la bote de message. Affiche le texte align droite.
Pour ceux et celles qui auraient travaill laide des versions antrieures de Visual Basic, notez que les anciennes constantes (vbInformation, vbExclamation, etc) sont encore disponibles et possdent les mmes valeurs que les nouvelles constantes .NET. Ces dernires seront utilises au sein de cet ouvrage afin daugmenter la compatibilit inter-langages du code.
DescoDev
94
Plusieurs valeurs constantes peuvent tre combines laide de loprateur + comme le montre lexemple suivant : MsgBox ("Dsirez-vous interrompre le processus ?", MsgBoxStyle.YesNo + MsgBoxStyle.Question + MsgBoxStyle.DefaultButton2 )
Ce qui produit le rsultat ci-contre. Notez le titre de la bote de dialogue, les deux boutons Oui et Non mais notez plus particulirement que le focus a t dpos par dfaut sur le second bouton. On tentera toujours de dposer le focus par dfaut sur le bouton dont la rponse est la moins dangereuse pour lutilisateur.
Maintenant, reste rcuprer la rponse de lutilisateur une telle question. La fonction MsgBox permet de connatre la rponse de lutilisateur en testant la valeur retourne par cette fonction : Constante MsgBoxResult.Ok MsgBoxResult.Cancel MsgBoxResult.Abort MsgBoxResult.Retry MsgBoxResult.Ignore MsgBoxResult.Yes MsgBoxResult.No Valeur 1 2 3 4 5 6 7 Description Lutilisateur a appuy sur le bouton Ok. Lutilisateur a appuy sur le bouton Annuler. Lutilisateur a appuy sur le bouton Abandonner. Lutilisateur a appuy sur le bouton Ressayer. Lutilisateur a appuy sur le bouton Ignorer. Lutilisateur a appuy sur le bouton Oui. Lutilisateur a appuy sur le bouton Non.
Voici un exemple au sein de lequel lutilisateur est invit spcifier sil dsire terminer un processus quelconque ou sil dsire continuer laide de la bote de dialogue ci-contre. Si lutilisateur appuie sur le bouton Oui, le script sarrte laide de linstruction Exit Do vue prcdemment. Do If MsgBox ("Continuer ?", MsgBoxStyle.YesNo) = MsgBoxResult.No Then Exit Do End If MsgBox ("Alors on recommence", MsgBoxStyle.Information) Loop MsgBox ("Cest ici que cela se termine!", MsgBoxStyle.Information)
DescoDev
95
La fonction InputBox
La fonction InputBox permet de spcifier le texte afficher au sein de la bote de dialogue mais galement le titre que devra arborer la bote de dialogue et la valeur par dfaut inscrite au sein de la zone de saisie selon le prototype suivant : InputBox ( Message [,Titre] [,Defaut] [,xPos] [,yPos] )
Le paramtre optionnel Defaut permet de prciser la saisie par dfaut affiche lutilisateur : Dim strReponse As String strReponse = InputBox("Entrez votre nom", Ce qui produit le rsultat ci-contre. Remarquez que du texte est dj prsent dans la zone de saisie et quil ne reste lutilisateur qu le modifier.
, "Votre nom")
Les paramtres optionnels xPos et yPos permettent de prciser la position exprime en pixels laquelle la bote de saisie devra safficher. La bote saffiche au centre de lcran si aucune valeur pour ces paramtres nest prcise.
Maintenant, reste rcuprer la rponse de lutilisateur. La fonction InputBox permet de connatre la rponse de lutilisateur en rcuprant la valeur retourne par cette fonction. Dans lexemple suivant, lutilisateur est invit prciser sa date de naissance et cette information est ultrieurement stocke dans la variable dNaissance. Ensuite, cette variable peut tre teste afin den assurer la validit. Lexemple suivant recommence la saisie de la date de naissance si linformation saisie par lutilisateur est invalide : Dim dNaissance As System.String '********************************************************************' '* S'assure de rcuprer une date valide. *' '********************************************************************' Do dNaissance = InputBox("Entrez votre date de naissance." & & vbCrLf & vbCrLf & "Spcifiez la date dans le format " & " yyyy-mm-dd") Loop Until IsDate(dNaissance)
Notez que la fonction InputBox retourne une chane vide "" lorsque lutilisateur appuie sur le bouton Annuler de la bote de saisie.
DescoDev
96
Avec les annes 90 et lavnement de lInternet et linternationalisation des communications informatiques, la codification ASCII des caractres sest avre dsute puisquelle ne savait pas intgrer les caractres des diffrents langages internationaux tels larabe et le chinois. Un consortium de fabricants mis alors au point la codification Unicode maintenant reconnue internationalement. Cette nouvelle codification code les caractres sur 16 bits et permet jusqu
DescoDev
97
65536 caractres diffrents. Visual Basic sest adapt cette nouvelle codification et certaines de ses fonctions natives de traitement des chanes de caractres ont t adaptes afin de traiter cette nouvelle approche de la codification des caractres. Notez donc que lensemble des fonctions de traitement des chanes de caractres de Visual Basic ont t prvues pour traiter des caractres ASCII cods sur 8 bits mais que certaines fonctions prvoient lutilisation de caractres Unicode cods sur 16 bits. Ces dernires sont explicitement identifies laide dun W majuscule (pour Wide Unicode).
Dim C As String C = Chr(65) Dim C As String ChrW C = ChrW(65) Dim C1() As String= {"Allo", plante"} Retourne un tableau index zro contenant Filter les sous-lments de la chane de caractres Dim C2() As String C2 = Filter(C1, spcifie selon un critre de filtre. "Allo", True) Dim dtA As Date Dim St As String Retourne lexpression spcifie au sein dun dtA = Today() Format format spcifi. St = Format(dtA, "d MMM yyyy") Dim stArgent As String stArgent = Retourne en format montaire lexpression FormatCurrency FormatCurrency(12.2) spcifie. 'Retourne "12.20" Dim stDate As String stDate = Retourne en format date lexpression FormatDateTime FormatDateTime(Now(), spcifie. vbLongDate) Dim P, N As Single N = 5.6 Retourne en format numrique lexpression FormatNumber P = FormatNumber(N, 2) spcifie. 'Retourne 5.60 Dim st As String Retourne en pourcentage lexpression st= FormatPercent(.85) FormatPercent spcifie o 1 vaut 100%. 'Retourne "85%" Dim St As String Dim C As Char Retourne le caractre contenu la position St = "Allo" GetChar spcifie au sein dune chane de caractres. C = GetChar(St, 3) 'Retourne "o" Dim P As Integer Retourne un entier spcifiant la position de Dim St As String dpart dune occurrence dune chane de InStr St = "Allo" caractres au sein dune autre chane de P = InStr(st, "o") caractres.
Signification Retourne la valeur ASCII du premier caractre de la chane de caractres spcifie. Retourne la valeur Wide Unicode du premier caractre de la chane de caractres spcifie. Retourne le caractre correspondant la valeur ASCII spcifie. Retourne le caractre correspondant la valeur Unicode spcifie.
DescoDev
98
InStrRev
Join LCase
Left
Len
LTrim
LSet
Retourne un entier spcifiant la position de dpart dune occurrence dune chane de caractres au sein dune autre chane de caractres partir de la fin de celle-ci. Retourne une chane de caractres rsultant de la concatnation de deux chanes spcifies au sein dun tableau. Retourne une chane de caractres copie dune chane de caractres spcifie dont les caractres sont convertis en minuscules. Retourne une chane de caractres constitue des premiers caractres dune autre chane de caractres selon le nombre de caractres spcifi. Retourne le nombre de caractres constituants la chane de caractres spcifie. Retourne une chane de caractres constitue dune copie de la chane de caractres spcifie sans espaces avant le premier caractre imprimable. Retourne la chane de caractre spcifie la longueur spcifie en ajoutant des espaces si la longueur de la chane source est insuffisante.
Dim P As Integer Dim St As String St = "Allo" P = InStrRev(st, "o") Dim Ch() As String= {"Allo","plante"} MsgBox(Join(Ch)) Dim St1, St2 As String St1 = "Une phrase" St2 = LCase(St1) Dim St1, St2 As String St1 = "Une phrase" St2 = Left(St1, 3) Dim X As Integer X = Len("Une phrase")
Mid
Replace
Right
RSet
RTrim
Space
Split
Dim St1, St2 As String St1 = " Une phrase " St2 = LTrim(St1) 'Donne "Une phrase " Dim St1, St2 As String St1 = "Left" St2 = LSet(St1, 10) 'Retourne "Left " Dim St1, St2 As String Retourne la chane de caractres contenue St1 = "Bonjour" un endroit spcifi au sein dune autre chane St2 = Mid(St1, 3, 4) de caractres. 'Donne "njou" Dim St1, St2 As String Retourne une chane de caractres copie St1 = "Bonjour" dune autre au sein de laquelle une St2 = Replace(St1, expression est remplace par une expression "o", "?") diffrente. 'Donne "B?nj?ur" Retourne une chane de caractres Dim St1, St2 As String constitue des derniers caractres dune St1 = "Une phrase" autre chane de caractres selon le nombre St2 = Right(St1, 3) de caractres spcifi. Dim St1, St2 As String Retourne la chane de caractre spcifie la longueur spcifie en ajoutant des espaces St1 = "Right" St2 = RSet(St1, 10) si la longueur de la chane source est 'Donne " Right" insuffisante. Dim St1, St2 As String Retourne une chane de caractres St1 = " Une phrase " constitue dune copie de la chane de St2 = RTrim(St1) caractres spcifie sans espaces aprs le 'Donne " Une phrase" premier caractre imprimable. Dim St As String Retourne une chane de caractres St = Space(10) consistant au nombre despaces spcifies. 'Donne " " Dim St1 As String Retourne un tableau uni-dimensionnnel Dim St2() As String constitu des mots dune chane de St1 = "Look at these!" caractres spcifie spars par le caractre St2 = Split(St1) dlimiteur spcifi (par dfaut le caractre 'Donne ["Look", "at", despacement) "these!"]
DescoDev
99
Str
StrComp
Trim
UCase
Dim St As String St = Str(Today()) Dim St1, St2 As String Dim C As Integer Retourne -1, 0, ou 1 selon le rsultat de la comparaison des chanes de caractres. Les St1 = "ABCD" St2 = "abcd" chanes sont compares selon un tri C =StrComp(S11, St2) alphanumrique. 'C donne 0 Dim St1, St2 As String Retourne une chane de caractres convertie St2 = StrConv(St1, dans le format spcifi. vbProperCase) Dim St As String Retourne une chane de caractres St = StrDup(5, "A") constitue dune rptition de n fois le 'Donne "AAAAA" caractre spcifi. Retourne une chane de caractres rsultant Dim St1, St2 As String St1 = "All" de linversion de lordre de tous les St2 = StrReverse(St1) caractres de la chane spcifie. Dim St1, St2 As String Retourne une chane de caractres St1 = " Une phrase " constitue dune copie de la chane de St2 = Trim(St1) caractres spcifie sans espaces avant et 'Donne "Une phrase" aprs le premier caractre imprimable. Dim St1, St2 As String Retourne une chane de caractres copie St1 = "Une phrase" dune chane de caractres spcifie dont les St2 = UCase(St1) caractres sont convertis en majuscules. 'Donne "UNE PHRASE"
Notez que la fonction Left() peut entrer en conflit avec la proprit Left du formulaire si vous utilisez Visual Basic.NET au sein de Windows Forms. Dans ce cas, il peut tre ncessaire de spcifier la librairie laquelle la fonction appartient, en loccurrence Microsoft.VisualBasic comme le dmontre lexemple suivant : Dim K As Integer Dim MaPhrase As String = "All les programmeurs" K = Microsoft.VisualBasic.Left(MaPhrase, 3)
DescoDev
100
Fonctions mathmatiques
En plus des oprateurs arithmtiques de base, Visual Basic dispose de plusieurs fonctions permettant deffectuer des calculs mathmatiques. part Fix() et Int(), les fonctions mathmatiques sont dclares au sein de System.Math qui doit tre inclus au sein du code dsirant utiliser ces fonctions laide de linstruction suivante : Imports System.Math Examinons ces fonctions mathmatiques. Fonction Abs Signification Retourne la valeur absolue de lexpression numrique (sans le signe). Retourne larc tangente en radians dun angle exprim par le ratio de deux cts dun triangle rectangle. Le ratio est la longueur du ct oppos langle divis par la longueur du ct adjacent langle. Pour convertir les radians en degrs, multipliez les radians par 180/pi. Retourne le cosinus en radians dun angle exprim par le ratio de deux cts dun triangle rectangle. Le ratio est la longueur du ct adjacent langle divis par la longueur de lhypothnuse. Pour convertir les radians en degrs, multipliez les radians par 180/pi. Retourne la valeur de ex pour un x donn. Retourne la partie entire dun nombre sans les dcimales et sans arrondissement. Retourne la partie entire dun nombre sans les dcimales aprs arrondissement. Retourne le logarithme naturel dun nombre. Le logarithme naturel, ou nprien, est le logarithme sur la base e valant approximativement 2.718282. Retourne un nombre alatoire situ entre 0 inclusivement et 1 exclusivement. Retourne une valeur indiquant le signe du nombre spcifi. Cette valeur vaut 1 lorsque le nombre est ngatif, 1 lorsque le nombre est positif et 0 lorsque le nombre est nul. Retourne le sinus en radians dun angle exprim par le ratio de deux cts dun triangle rectangle. Le ratio est la longueur du ct oppos langle divis par la longueur de lhypothnuse. Pour convertir les radians en degrs, multipliez les radians par 180/pi. Retourne la racine carre dun nombre. Retourne la tangente en radians dun angle exprim par le ratio de deux cts dun triangle rectangle. Le ratio est la longueur du ct oppos langle divis par la longueur du ct adjacent langle. Pour convertir les radians en degrs, multipliez les radians par 180/pi. Exemple Abs(-2.5) Retourne 2.5
Atan
Cos
Dim Sect As Double Sect = 1 / Cos(1.3) Exp(1) Retourne 2.718282 Retourne 5 Retourne 6
Fix(-5.7) Int(-5.7)
Lg10 = Log(x)/Log(10#) Calcule le logarithme de 10 (Max Min + 1) * Round() + Min Sign(8) Sign(-3) Sign(0) Retourne 1 Retourne 1 Retourne 0
Sin
Sqrt
Sqrt(25)
Retourne 5
Tan
DescoDev
101
Plusieurs fonctions mathmatiques ne sont pas intrinsques Visual Basic.NET telles le calcul de la scante ou le calcul dun sinus hyperbolique. Cependant, ces fonctions mathmatiques peuvent tre connues laide des fonctions mathmatiques intrinsques Visual Basic : Fonction Coscante Cotangente Scante Sinus inverse Cosinus inverse Scante inverse Coscante inverse Cotangente inverse Sinus hyperbole Cosinus hyperbole Tangente hyperbole Scante hyperbole Coscante hyperbole Csc(x) Ctan(x) Sec(x) Asin(x) Acos(x) Asec(x) Acsc(x) Acot(x) Sinh(x) Cosh(x) Tanh(x) Sech(x) Csch(x) quivalent 1 / Sin(x) 1 / Tan(x) 1 / Cos(x) Atan(x / Sqrt(-x * x + 1)) Atan(-x / Sqrt(-x * x + 1)) + 2 * Atan(1) 2 * Atan(1) Atan(Sgn(x)/Sqrt(x * x 1)) Atan(Sgn(x) / Sqrt(x * x 1)) 2 * Atan(1) Atan(x) (Exp(x) Exp(-x)) / 2 (Exp(x) + Exp(-x)) / 2 (Exp(x) Exp(-x)) / (Exp(x) + Exp(-x)) 2 / (Exp(x) + Exp(-x)) 2 / (Exp(x) - Exp(-x)) (Exp(x) + Exp(-x)) / (Exp(x) - Exp(-x))
DescoDev
102
Fonctions financires
Visual Basic dispose de plusieurs fonctions permettant deffectuer des calculs pour des fins financires comme le calcul de taux dintrts et dannuits. Voici la liste de ces fonctions financires : Fonction DDB FV Signification Retourne lamortissement dun bien pour une priode dtermine selon la mthode double-declining balance . Retourne la valeur future dune annuit selon des versements priodiques et un taux dintrts constant. Retourne une valeur spcifiant le montant, sur une priode donne, d'une annuit base sur des versements constants et priodiques et sur un taux d'intrt fixe Retourne une valeur spcifiant le taux de rendement interne d'une srie de mouvements de trsorerie priodiques. Retourne une valeur spcifiant le taux de rendement interne modifi d'une srie de mouvements de trsorerie priodiques. Retourne une valeur spcifiant le nombre d'chances d'une annuit base sur des versements constants et priodiques et sur un taux d'intrt fixe. Retourne une valeur spcifiant la valeur nette actuelle d'un investissement, calcule en fonction d'une srie de mouvements de trsorerie priodiques et d'un taux d'escompte. Retourne une valeur spcifiant le remboursement du capital, pour une chance donne, d'une annuit base sur des versements constants et priodiques et sur un taux d'intrt fixe. Retourne une valeur spcifiant le montant actuel d'une annuit base sur des chances futures constantes et priodiques, et sur un taux d'intrt fixe. Exemple Dim X As Double X = DDB(cout, val_resid, duree, per) Dim X As Double X = FV(taux, npmt, pmt, va, type) Dim X As Double X = IPmt(APR / 12, Per, TotPmts, -PVal, Fval, PayType) Dim X As Double X = IRR(Values, Guess) * 100 Dim X As Double X = MIRR(Values, LoanAPR, InvAPR) Dim X As Double X = NPer(APR / 12, -Payment, PVal, FVal, PayType) Dim X As Double X = NPV(RetRate, valeurs) Dim X As Double X = PPmt(APR / 12, Period, TotPmts, -PVal, FVal, PayType)
IPmt
IRR MIRR
NPer
NPV
PPmt
PV
Rate
SLN
Dim X As Double X = PV(APR, TotPmts, -YrIncome, FVal, PayType) Dim X As Double X = (Rate(TotPmts, Retourne une valeur spcifiant le taux d'intrt -Payment, PVal, par chance pour une annuit FVal, PayType, Guess) * 12) * 100 Dim X As Double Retourne une valeur spcifiant l'amortissement X = SLN(InitCost, SalvageVal, LifeTime) linaire d'un bien sur une priode donne. Dim X As Double Retourne une valeur spcifiant l'amortissement X = SYD(InitCost, SlvgVal, LifeTime, global d'un bien sur une priode donne. DepYear)
SYD
DescoDev
103
La section gauche de linterface utilisateur est compose de trois botes de texte (TextBox) et dautant dtiquettes (Label) permettant didentifier lutilisateur lutilit de chacune des botes de texte. Composant TxtTaux TxtNbr TxtMontant Description Bote de texte permettant la saisie du taux dintrt. Bote de texte permettant la saisie du nombre de mensualits. Bote de texte permettant la saisie du montant vers mensuellement.
La section droite de linterface utilisateur est quant elle compose de six tiquettes (Label) regroups par paire et permettant dafficher les rsultats des calculs de lapplication. Les tiquettes au sein de lesquelles les valeurs seront affiches sont identifies comme suit au sein du code de lexemple : Composant LblCapital LblInterets LblTotal Description tiquette affichant le total de capital pay. tiquette affichant le total dintrts pay. tiquette affichant le montant total pay pour ce prt.
Dabord, initialisez les proprits Text de chacun des composants afin quils possdent les bonnes valeurs au dmarrage de lapplication. Ensuite, crez la procdure Calculer()comme suit :
DescoDev
104
Imports System.Math Public Class Form1 Inherits System.Windows.Forms.Form Region " Windows Form Designer generated code " Private Sub Calculer() Dim Taux As Double, Montant As Double Dim Total As Double, Nbr As Integer End Sub La fonction Calculer() effectuera lensemble des calculs et des mises jour de laffichage lutilisateur. Quatre variables sont dclares afin de stocker les informations saisies par lutilisateur. Cependant, ces informations peuvent contenir des caractres indsirables tels les symboles $ et % que nous devrons supprimer afin de rendre les informations utilisables. Nous pouvons utiliser la fonction Replace() afin de remplacer les caractres indsirables par des chanes vides : Nbr = CInt(txtNbr.Text) Montant = CDbl(Replace(Replace(txtMontant.Text,"$", ""), ".", ",")) Taux = CDbl(Replace(Replace(txtTaux.Text, "%", ""), ".", ",")) La fonction financire FV() nous permettra ensuite de connatre le montant total dun prt : Total = Abs(FV(Taux / 100 / Nbr, Nbr, Montant)) Les valeurs trouves peuvent tre affiches lutilisateur. La fonction Format() nous permettra ici de mettre en forme le texte afin quil saffiche en format montaire ou en pourcentage : LblTotal.Text = Format(Total, "0.00") & "$" LblCapital.Text = Format(Montant * Nbr, "0.00") & "$" LblInterets.Text = Format(Total - (Montant * Nbr), "0.00") & "$" Finalement, on pourrait remettre en forme le texte saisie par lutilisateur si jamais celui-ci avait supprim les caractres $ et %. txtTaux.Text = Format(Taux, "0.0") & "%" txtMontant.Text = Format(Montant, "0.00") & "$"
DescoDev
105
Ensuite, la procdure Calculer() est excute au chargement du formulaire laide de lvnement Load() du formulaire puis chaque fois que lutilisateur dplace le focus dune bote de texte vers une autre laide de lvnement Validating() des botes de texte. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Calculer() End Sub Private Sub txtTaux_Validating(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles txtTaux.Validating Calculer() End Sub
Voici donc le code complet de lapplication financire : Imports System.Math Public Class Form1 Inherits System.Windows.Forms.Form Region " Windows Form Designer generated code " Private Sub Calculer() Dim Taux As Double, Montant As Double Dim Total As Double, Nbr As Integer '******* Assure la validit des valeurs ************' Nbr = CInt(txtNbr.Text) Montant = CDbl(Replace(Replace(txtMontant.Text,"$", ""), ".", ",")) Taux = CDbl(Replace(Replace(txtTaux.Text, "%", ""), ".", ",")) '*********** Calcule les valeurs *******************' Total = FV(Taux / 100 / Nbr, Nbr, Montant) * -1 '******* Affiche les valeurs lutilisateur *********' LblTotal.Text = Format(Total, "0.00") & "$" LblCapital.Text = Format(Montant * Nbr, "0.00") & "$" LblInterets.Text = Format(Total - (Montant * Nbr), "0.00") & "$" txtTaux.Text = Format(Taux, "0.0") & "%" txtMontant.Text = Format(Montant, "0.00") & "$" End Sub
DescoDev
106
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Calculer() End Sub Private Sub txtTaux_Validating(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles txtTaux.Validating Calculer() End Sub Private Sub txtMontant_Validating(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles txtMontant.Validating Calculer() End Sub Private Sub txtNbr_Validating(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles txtNbr.Validating Calculer() End Sub End Class
Testez votre application de calcul des taux dintrts en slectionnant le menu Dboguer / Dmarrer ou en appuyant simplement sur la touche F5 ou CTRL+F5 selon la configuration de votre clavier.
DescoDev
107
Fonction DateAdd
DateDiff
Signification Retourne une date rsultant de laddition dun nombre de jour, de mois ou dannes spcifi. La fonction soustrait si la valeur spcifie est ngative. Retourne le nombre de jours, de mois ou dannes espaant deux dates spcifies. Les constantes utilises sont "d" = jours, "m"= mois, "yyyy" = annes, "h" = heures, "n" = minutes et "s" = secondes. Retourne une partie spcifique de la date spcifie. Peut tre le jour, le mois, etc. Retourne une date en format Date partir dinformations en format sriel. Retourne la date courante en format String selon lheure systme. Retourne une date en format Date partir dinformations spcifies en format String. Retourne le numro du jour contenu au sein dune expression spcifie. Retourne les heures contenues au sein dune expression spcifie. Retourne les minutes contenues au sein dune expression spcifie. Retourne le numro du mois (entre 1 et 12) contenu au sein dune expression spcifie.
Exemple Dim dt1, dt2 As Date dt1 = Today() dt2 = DateAdd("d",15, dt1) Dim dDiff As Date dDiff = DateDiff("m", dNaissance, Today()) Dim nMois As Integer Dim dA As Date dA = Today() nMois =DatePart(dA, "m") 'Retourne le mois MsgBox(DateSerial(1975, 11, 3)) 'Donne "3 novembre 1975" MsgBox(DateString)
DatePart
DateSerial DateString DateValue Day Hour Minute Month MonthName Now Second TimeOfDay TimeSerial TimeString
Dim dtA As Date dtA = DateValue("1/31/2000") Dim nJour As Integer nJour = Day(Today()) Dim nHr As Integer nHr=Hour(TimeOfDay()) Dim nMin As Integer nMin=Minute(TimeOfDay()) Dim nMois As Integer nMois = Month(Today()) Dim nMois As Integer Retourne le nom du mois correspondant au nMois = Month(Today()) MsgBox "Nous sommes au numro de mois spcifi. mois "& MonthName(nMois) Retourne la date du jour courant et lheure MsgBox Now() courante selon les date et heure systmes. Dim nSec As Integer Retourne les secondes contenues au sein nSec=Second(TimeOfDay()) dune expression spcifie. Retourne lheure courante selon lheure MsgBox(TimeOfDay) systme. MsgBox(TimeSerial( 23, Retourne une date en format Date partir 75, 0)) dinformations en format sriel. '"1/2/0001 12:15:00 AM" Retourne lheure courante en format MsgBox(TimeString) String selon lheure systme.
DescoDev
108
Retourne une date en format Date partir dinformations spcifies en format String. Retourne la date du jour courant selon la date systme. Retourne le numro du jour de la semaine (entre 1 et 7) contenu au sein dune expression date spcifie.
Dim dtA As Date dtA = TimeValue("4:35:17 PM") MsgBox Today() Dim nJour As Integer nJour = WeekDay(Today()) Dim n As Integer Dim strJour As String n = WeekDay(Today()) strJour = WeekDayName(n) Dim nAn As Integer nAn = Year(Today())
Retourne le nom du jour de la semaine WeekDayName correspondant au numro de jour spcifi. Year Retourne lanne contenu au sein dune expression date spcifie.
Outre les tiquettes permettant didentifier les contrles, linterface utilisateur est compose dun contrle DateTimePicker et dun bouton. Composant dtNaissance btnCalculerAge Description Contrle permettant la saisie de la date de naissance. Bouton permettant de lancer le calcul de lge de la personne.
DescoDev
109
Dabord, initialisez les proprits de chacun des composants afin quils possdent les bonnes valeurs au dmarrage de lapplication. Ensuite, codez lvnement Click du bouton comme suit: Private Sub btnCalculerAge_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCalculerAge.Click Dim dNaissance As Date Dim nDiff, nJours As Long Dim StrDate As String '**** Stocke la date de naissance dans la variable *******' dNaissance = dtNaissance.Value '*********** Calcule le nombre de mois restants *********' nDiff = DateDiff(DateInterval.Month, dNaissance, Today()) '********** Calcule le nombre de jours restants *********' nJours = DateDiff("d", DateAdd(DateInterval.Month, nDiff, dNaissance), Today()) '********* Affiche le rsultat lutilisateur **********' strDate = WeekdayName(Weekday(dNaissance)) & " le " & Microsoft.VisualBasic.Day(dNaissance) & " " & MonthName(Month(dNaissance)) & " " & Year(dNaissance) MsgBox("Si vous tes n(e) " & StrDate & " vous avez " & nDiff \ 12 & " ans, " & nDiff Mod 12 & " mois et " & nJours & " jours.", MsgBoxStyle.Information) End Sub
DescoDev
110
Signification Change le rpertoire de travail courant. Change le lecteur de travail courant. Retourne le chemin du rpertoire de travail courant. Retourne le nom dun fichier, dun rpertoire ou dun lecteur. La fonction retourne une chane vide "" si le fichier ou le rpertoire nexiste pas. Copie le fichier spcifi en un nouveau fichier au nom spcifi. Retourne les informations de date de cration et de modification dun fichier. Retourne le nombre doctets occups par le fichier spcifi. Retourne les attributs (cach, systme, etc) dun fichier ou dun rpertoire. Procde la suppression du fichier spcifi. Procde la cration du rpertoire spcifi. Renomme le rpertoire ou le fichier spcifi. Procde la suppression du rpertoire spcifi. Spcifie les attributs (cach, systme, etc) dun fichier ou dun rpertoire.
Exemple ChDir("c:\winnt") ChDir("e") Dim St As String St = CurDir() Dim StFile As String StFile = Dir("c:\Winnt\win.ini") 'Retourne "win.ini" FileCopy("c:\boot.ini", "d:\boot.ini") Dim Lng As Long Lng = FileLen("c:\boot.ini") Dim N As Long N = GetAttr("c:\boot.ini") If N And vbHidden Then 'Un fichier cach! End If Kill ("c:\fichier.txt") MkDir("c:\dossier") Rename("c:\dossier1", "c:\dossier2") RmDir("c:\dossier") SetAttr("c:\boot.ini", vbHidden) 'Cache le fichier
GetAttr
DescoDev
111
Les fonctions Dir, GetAttr et SetAttr utilisent les constantes suivantes afin de connatre les attributs dun fichier ou dun dossier. Voyez lexemple complet suivant afin de mieux comprendre lutilisation de ces constantes.
Description Ne possde aucun attribut particulier. Est en lecture seulement. Est un fichier ou un dossier cach. Est un fichier ou un dossier systme. Est un dossier. Est un fichier ou un dossier archiv. Est un alias (raccourci) vers un autre fichier ou dossier.
DescoDev
112
Linterface utilisateur est compose dune zone de texte (TextBox) et dun bouton permettant de parcourir les rpertoires afin de slectionner un fichier. Composant txtFichier btnParcourir Description Bote de texte permettant la saisie du chemin et nom du fichier. Bouton activant une bote de dialogue commun permettant de parcourir les dossiers la recherche dun fichier. Les contrles de bote de dialogue commun sera explor en profondeur au chapitre 6.
Trois cases cocher permettent dafficher les attributs du fichier slectionn par lutilisateur et un tiquette (Label) permet dafficher la date de cration ou de dernire modification du fichier. Composant Description tiquette affichant la date de cration ou de dernire modification du lblDateCreation fichier. lblAvertissement tiquette affich lutilisateur lorsque le fichier nexiste pas. chkHidden chkSysten chkReadOnly Case cocher affichant si le fichier spcifi est cach. Case cocher affichant si le fichier spcifi est un fichier systme. Case cocher affichant si le fichier spcifi est en lecture seule.
DescoDev
113
Lorsque lutilisateur spcifie un nom de fichier dans la zone de texte, le contrle soulve lvnement TextChanged. Lorsque lutilisateur utilise le bouton Parcourir pour slectionner un fichier, le chemin de ce dernier est stock dans la zone de texte ce qui a pour effet de changer le contenu de celle-ci et de soulever galement lvnement TextChanged. Nous utiliserons donc cet vnement afin de rcuprer les attributs du fichier slectionn par lutilisateur. La premire chose faire est de dsactiver le groupe des contrles affichant les attributs du fichier si ce dernier nexiste pas. En effet, le fait de lire les attributs dun fichier inexistant provoquerait une erreur. Ainsi, nous utiliserons la fonction Dir() qui retourne une chane vide si le fichier spcifi nexiste pas. Private Sub txtFichier_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtFichier.TextChanged '******* Affiche si le fichier existe ou non ***************' LblAvertissement.Visible = Dir(txtFichier.Text) = "" GroupBox1.Enabled = Not LblAvertissement.Visible
Ensuite, notre code rcuprera les attributs du fichier laide de la fonction GetAttr() seulement si le fichier spcifi existe. La fonction GetAttr() vous retourne lensemble des valeurs numriques reprsentant les attributs du fichier au sein dune mme valeur. Vous pouvez connatre si le fichier possdait un attribut particulier en testant cette valeur laide de loprateur And. Lexemple suivant permet de savoir si un fichier est en lecture seule : If GetAttr("c:\bootcfg.log") And vbReadOnly Then Le fichier est en lecture seule End If Finalement, nous utiliserons la fonction FileDateTime() afin de connatre la date de cration ou de dernire modification du fichier. '************* Affiche les attributs du fichier ************' Dim nAttributs As Long If Dir(txtFichier.Text) <> "" Then nAttributs = GetAttr(txtFichier.Text) chkHidden.Checked = nAttributs And vbHidden chkSystem.Checked = nAttributs And vbSystem chkReadOnly.Checked = nAttributs And vbReadOnly '********** Date de cration du fichier ********' LblDateCreation.Text = FileDateTime(txtFichier.Text) End If End Sub
DescoDev
114
Voici donc le code complet de lapplication de traitement des fichiers : Public Class FrmFichiers Inherits System.Windows.Forms.Form Region " Windows Form Designer generated code " Private Sub btnParcourir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnParcourir.Click '******* Permet l'utilisateur de choisir un fichier If OpenDialog.ShowDialog() = DialogResult.OK Then txtFichier.Text = OpenDialog.FileName End If End Sub Private Sub txtFichier_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtFichier.TextChanged '********** Affiche si le fichier existe ou non ***********' LblAvertissement.Visible = Dir(txtFichier.Text) = "" GroupBox1.Enabled = Not LblAvertissement.Visible '************ Affiche les attributs du fichier Dim nAttributs As Long ************' ******'
If Dir(txtFichier.Text) <> "" Then nAttributs = GetAttr(txtFichier.Text) chkHidden.Checked = nAttributs And vbHidden chkSystem.Checked = nAttributs And vbSystem chkReadOnly.Checked = nAttributs And vbReadOnly '********** Date de cration du fichier ********' LblDateCreation.Text = FileDateTime(txtFichier.Text) End If End Sub End Class
Testez votre application de traitement des fichiers en slectionnant le menu Dboguer Dmarrer ou en appuyant simplement sur la touche F5 ou CTRL+F5 selon la configuration de votre clavier.
DescoDev
115
EOF
FileClose
FileGet
FileGetObject
FileLen
FileOpen
FilePut
FilePutObject
DescoDev
116
FileWidth
Fixe la largeur dune ligne dun fichier ouvert laide de FileOpen. Aucune largeur maximale nest impose lorsque la valeur spcifie vaut zro.
FreeFile
InputString
LineInput
Loc
Lock
LOF
PrintLine
Reset
Seek
Unlock
Dim F As Integer F = FreeFile() FileOpen(F, fch, md) FileWidth(F, 5) FileClose(F) Retourne un identificateur numrique de Dim F As Integer fichier disponible. Utilisez cette mthode F = FreeFile() FileOpen(F, fch, md) afin dobtenir un numro identifiant de FileClose(F) manire unique le fichier ouvrir. Dim C As Char Lit le nombre de caractres spcifi dun FileOpen(1, fch, md) fichier ouvert et les retourne au sein de Do While Not EOF(1) la chane de caractres spcifie. Valide C = InputString(1, 1) que lorsque le fichier est ouvert en mode Loop Input ou Binary. FileClose(1) Dim Txt As String Lit une ligne dun fichier ouvert et la FileOpen(1, fch, md) retourne au sein de la chane de Do Until EOF(1) caractres spcifie. Valide que lorsque Txt = LineInput(1) le fichier est ouvert en mode Input ou Loop Binary. FileClose(1) Do While Not EOF(1) Retourne un entier long contenant la Console.WriteLine(Loc(1)) position courant au sein dun fichier Loop ouvert en lecture ou en criture. FileOpen(1, fch, md) Lock(1) Verrouille un fichier ouvert afin que les FilePut(1, S) autres processus ne puisse y accder. FileClose(1) fch = "c:\MonFichier.txt" Retourne les dimensions en octets du md = OpenMode.Input fichier spcifi. Le fichier doit tre FileOpen(1, fch, md) pralablement ouvert laide de la Longueur = LOF(1) mthode FileOpen. FileClose(1) Dim Txt As String = "All" crit une ligne dans un fichier ouvert. FileOpen(1, fch, md) Valide que lorsque le fichier est ouvert Print(1, Txt) en mode Input ou Binary. FileClose(1) crit une ligne dans un fichier ouvert. Dim Txt As String = "All" Ajoute automatiquement un saut de ligne FileOpen(1, fch, md) aprs la ligne crite. Valide que lorsque PrintLine(1, Txt) le fichier est ouvert en mode Input ou FileClose(1) Binary. Ferme lensemble des fichiers fch = "c:\MonFichier.txt" couramment ouverts. Possde la mme md = OpenMode.Input FileOpen(1, fch, md) utilit que FileClose lorsquaucun Reset() paramtre ne lui est spcifi. FileOpen(1, fch, md) Retourne ou dtermine la position au Seek(1, 72) sein dun fichier ouvert en lecture ou en FileClose(1) criture. FileOpen(1, fch, md) Dverrouille un fichier ouvert et Lock(1) pralablement verrouill laide de la FilePut(1, S) fonction Lock et permet aux autres Unlock(1) processus dy accder. FileClose(1)
DescoDev
117
Signification Provoque la suppression de la cl spcifie. Retourne la valeur contenue au sein de la base de registre pour la cl spcifie. Retourne la valeur contenue au sein de la base de registre pour la cl spcifie. Spcifie la valeur inscrire au sein de la base de registre pour la cl spcifie. La cl est cre si celleci nexiste pas.
Exemple DeleteSetting("MonApp", Cfg") Dim St As String St = GetSetting("MonApp", "Cfg", "Valeur", "0") Dim St(,) As String St =GetAllSettings("MonApp", "Cfg") SaveSetting("MonApp", "Cfg", "Valeur", "0")
GetAllSettings
SaveSetting
DescoDev
118
Les nom, prnom et dimensions du formulaire seront conservs entre chacune des utilisations du logiciel afin dtre rappels au dmarrage de celui-ci.
Linterface utilisateur est compose de deux zones de texte (TextBox) et dautant dtiquettes (Label) permettant didentifier lutilisateur lutilit de chacune des botes de texte. Composant TxtNom TxtPrenom Description Bote de texte permettant la saisie du nom de lutilisateur. Bote de texte permettant la saisie du prnom de lutilisateur.
Finalement, un bouton permet lutilisateur de quitter lapplication. Composant BtnQuitter Description Bouton permettant de mettre fin lapplication.
DescoDev
119
Dabord, localisez lvnement Closing du formulaire, vnement soulev lorsque le formulaire est ferm. Ainsi, lorsque lutilisateur quittera lapplication, notre code en profitera pour enregistrer les prfrences de lutilisateur au sein de la base de registre. Inscrivez votre code avant celui automatiquement gnr par lassistant de Visual Studio.NET comme suit : Private Sub FrmRegistre_Closing( ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles MyBase.ClosingOverloads '**** Inscrit les informations dans la base de registre SaveSetting("ExempleRegistre.NET", "Config", "Nom", txtNom.Text) SaveSetting("ExempleRegistre.NET", "Config", "Prenom", txtPrenom.Text) SaveSetting("ExempleRegistre.NET", "Config", "Hauteur", Me.Height) SaveSetting("ExempleRegistre.NET", "Config", "Largeur", Me.Width) End Sub *****'
Maintenant , il suffit de rcuprer les enregistrements au dmarrage de lapplication. La fonction GetSetting nous permet de lire au sein de la base de registre. Par contre, il est important de porter attention de lire les mmes cls que celles qui ont t prcdemment inscrites. Private Sub FrmRegistre_Load( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load '****** Charge les informations de la base de registre *****' txtNom.Text = GetSetting("ExempleRegistre.NET", "Config", "Nom", "") txtPrenom.Text = GetSetting("ExempleRegistre.NET", "Config", "Prenom", "") Me.Width = CLng(GetSetting("ExempleRegistre.NET", "Config", "Largeur", Me.Width)) Me.Height = CLng(GetSetting("ExempleRegistre.NET", "Config", "Hauteur", Me.Height)) End Sub
DescoDev
120
Finalement, nous pouvons rendre notre application plus fonctionnelle en permettant lutilisateur de quitter lapplication en cliquant sur le bouton Quitter. Lobjet Form possde la mthode Dispose() qui permet de forcer la fermeture du formulaire. Lorsque lensemble des formulaires sont ferms, lapplication est automatiquement stoppe. Vous pouvez galement utiliser la mthode Application.Exit afin de quitter lapplication si les permissions de lutilisateur en cours le permettent. Private Sub btnQuitter_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnQuitter.Click Application.Exit() End Sub
Testez votre application daccs la base de registres en slectionnant le menu Dboguer Dmarrer ou en appuyant simplement sur la touche F5 ou CTRL+F5 selon la configuration de votre clavier.
DescoDev