Vous êtes sur la page 1sur 32

Les fonctions de Visual Basic.

NET

89

5 Les fonctions de Visual Basic.NET

DescoDev

Les fonctions de Visual Basic.NET

90

5. Les fonctions de Visual Basic.NET


Visual Basic comprend un nombre important de fonctions permettant au programmeur de procder toutes sortes de traitements. Les fonctions retournent gnralement des valeurs de retour et leur appel doit tre suivi de parenthses. Dans lexemple suivant, la fonction Now() est utilise afin de connatre la date et lheure courantes. La valeur de retour sera stocke au sein de la variable Aujourdhui. Dim Aujourdhui As Date Aujourdhui = Today() Certaines fonctions attendent des paramtres. Lorsque les fonctions attendent des paramtres, ceux-ci sont prciss entre les parenthses et spars les uns des autres par une virgule. Voici un exemple au sein de lequel la variable Position contiendra la position laquelle lexpression plante est trouve au sein dune chane de caractres. Finalement, la fonction MsgBox() est utilise afin dafficher lutilisateur le rsultat de la trouvaille : Dim Position As Integer Dim Chaine As String = "All la plante" Position = InStr(Chaine, "plante") MsgBox( "Plante trouve la position " & Position )

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

Les fonctions de Visual Basic.NET

91

Fonctions de conversion de types


Visual Basic prvoit les fonctions ncessaires afin de convertir explicitement des valeurs dun type de donnes vers un type de donnes diffrent. Ces fonctions peuvent savrer grandement utiles lorsque vient le temps, par exemple, de traiter une date saisie par lutilisateur au sein dune bote de texte et de calculer, par exemple, le nombre de jour la sparant de la date daujourdhui. Dans ce cas, la chane de caractres contenues dans la bote de texte doit tre convertie explicitement en format Date avant dtre traite. Voyez lexemple suivant mais notez que les fonctions de traitement des dates seront vues en profondeur plus loin dans ce chapitre. Dim MaDate As Date, NbrJours As Integer MaDate = CDate(txtDate.Text) NbrJours = DateDiff(DateInterval.Day, MaDate, Date()) Les fonctions de conversion de types trouvent toute leur utilit lorsque vous codez avec loption Strict la valeur On. Dans ce cas, tous les types de donne doivent correspondre afin de pouvoir sassigner mutuellement. Sils ne correspondent pas, les fonctions de conversions de type doivent tre utilises afin de rsoudre le problme. Voici la liste des fonctions de conversion de type prvues par Visual Basic.NET : Fonction CBool CByte CChar CDate CDbl CDec CInt CLng CObj CShort CSng CStr CType Signification Conversion explicite en Boolean. Conversion explicite en Byte. Conversion explicite en Char. Conversion explicite en Date. Conversion explicite en Double. Conversion explicite en Decimal. Conversion explicite en Integer. Conversion explicite en Long. Conversion explicite en Objet. Conversion explicite en Short. Conversion explicite en Single. Conversion explicite en String. Conversion explicite en type de donne spcifi. CStr(stNom) CType(nbrA, Single) CShort(1.2) Retourne 1 Exemple CBool(2) CByte(1.2) CChar(65) CDate("2000-01-01") CDbl(1.2) CDec(1.2) CInt(1.2) CLng(1.2) Retourne 1 Retourne 1 Retourne True Retourne 1

Hex Oct Val

Retourne la valeur hexadcimale de lexpression. Retourne la valeur octale de lexpression. Retourne la valeur numrique de lexpression

Hex(32) Oct(32) Val(nbrA)

Retourne 20 Retourne 40

DescoDev

Les fonctions de Visual Basic.NET

92

Fonctions de types de donnes


Visual Basic prvoit certaines fonctions permettant de connatre le type dinformation contenu au sein dune variable avant de procder son traitement. Ces fonctions peuvent savrer utiles lorsque vient le temps, par exemple, de traiter une date saisie par lutilisateur au sein dune bote de texte et de vrifier que lutilisateur a saisi une valeur valide. Dim dtNaissance As Date If IsDate(txtNaissance.Text) Then dtNaissance = CInt(txtNaissance.Text) Else MsgBox ("Veuillez entre une date valide !") End If

Fonction IsArray IsDate

Signification Retourne True si lexpression spcifie est un tableau.

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 IsDBNull(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

Les fonctions de Visual Basic.NET

93

Fonctions dinteractivit avec lutilisateur


Visual Basic prvoit quelques fonctions permettant linteraction directe avec lutilisateur dont deux que nous tudierons plus en profondeur. Fonction Beep MsgBox InputBox Description Gnre un signal sonore. Affiche une bote de message lutilisateur. Affiche une bote dinvite lutilisateur et retourne la valeur saisie par celui-ci. Exemple Beep() MsgBox ("All la plante") strR = InputBox("Entrez " & "un nombre entre 1 et 10")

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

Les fonctions de Visual Basic.NET

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

Les fonctions de Visual Basic.NET

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

Les fonctions de Visual Basic.NET

96

Fonctions de traitement des chanes de caractres


Visual Basic dispose de plusieurs fonctions permettant de manipuler les chanes de caractres. Cependant, avant de commencer, il peut tre important de distinguer les caractres ASCII des caractres Unicode. Autrefois, les chanes de caractres taient constitues de caractres cods sur 8 bits regroups arbitrairement au sein dune table dite ASCII. Selon cette table, les lettres majuscules occupaient les positions 65 90 (A Z), les lettre minuscules occupaient les positions 97 122 (a z), les nombres occupaient les positions 48 57 (0 9) et les autres symboles occupaient diverses autres positions. La valeur ordinale des caractres tait et est toujours reconnu internationalement pour les caractres de 0 127 dont la table dassociation est inscrite cidessous. La valeur des caractres supplmentaires taient alors attribue selon le systme dexploitation, DOS ou Windows.

Figure 5.1 Table ASCII des caractres standards (0 127)

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

Les fonctions de Visual Basic.NET

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).

Fonction Asc AscW Chr

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.

Exemple Dim C As Byte C = Asc("A") Dim C As Short C = AscW("A")

DescoDev

Les fonctions de Visual Basic.NET

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

Les fonctions de Visual Basic.NET

99

Str

Retourne une chane de caractres reprsentant lexpression spcifie.

StrComp

StrConv StrDup StrReverse

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

Les fonctions de Visual Basic.NET

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

Dim PI As Double PI = 4 * Atan(1)

Cos

Dim Sect As Double Sect = 1 / Cos(1.3) Exp(1) Retourne 2.718282 Retourne 5 Retourne 6

Exp Fix Int Log Round Sign

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

Dim CoSec As Double CoSec = 1 / Sin(1.3)

Sqrt

Sqrt(25)

Retourne 5

Tan

Dim CoTan As Double CoTan = 1 / Tan(1.3)

DescoDev

Les fonctions de Visual Basic.NET

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))

Cotangente hyperbole Coth(x)

DescoDev

Les fonctions de Visual Basic.NET

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

Les fonctions de Visual Basic.NET

103

Exemple dune application financire


Lexemple suivant met en uvre la conception dune interface utilisateur laide des contrles de base de Visual Basic, lutilisation des fonctions de traitement des chanes de caractres et lutilisation de fonctions financires. Lexemple suivant est constitu dune application financire permettant de connatre les montants en capital et en intrts pays sur un emprunt ou sur un prt selon un taux dintrts, un nombre de mensualits et un montant des mensualits prciss par lutilisateur. Les informations spcifies par lutilisateur seront constamment valides afin que celui-ci ne puisse inscrire que des valeurs valides. De plus, les calculs seffectueront mesure que lutilisateur modifiera les valeurs contenues au sein des botes de texte.

Figure 5.2 Interface utilisateur de lapplication financire

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

Les fonctions de Visual Basic.NET

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

Les fonctions de Visual Basic.NET

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

Le code se poursuit sur la page suivante

DescoDev

Les fonctions de Visual Basic.NET

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

Les fonctions de Visual Basic.NET

107

Fonctions de traitement des dates et de lheure


Visual Basic dispose dune pluralit de fonctions permettant deffectuer des calculs et divers traitements sur les dates. Les fonctions suivantes sont intrinsques au langage et ne ncessitent linclusion daucune rfrence. Examinons ces fonctions de traitement des dates et de lheure.

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

Les fonctions de Visual Basic.NET

108

TimeValue Today WeekDay

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.

Exemple dune application manipulant les dates


Lexemple suivant met en uvre la conception dun interface utilisateur laide des contrles de base de Visual Basic et lutilisation des fonctions de traitement des dates. Lexemple suivant est constitu dune application permettant de connatre lge exact dune personne selon sa date de naissance. Les informations spcifies par lutilisateur seront saisies par un contrle DateTimePicker assurant que celui-ci ne puisse inscrire que des dates valides. Le calcul seffectuera lorsque lutilisateur appuiera sur le bouton Calculer lge.

Figure 5.3 Interface utilisateur de lapplication

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

Les fonctions de Visual Basic.NET

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

Les fonctions de Visual Basic.NET

110

Fonctions de traitement des fichiers et des rpertoires


Visual Basic dispose dune pluralit de fonctions permettant deffectuer diffrentes tches sur les fichiers et les rpertoires (modifier, renommer, crer, supprimer, etc). Les fonctions suivantes sont intrinsques au langage et ne ncessitent linclusion daucune rfrence. Examinons ces fonctions de traitement des fichiers et des rpertoires.

Fonction ChDir ChDrive CurDir Dir FileCopy FileDateTime FileLen

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

Kill MkDir Rename RmDir SetAttr

DescoDev

Les fonctions de Visual Basic.NET

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.

Constante vbNormal vbReadOnly vbHidden vbSystem vbDirectory vbArchive vbAlias

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

Les fonctions de Visual Basic.NET

112

Exemple dune application traitant les fichiers


Lexemple suivant met en uvre la conception dune interface utilisateur laide des contrles de base et lutilisation de fonctions de traitement des fichiers et des rpertoires. Lexemple suivant est constitu dune application permettant de connatre les attributs dun fichier ainsi que la date et lheure de cration ou dernire modification de ce fichier. Un traitement spcial est appliqu si le fichier spcifi par lutilisateur nexiste pas.

Figure 5.4 Interface utilisateur de lapplication

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

Les fonctions de Visual Basic.NET

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

Les fonctions de Visual Basic.NET

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

Les fonctions de Visual Basic.NET

115

Fonctions de lecture et dcriture des fichiers


Les fonctions suivantes ne permettent pas de traiter diffrentes informations des fichiers (date de cration, attributs, etc.) mais permettent plutt de procder louverture de fichiers, et dy effectuer des oprations de lecture ou dcriture. La plateforme .NET prvoit des fonctionnalits quivalentes accessibles par lensemble des langages et sont regroupes au sein de lespace nomin System.IO. Fonction Exemple fch = "c:\MonFichier.txt" md = OpenMode.Input Retourne True lorsque la fin dun fichier FileOpen(1, fch, md) Do Until EOF(1) ouvert en mode Random ou Input est txt = LineInput(1) atteinte. Loop FileClose(1) fch = "c:\MonFichier.txt" Ferme le fichier spcifi. Si aucun fichier md = OpenMode.Input nest prcis, tous les fichiers FileOpen(1, fch, md) couramment ouverts sont ferms. FileClose(1) Dim S As New String(" ", 9) Lit les donnes dun fichier ouvert et les fch = "c:\MonFichier.txt" retourne au sein de la variable spcifie. md = OpenMode.Binary FileOpen(1, fch, md) Valide que lorsque le fichier est ouvert FileGet(1, S) en mode Random ou Binary. FileClose(1) Lit les donnes dun fichier ouvert et les Dim S As New String(" ", 9) retourne au sein de la variable spcifie. fch = "c:\MonFichier.txt" Valide que lorsque le fichier est ouvert md = OpenMode.Binary en mode Random ou Binary. Cette FileOpen(1, fch, md) fonction est plus type que FileGet et FileGetObject(1, S) permet donc dviter toute ambigut de FileClose(1) types lors de la compilation. Retourne les dimensions en octets du fch = "c:\MonFichier.txt" fichier spcifi. Le fichier est spcifi Longueur = FileLen(fch) laide de son chemin et de son nom. Procde louverture du fichier spcifi fch = "c:\MonFichier.txt" md = OpenMode.Input dans le mode spcifi. Voyez plus loin FileOpen(1, fch, md) les diffrents modes douverture de FileClose(1) fichiers. Dim S As String = "Allo" crit les donnes de la variable spcifie fch = "c:\MonFichier.txt" md = OpenMode.Binary au sein dun fichier ouvert. Valide que FileOpen(1, fch, md) lorsque le fichier est ouvert en mode FilePut(1, S) Random ou Binary. FileClose(1) crit les donnes de la variable spcifie Dim S As String = "Allo" au sein dun fichier ouvert. Valide que fch = "c:\MonFichier.txt" lorsque le fichier est ouvert en mode md = OpenMode.Binary Random ou Binary. Cette fonction est FileOpen(1, fch, md) plus type que FilePut et permet donc FilePutObject(1, S) dviter toute ambigut de types lors de FileClose(1) la compilation. Signification

EOF

FileClose

FileGet

FileGetObject

FileLen

FileOpen

FilePut

FilePutObject

DescoDev

Les fonctions de Visual Basic.NET

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

Print

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

Les fonctions de Visual Basic.NET

117

Fonctions daccs la base de registre


La base de registre est une base de donnes permettant de centraliser les diffrentes configurations des applications, des prfrences utilisateurs, des configurations matrielles, etc. Les informations stockes dans la base de registre sont conserves entre les diffrentes excutions du systme dexploitation. La base de registre vous permet donc de stocker des informations concernant vos applications et de les rcuprer au prochain dmarrage de votre application. Visual Basic prvoit quatre fonctions natives daccs la base de registres. Ces fonctions permettent de stocker et rcuprer des informations au sein de la base de registres au sein de la cl HKEY_CURRENT_USER\Software\VB and VBA Program Settings. Les informations que votre application stockera au sein de la base de registre seront consquemment utilisables sparment par chacun des utilisateurs. Si vous dsirez lire, crire ou supprimer des informations stockes au sein dautres cls que celle utilise nativement par le langage Visual Basic, vous devrez utiliser les fonctions .NET prvues au sein de lespace nomin (namespace) System.Win32.

Fonction DeleteSetting GetSetting

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

Les fonctions de Visual Basic.NET

118

Exemple dune application utilisant la base de registre


Lexemple suivant met en uvre la conception dun interface utilisateur laide des contrles de base de Visual Basic, lutilisation des vnements du formulaire et lutilisation de fonctions daccs la base de registre. Lexemple suivant est constitu dune application permettant de conserver les prfrences de lutilisateur au sein de la base de registre pour dultrieures utilisations.

Figure 5.5 Interface utilisateur de lapplication

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

Les fonctions de Visual Basic.NET

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

Les fonctions de Visual Basic.NET

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