Vous êtes sur la page 1sur 50

Cours 1 : Prsentation de l'interface de VB

Aprs avoir lanc Visual Basic, vous devez voir apparatre l'cran une bote de dialogue vous demandant quel genre d'application voulez-vous crer? Choisissez " EXE Standard" si vous voulez crer un programme. Quant aux autres types d'applications, laissez-les de ct pour le moment. Vous verrez alors apparatre en face de vous une fentre fragmente en plusieurs petites fentres. Au premier abord, cela doit certainement vous effrayer de voir une multitude de mini fentres. Ne vous inquitez pas, votre comportement est tout fait normal. N'importe quel NEWBIE aurait eu ce comportement. Moi-mme, je l'ai t et j'ai pens au dbut que Visual Basic tait un logiciel trop compliqu pour moi et j'ai voulu laisser tomber ce fabuleux logiciel. Mais ce qui m'a encourag continuer utiliser Visual Basic, c'est la possibilit de crer, crer un programme mme si ce n'est qu'une simple petite application car je sais qu'aprs je pourrai concevoir des programmes plus labors au fur mesure que j'acquiers de nouvelles connaissances. Ca y est? Vous tes dcid continuer apprendre ce langage informatique et faire partie de la communaut des programmeurs? Alors, allons-y! Commenons par dcrire toutes ces multitudes de fentres. La partie suprieure de la fentre est form du systme de menus et d'une barre d'outils tout comme d'autres logiciels(Office, Lotus,...). La partie de gauche est constitu de la bote outils. (Attention, ne confondez pas barre d'outils avec bote outils. La barre d'outils est une version simplifie du systme de menus. Elle permet d'accder plus rapidement aux sous-commandes du systme de menus.) Quant la bote outils, elle permet de slectionner les contrles (ou si voulez "objets"), puis ensuite de les placer sur la partie centrale de la fentre. Pour placer un contrle, slectionnez d'abord un contrle dans la bote outils, puis, tracez une zone rectangulaire sur la feuille qui se trouve au milieu. Si vous voulez ajouter de nouveaux contrles dans la bote outils, appuyez sur le bouton droit de votre souris dans la bote outils pour faire apparatre le menu contextuel. Appuyez sur la sous-commande "Composants" pour faire apparatre la liste de tous les contrles mis votre disposition. Cette feuille situe au centre, n'est autre que la future interface graphique de votre application (appel aussi "interface utilisateur"). Enfin, la partie de droite est constitue de 3 botes de dialogue : 1. La 1re est la bote de dialogue "Projet" qui donne la liste de toutes les feuilles qui constituent votre future application. 2. La 2me est la bote de dialogue "Proprits". Elle donne accs aux proprits du contrle slectionn. 3. Enfin, la 3me est la bote dialogue "Prsentation des feuilles". Elle permet de modifier la position de la feuille de travail actuellement slectionne.

Cours 2 : Structure des procdures


Une application est constitue essentiellement de l'interface utilisateur, forme elle-mme de plusieurs contrles, et de procdures qui gnre des actions. A prsent, analysons la structure d'une procdure. La syntaxe d'criture d'une procdure est la suivante :
[Public / Private] [Static] Sub Nom_proc (arguments) [Dclarations] [Instructions] [exit Sub] [Instructions] End Sub

Le mot Sub peut ou non tre prcd des options suivantes : 1. Les mots Public ou private dfinissent les limites de la procdure. o Avec Public, la procdure peut tre appele depuis n'importe quelle instruction de l'application.

Avec private, la procdure ne peut tre appele qu' l'intrieur de la mme feuille ou du mme module. 2. Vous devez dclarer en dbut de procdures vos variables et constantes si vous ne l'avez pas fait dans la partie Gnral de la liste droulante Objet qui se trouve en haut, gauche de l'diteur de code. Remarquez que si vous dclarez vos variables l'intrieur de la procdure, sa porte sera limite qu' cette procdure; 3. Static signifie que toutes les variables locales dclares dans la procdure doivent conserver leur valeur entre 2 appels. 4. Exit Sub permet de quitter la procdure avant la fin normale de celle-ci; 5. End Sub ferme la procdure.
o

Pour cela, prenons un simple exemple : Private Sub Form_Load() Dim DateNaissance Dim Message, Titre As String Message = "Date de naissance ?" Titre = "Entrez votre date de naissance : " DateNaissance = InputBox(Message, Titre) If DateNaissance <> "" Then DateNaissance = Format(DateNaissance, "Long Date") MsgBox DateNaissance, vbOKOnly + vbInformation, "Vous tes n(e) le" End Else While DateNaissance = "" MsgBox "Entrez une date", vbOKOnly + vbExclamation, "Attention!" DateNaissance = InputBox(Message, Titre) Wend DateNaissance = Format(DateNaissance, "Long Date") MsgBox DateNaissance, vbOKOnly + vbInformation, "Vous tes n(e) le" End End If End Sub Le but de ce programme est certes inutile, vous direz-vous, puisqu'il consiste juste demander la date de naissance quelqu'un et de l'afficher par la suite. Mais les instructions de cette procdures renferment une partie des bases de la programmation en VB6. Ce n'est pas important si vous n'avez pas compris toutes les instructions de cette procdure. Contentez-vous pour l'instant de lire cette procdure et observez simplement de quoi peut tre compose une procdure. A prsent, passons une analyse simplifie de cette procdure : La 1re ligne contient des infos sur le nom de la feuille principale (Form1) du projet, du type d'vnement qui permet de lancer cette procdure. Ici

L'vnement en question est Load, ce qui veut dire que cette procdure sera excute au chargement de la feuille "Form1". dans les 2mes et 3mes lignes, sont dfinis des variables limites cette procdure uniquement. Les lignes suivantes sont formes d'instructions servant dfinir le comportement de la feuille ds son chargement. (Nous verrons de plus prs ces instructions dans les cours suivants.) La dernire ligne End Sub clt la procdure.

Cours 3 : Les variables et les constantes

Dfinition des variables | Diffrents type de variables | Dclaration des variables | Porte des variables | Les constantes

1. Dfinition des variables

Les variables sont des donnes ou des valeurs qui peuvent changer l'intrieur d'une application. C'est pourquoi, il est fort utile de les nommer par un nom, de dclarer quel genre de variables est-ce (nombre entier, nombre dcimal, lettres...) et leur affecter, lorsque cela est ncessaire une valeur. La longueur maximale du nom d'une variable est de 255 caractres. Ceux-ci peuvent tre des chiffres, des lettres ou autres symboles. Notez que ce nom doit obligatoirement commencer par une lettre. En effet, Visual basic classe les variables en fonction de la valeur affecte la variable. Ainsi, une variable dclare comme du type numrique ne peut pas recevoir une valeur chane de caractre, ainsi qu' l'inverse. Notez que si vous ne dclarez pas une variable, Visual Basic se chargera d'affecter par dfaut un type de variable (Variant) celle-ci. Une variable du type Variant peut aussi bien recevoir des donnes numriques que des chanes de caractres. tout dpend de ce que vous avez affect cette variable.

2. Type de variables
A prsent, observons de plus prs les diffrents types de variables :

Type de donnes Octet Logique Entier Entier long

Mot cl Byte Boolean Integer Long 1 octet 2 octets 2 octets 4 octets 4 octets 8 octets

Occupe 0 255

Limite de valeurs

True(-1) ou False(0) -32 768 32767 -2 147 483 648 2 147 483 647 Nombre rel avec 7 chiffres aprs la virgule Nombre rel avec 15 chiffres aprs la virgule Nombre rel avec 15 chiffres avant la virgule et 4 chiffres aprs la virgule 1er janvier 100 au 31 dcembre 9999 Toute rfrence des types Object

Dcimal simple Single Dcimal double Double Montaire Date Objet Chane de caractres Variant (avec chiffres) Variant (avec lettres) Dfini par l'utilisateur

Currency 8 octets Date Object String Variant Variant Type 8 octets 4 octets

10 octets + longueur de Chane de caractre dont la longueur ne chane doit pas excder 2^31 caractres 16 octets 22 octets+longueur de chane toute valeur numrique jusqu' l'tendue d'un double Mme tendue que pour un String de longueur variable L'tendue de chaque lment est la mme que son type de donnes

Notez que les types de variables les plus utilises sont : String, Integer, Long, Single, Double et Currency.

3. Dclaration de variables
Pour utiliser des variables, il est normalement obligatoire de les prdfinir, soit dans la section Dclarations de la liste droulante Objet, soit en dbut de procdure ou de fonction. Un programme o les variables sont bien dclares rend un programme plus facile comprendre, lire et surtout corriger en cas d'erreurs. Certes, il n'est pas obligatoire de les dclarer mais faites-le quand mme, c'est un conseil. Si vous tes prt dclarer une variable que vous voulez utilisez mais que vous tes un tourdi, alors, utilisez simplement l'instruction Option Explicit ( placer dans la section Dclarations de

la liste droulante Objet) qui vous oblige chaque fois dclarer toutes vos variables avant de pouvoir excuter l'application. 3.1 Dclaration explicite d'une variable Pour dclarer une variable, on utilise l'instruction Dim suivi du nom de la variable puis du type de la variable. Reprenons l'exemple du cours 2 : Dim DateNaissance Dim Message, Titre As String Remarquez que la 1re dclaration ne contient pas d'information sur le type de variable. Si vous dclarez une variable sans donner d'information sur le type de variable que c'est, alors, cette variable (DateNaissance) aura par dfaut une variable du type Variant. Si vous avez bien lu l'exemple prcdent, vous aurez compris qu'il s'agit ici d'une variable de type Variant (avec chiffres) qui lui est affecte par dfaut. La 2me dclaration est par contre explicite. Vous pouvez aussi mettre 2 variables sur une mme ligne condition que le type de variable est le mme pour les 2 et en les sparant par une virgule.

3.2 Dclaration implicite d'une variable Il existe une autre mthode de dclarer des variables. Pour cela, il suffit d'ajouter juste avant la variable, un symbole spcifique. Voici la liste des symboles avec le type de variable auxquelles il se rapportent : Symbole Type de variable % & ! # @ $ Integer Long Single Double Currency String

Dans l'exemple ci-aprs, les deux premires instructions sont quivalentes la troisime : Dim V1 as Integer V1 = 25 V1% = 25

4. Porte des variables


En gnral, toute variable dclare a une porte limite. Cette mme variable a une valeur nulle au dpart. De plus, elle ne s'applique pas forcment toutes les procdures d'une application. Tout dpend de 2 lments : la manire de dclarer et l'emplacement de la variable. dans une procdure, si vous dclarez une variable l'aide de l'instruction Dim, sa porte se trouve limite seulement cette procdure. On dit que la variable est locale. Elle est donc initialise chaque appel de la procdure et dtruite lorsque celle-ci se termine ( moins que vous remplacez le mot Dim par Static). Elle n'est pas accessible en dehors de la procdure. Vous pouvez remplacer l'instruction Dim par Private, les deux termes tant quivalentes s'ils sont placs l'intrieur d'une procdure. Si vous dclarez une variable dans la section Gnral/Dclarations d'une feuille ou d'un module en utilisant l'instruction Dim (ou Private), la variable est dite locale au module. Cette variable est disponible pour toutes les procdures de la feuille ou du module, mais pas pour les autres feuilles du projet. Enfin, si vous dclarez une variable dans la section Gnral/Dclarations d'un module (et non d'une feuille) en utilisant l'instruction Public au lieu de Dim, elle devient accessible par toutes les feuilles et tous les modules de l'application. On dit qu'elle est globale.

5. Les constantes
Contrairement aux variables dont les valeurs diffrent souvent, les constantes ont des valeurs fixes. Mais tout comme les variables, on affecte aux constantes, un nom et une valeur qui est elle, fixe. De plus, les constantes se dfinissent de la mme faon que les variables. Tout dpend donc de l'endroit o est dfini la constante. Le mot Const peut tre prcd de l'option Public pour que toutes les feuilles et modules de l'application puissent y accder. Attention cependant ne pas affecter une constante des noms identiques aux constantes prdfinies (VbSystemModal, VbOkOnly, VbArrow...) dans Visual Basic ! Prenons l'exemple du taux de TVA : Const TVA = 20.6 TotalTTC=PrixHorsTaxe x (1 + (TVA / 100))

Cours 4 : Les tableaux

1re mthode | 2me mthode | 3me mthode | 4me mthode

1. Premire mthode pour dfinir un tableau


Les tableaux de valeurs sont utiles lorsque l'on manipule des donnes en tout genre. Ainsi, dans un carnet d'adresses, vous pouvez stocker toutes les adresses dans un tableau structur. Par exemple : Dim Adresses (1 to 50 ) As String Adresses(1) = "12, avenue de la Fayette, Paris" ........ Adresses(50) = "4, rue de la Paix, Paris" Comme vous pouvez le constatez, la dfinition d'un tableau ressemble beaucoup celle d'une variable la seule diffrence que vous devez donner une limite aux nombres de valeurs contenues dans un tableau. Pour appeler une des variables du tableau, il faut faire prcder de la variable, un numro qui permet d'identifier la variable spcifique recherche parmi toutes celles du tableau. ce tableau est une dimension, Voici un exemple 2 dimensions: Dim Adresses (1 to 50, 1 to 50) As String Adresses(1,0) = "Vincent" Adresses(1,1) = "12, Rue de la paix, Paris" ..... Adresses(50,0) = "Philip" Adresses(50,50) = "7, Boulevard de la Villette" Notez qu'avec les fonctions LBound et UBound, vous pouvez obtenir les limites infrieures et suprieures d'un tableau.

2. Deuxime mthode pour dfinir un tableau


Il existe une autre faon de dfinir un tableau : Dim Adresses(50) As String Adresses(0) = "12, avenue de la Fayette, Paris"

........ Adresses(49) = "4, rue de la Paix, Paris" Avec cette mthode, les limites du tableau ne sont pas dfinies. Notez que le nombre d'adresses est de 50 mais la numrotation va de 0 49 et non de 1 50. Il existe cependant un moyen pour que la numrotation commence 1 : c'est en utilisant l'instruction Option Base (par exemple: Option Base = 1) qu'il faut placer dans la section Dclarations.

3. Troisime mthode pour dfinir un tableau


Pour construire Exemple : un tableau, on peut aussi utiliser la fonction Array :

Dim Semaine, Jour As String Semaine = Array("lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi", "dimanche") Jour = (3) 'retourne jeudi

4. Quatrime mthode pour dfinir un tableau


Une autre mthode consiste en la cration de tableaux dynamiques. Pour comprendre cette mthode, prenons un exemple : Dim Adresse() As String Dim NbAdresses As Integer 'Nouvelle adresse NbAdresses = nbAdresses + 1 Redim Adresse (NbAdresses) Adresse (NbAdresses) = "75, Rue Lecourbe, Paris" Ainsi, chaque fois que l'on lance cette procdure, le nombre total d'adresses (NbAdresses) est incrment (augment) de 1 et la nouvelle adresse est plac la fin du tableau. en effet, Redim a pour effet de reformater le tableau, et donc, tout ceux qui tait dans le tableau est aussi effac sauf la dernire valeur entre. Cependant, il existe un moyen de conserver les donnes dj prsentes dans le tableau. Pour cela, on fait appel l'instruction Preserve : Redim Preserve Adresse (NbAdresses)

Enfin, pour terminer, il est possible d'effacer toutes les donnes d'un tableau. Pour cela, on utilise l'instruction Erase suivi du nom du tableau.

Cours 5 : Structure des conditions (tests, boucles)


La structure des tests | La structure des boucles

1. Structure des tests


1.1 La structure : If...Then...Else...end If Voici un exemple de structure simple avec l'instruction If : If condition Then Instructions 1 else Instructions 2 End if Interprtation : Si la condition est vrifie alors les instructions 1 sont excutes sinon les instructions 2 sont excutes la place. (Notez que l'on peut utiliser des oprateurs logiques And (et) et Or (ou) pour que plusieurs conditions doivent d'abord tre vrifies avant de pouvoir excuter les instructions suivantes.). Le mot Else et les instructions qui suivent ne sont pas obligatoire. Voici un autre exemple de structure avec If mais un peu plus complexe: If Condition 1 Then Instruction 1 ElseIf Condition 2 Then Instruction 2 Else Instructions X End If Interprtation : Si la condition 1 est vrifie alors les instructions 1 sont excutes. Sinon si la condition 2 est vrifie alors les instructions 2 sont excutes. Sinon, si aucune de ces

deux conditions ne sont vrifies alors les instructions X sont excutes. Il existe une autre structure simplifie de If mais qui moins utilise: Variable = IIf (Condition, instructions 1, instructions 2) Interprtation : Si la condition est vrifie alors les instructions 1 sont excutes sinon les instructions 2 sont excutes la place. L'instruction IIf(Immediate If) est utile lorsque qu'il n'y a que une ou deux instructions en fonction d'une condition. Par ailleurs, la valeur retourne par la condition est affecte une variable. 1.2 La structure Select Case...End Select

Lorsque l'on doit effectuer toute une srie de tests, il est prfrable d'utiliser la structure Select Case...End Select au lieu de If...Then...End if. Ainsi, les deux exemples suivants sont quivalents : Select Case Semaine Case 1 Jour = "Lundi" Case 2 Jour = "Mardi" Case 3 Jour = "Mercredi" Case 4 Jour = "Jeudi" Case 5 Jour = "Vendredi" Case 6 Jour = "Samedi" Case 7 Jour = "Dimanche" Else MsgBox "erreur", vbOKOnly , "Note" End Select If Semaine = 1 Then Jour = "Lundi" ElseIf Semaine = 2 Then Jour = "Mardi" ElseIf Semaine = 3 Then Jour = "Mercredi" ElseIf Semaine = 4 Then Jour = "Jeudi"

ElseIf Jour = ElseIf Jour = ElseIf Jour = Else MsgBox End If

Semaine = 5 Then "Vendredi" Semaine = 6 Then "Samedi" Semaine = 7 Then "Dimanche" "erreur", vbOKOnly , "Note"

Interprtation : Si la variable Semaine vaut 1, alors la variable Jour reoit la valeur Lundi. Si la variable Semaine vaut 1, alors la variable Jour reoit la valeur Mardi. (Etc...). Si la variable Semaine ne reoit aucune valeur comprise entre 1 et 7, alors un message indiquant une erreur est affich.

2. Structure des boucles


2.1 La structure For..Next

La structure For...Next est utile lorsqu'on doit rpter plusieurs fois la mme instruction. Exemple : For J = 1 To 10 T(J) = J Next Interprtation : Dans cette boucle, l'instruction "T(J)=J" est rpte 10 fois c'est dire jusqu' ce que J soit gale 10. A chaque passage, l'instruction "T(J)=J" affecte T(J) les valeurs 1 10. Pour que l'instruction soit excute une fois sur deux, vous pouvez utiliser l'instruction Step : For J = 1 To 10 Step 2 T(J) = J Next Interprtation : Dans cette boucle, l'instruction "T(J)=J" affecte T(J) les valeurs 1,3,5,7,9. 2.2 La structure For Each...Next

Cette structure est moins utilise que la prcdente. Elle sert surtout excuter des instructions portant sur un tableau. Exemple : Dim Semaine(1 to 7) As String Dim Jour As Variant Semaine(1) = "Lundi" 'Etc... For Each Jour In Semaine() Combo1.AddItem Jour Next Interprtation : Pour chaque Jour de la Semaine, on ajoute la liste combine, la valeur de la variable Jour jusqu' ce que l'indice de la semaine soit gale 7. 2.3 Les structures Do...Loop et While...Wend

Avec ces boucles, le nombre de fois o sont rptes les instructions est indfini. Les deux exemples qui suivent sont quivalents : i = 1 Do T(i) = i i = i + 1 Loop Until i > 10 i = 1 While i < 10 T(i) = i i = i + 1 Wend Interprtation : La variable i est initialise 1 au dpart. Les instructions qui suivent sont excutes jusqu' ce que i soit suprieure 10. A chaque passage, on affecte la variable T d'indice i la valeur de i. Il existe d'autres variantes de ces boucles et qui sont chacune quivalentes : Do Instructions Loop While Condition Do Until Condition

Instructions Loop Do While Condition Instructions Loop

Cours 6 : Les contrles standards

Ne vous fiez pas aux apparences. le Pointeur n'est pas un contrle. Il sert juste dplacer et redimensionner un contrle plac sur une feuille. Le contrle PictureBox sert afficher une image en mode point, une icne ou un mtafichier. Il sert aussi regrouper des boutons radio. Remarquons que ce contrle est le seul qui puisse tre plac dans une feuille MDI. En effet, essayez de placer d'autres contrles sur une feuilles MDI, vous verrez que a ne marche pas! Le contrle Label sert placer du texte qui ne peut tre modifi ou effac lors de l'excution de l'application. Le contrle Textbox sert placer du texte qui peut tre ou non modifi par l'utilisateur lors de l'excution de l'application. Le contrle Frame sert regrouper plusieurs contrles(checkbox, optionbutton,...) dans un cadre avec un titre que vous pouvez modifier dans ses proprits. Le contrle CommandButton sert afficher un bouton de commande qui lorsque l'on clique dessus, la portion de code crite dans sa procdure est excute. Le contrle Checkbox sert placer une case cocher. En plaant plusieurs cases cocher dans une application, l'utilisateur aura le choix entre plusieurs options. Selon les options slectionnes, une portion de code sera excute. Le contrle OptionButton s'utilise comme un contrle CheckBox. Contrairement aux cases cocher, une seule option peut tre slectionne parmi un groupe d'options composes de boutons radio. Le contrle ComboBox laisse l'utilisateur le choix de slectionner un lment parmi d'autres dans une liste.

Le contrle ListBox s'utilise comme le contrle ComboBox sauf que dans la liste d'option, plusieurs options sont affiches simultanment. Les barres de dfilement permettent de lire la suite du contenu d'une fentre trop ou trop longue pour tre affiche en une seule fois.

large

Le contrle Timer permet de gnrer un vnement intervalle rgulier, par exemple dans une horloge o toutes les minutes, l'aiguille des minutes bouge. Notons que le contrle Timer n'apparat pas pendant l'excution d'une application. Le contrle DirListBox permet l'utilisateur de choisir un des lecteurs de disques de l'ordinateur. Les noms des lecteurs sont affichs dans une liste non modifiable. Le contrle DirListBox permet d'afficher la liste de tous les rpertoires d'une lecteur de disque. Le contrle FileListBox permet d'afficher la liste de tous les fichiers d'un rpertoire disque.

du

Le contrle Shape permet de dessiner des figures dans une feuille (rectangle, carr, cercle). Le type de forme est choisi dans la proprit Shape du contrle. Le contrle Line permet de tracer des lignes dans une feuille. La proprit BorderStyle permet de choisir le type de ligne que vous dsirez : continu, invisible, pointill... Le contrle Image permet tout comme le contrle PictureBox d'insrer des images en mode point, icne, ou mtafichier. Cependant, il requiert moins de ressource et donc diminue la taille de votre application. Le contrle Data permet d'accder aux donnes provenant de bases de donnes. Le contrle OLE permet d'incorporer ou de lier un objet provenant d'une autre application (feuille Excel, feuille Access,...).

Cours 7 : Les botes de dialogues communes

Il existe 5 botes de dialogue communes en Visual Basic : Celle de l'ouverture Celle de l'enregistrement Celle de la couleur Celle de la police de caractres Celle de l'impression

Avant tout, pour pouvoir utiliser les botes de dialogue communes, il faut ajouter le contrle CommonDialog dans votre bote outils. Pour ce faire, placer votre souris sur la bote outils et cliquez sur le bouton droit. Ensuite, choisissez la commande "Composants". Une liste de tous les contrles apparat alors. Celui qui nous intresse ici, c'est le contrle CommonDialog. Cochez la case du contrle Microsoft Common Dialog Control 6.0 (SP3) et appuyez sur le bouton Appliquer. Le contrle CommonDialog va alors apparatre sur votre bote outils. A prsent, vous pouvez l'utilisez dans vos applications. Note: commencez par modifier les proprits du contrle avant d'utiliser les mthodes respectives.

1. La bote de dialogue Ouvrir


La bote de dialogue "Ouvrir" permet d'ouvrir un fichier parmi tous ceux mmoriss sur votre disque dur, disquette ou CD-ROM. Pour faire apparatre la bote de dialogue "Ouvrir", on fait appel la mthode ShowOpen. Cependant, il est aussi ncessaire de renseigner plusieurs proprits de la bote de dialogue. Voici la liste principale des proprits renseigner : Proprit CancelError DefaultExt DialogTitle FileName Filter Utilisation Initialise True, elle renvoie le code d'erreur 32755 (CDERR_CANCEL) lorsque le bouton Annuler a t press. Elle dfinit l'extension par dfaut du nom du fichier ouvrir. elle dfinit le titre de la bote de dialogue situ sur la barre de titre. Elle dfinit le chemin d'accs et le nom du fichier slectionn par dfaut. Elle dfinit le(s) filtre(s) qui sert spcifier quel type de fichier pouvant tre

ouvert en lecture. Par exemple, avec l'instruction " CMD.Filter =" DLL (*.DLL)|*.DLL|Excutables (*.EXE)|*.EXE|Tous (*.*)|*.*| ", vous pouvez choisir de n'ouvrir que les fichiers DLL ou Excutables ou bien d'ouvrir tous les fichiers. FilterIndex Elle spcifie le filtre utiliser par dfaut dans la bote de dialogue. Reprenons l'instruction prcdente : avec l'instruction suivante "CMD.FilterIndex = 2", le filtre utilis par dfaut sera donc Excutables (*.EXE)|*.EXE|. Elle dfinit les options de la bote de dialogue. La syntaxe de l'instruction est : "Objet.Flags = valeur" o "valeur" peut valoir "&H1&", "&H2&", "&H3&" ou bien "&H2& + &H1&". Elle dfinit le rpertoire des fichiers affichs l'ouverture de la bote de dialogue.

Flags

InitDir

2. La bote de dialogue Sauvegarder sous


La bote de dialogue "Enregistrer sous" permet de sauvegarder un fichier ouvert. Pour l'afficher, on fait appel la mthode ShowSave. Pour ce qui est des proprits modifier, reportez-vous ceux de la bote de dialogue "Ouvrir".

3. La bote de dialogue Couleur


La bote de dialogue "Couleur" permet une couleur parmi d'autres. En l'agrandissant, vous pourrez dfinir une couleur par ses composantes: teinte, saturation, RVB et luminance. Pour l'afficher, on fait appel la mthode ShowColor. Tout comme les botes de dialogue prcdentes, vous devrez renseigner certaines proprits du contrle. Voici les principales proprits : Proprit CancelError Utilisation Initialise True, elle renvoie le code d'erreur 32755 (CDERR_CANCEL) lorsque le bouton Annuler a t press. Elle dfinit les options de la bote de dialogue. La syntaxe de l'instruction est : "Objet.Flags = valeur" o "valeur" peut valoir "&H1&", "&H2&", "&H3&" ou bien "&H2& + &H1&".

Flags

Color

Elle slectionne une couleur par dfaut. La syntaxe de l'instruction est: "Objet.Color = QBColor(valeur)".

2. La bote de dialogue Police de caractres


La bote de dialogue "Police de caractres" permet de slectionner une police et ses attributs. Pour l'afficher, on fait appel la mthode ShowFont. Ensuite, renseignez les proprits suivantes: Proprit CancelError Utilisation Initialise True, elle renvoie le code d'erreur 32755 (CDERR_CANCEL) lorsque le bouton Annuler a t press. Elle dfinit les options de la bote de dialogue. La syntaxe de l'instruction est : "Objet.Flags = valeur" o "valeur" peut valoir "&H1&", "&H2&", "&H3&" ou bien "&H2& + &H1&". Elle dfinit le style Gras par dfaut. Elle dfinit le style Italique par dfaut. Elle dfinit la police par dfaut. Elle dfinit la taille par dfaut. Elle dfinit le style Barr par dfaut. Elle dfinit le style Soulign par dfaut. Elle dfinit la taille maximale des polices affichs. Elle dfinit la taille minimale des polices affichs.

Flags FontBold FontItalic FontName FontSize FontStrikethru FontUnderline Max Min

2. La bote de dialogue Imprimer


La bote de dialogue "Imprimer" sert dfinir les paramtres de l'impression. Pour

l'afficher, on fait appel la mthode ShowPrinter. Ensuite, renseignez les proprits suivantes: Proprit CancelError Copies Flags FromPage PrinterDefault ToPage Utilisation Initialise True, elle renvoie le code d'erreur 32755 (CDERR_CANCEL) lorsque le bouton Annuler a t press. Elle dfinit le nombre d'exemplaires imprimer. Elle dfinit les options de la bote de dialogue. La syntaxe de l'instruction est : "Objet.Flags = valeur" o "valeur" peut valoir "&H1&", "&H2&", "&H3&" ou bien "&H2& +&H1&". Elle dfinit le numro de la premire page imprimer. Elle sert indiquer si les paramtres entrs doivent devenir les nouveaux paramtres par dfaut. Elle dfinit le numro de la dernire page imprimer.

Cours 8 : Systme de menus


Le systme de menus | Le menu contextuel

Un systme de menus est compos de plusieurs menus qui eux-mmes peuvent tre composs de plusieurs sous-menus. La plupart des logiciels de Microsoft possdent un systme de menus pour faciliter l'utilisateur dans ses actions.

1. Le systme de menus
Pour crer un systme de menus, allez dans le menu "Outils" du systme de menu de Visual Basic et choisissez la commande "Crateur de menus" ou pour aller plus vite, cliquez sur la 3me image de la barre d'outils.

A premire vue, a a l'air compliqu. Mais aprs quelques manipulations, ce sera facile. Bon, voyons de plus prs ce systme de menus. L'esperlouette "&" que vous voyez dans chaque menu et commande vous permet de crer des raccourcis. Ainsi, pour ouvrir le menu "Fichier", vous pouvez tout simplement appuyer sur Alt+F. Notez que pour un menu, vous n'avez pas besoin de lui affecter une lettre pour pouvoir crer un raccourci. C'est automatiquement "Alt" + la lettre prcdant l'esperlouette. Pour les commandes, allez dans la liste droulante Shortcut et choisissez le raccourci que vous voulez pour votre commande de menu. Pour crer une commande de menu, il faut l'indenter au menu auquel il est rattach. Pour cela, la suite de la cration du menu "Fichier", appuyez sur la flche de droite pour indenter la commande "Ouvrir". Visual basic permet un maximum de 5 niveaux d'indentation. Par exemple, vous pouvez aprs avoir cr la commande "Ouvrir", crer une sous-commande en l'indentant ce dernier. Vous pouvez par ailleurs crer une barre sparatrice afin de sparer plusieurs commande de menu. Pour cela, dans "Caption", mettez un "-" et donnez-lui un nom quelconque. La case cocher "Checked" permet d'afficher ou d'effacer une marque de slection en face d'une commande de menu. La case cocher "Enabled" permet d'empcher l'utilisateur de slectionner une commande. Si vous dcochez cette case, l'utilisateur ne pourra pas slectionner le menu ou la commande auquel vous avez dcochez la case "Enabled". La case cocher "Visible" permet de cacher ou d'afficher un menu ou une commande de menu. La case cocher "Windowlist" permet d'afficher les derniers fichiers ouvert par l'application concerne.

Pour les autres options, laissez-les de ct, pour le moment. Voil, c'est termin, pour la cration de menu. Il ne reste plus qu' affecter chaque commande de menu une action spcifique. Pour affecter une action une commande, cliquez sur celui-ci dans la feuille o est cr le systme de menus. Pour les actions de chaque commande, lisez les cours qui suivent.

2. Le menu contextuel
Dans une quelconque application de Microsoft, lorsque vous cliquez sur le bouton droit de votre souris, une srie de commande apparat: c'est le menu contextuel (ou Popup menu en anglais). La cration d'un popup menu se fait presque comme un systme de menu. Pour cela, faites exactement comme si vous crez un systme de menu. Dfinissez ensuite, une action pour chaque commande du menu contextuel. Par la suite, il faut dfinir dans quelles conditions doit apparatre le menu contextuel. Double-cliquez sur la feuille o est cr le systme de menu et dans la liste droulante "vnement", slectionnez l'vnement "MouseDown". Entrez les instructions suivantes : Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single), Y As Single If (Button = 2) Then PopupMenu X end if End Sub Interprtation : Lorsque le bouton droit de la souris a t cliqu, le menu contextuel X apparat. Vous pouvez remplacer la valeur de la variable "Button" si vous voulez que le menu contextuel apparaisse une autre action de l'utilisateur : Pour que le menu contextuel apparaisse en cliquant sur le bouton gauche de la souris, remplacez 2 par 1 dans la condition (Button = 1); Pour que le menu contextuel apparaisse en cliquant sur le bouton central de la souris, remplacez 2 par 4 dans la condition (Button = 4); Enfin, revenez dans la bote de dialogue "crateur de menu" et dcochez la case "Visible" du menu que vous dsirez rendre contextuel. Ne le faites pas avant car si vous le faites, vous ne pourrez pas dfinir une action pour chaque commande du menu contextuel.

Cours 9 : Accs aux fichiers

Il existe trois mode d'accs aux fichiers dans Visual Basic 6 : 1. Les fichiers accs squentiel ne peuvent ouvrir que des fichiers avec un contenu textuel. 2. Les fichiers accs direct sont forms en gnral de plusieurs enregistrements de longueur fixe. 3. Les fichiers binaires sont tous les fichiers avec un contenu graphique.

1. Les fichiers accs squentiel


Il existe trois manires d'ouvrir un fichier texte : 1. La 1re manire est l'ouverture d'un fichier uniquement en lecture l'aide de l'instruction Input. 2. La 2me manire est l'ouverture d'un fichier uniquement en criture l'aide de l'instruction Output. 3. La dernire manire est l'ouverture d'un ficher en criture aussi mais la seule diffrence de la prcdente manire, les nouvelles donnes sont entres la suite de l'enregistrement prcdent. Pour cela, on utilise l'instruction Append. Pour comprendre son fonctionnement, prenons un exemple. Lancez Visual Basic et ouvrez un nouveau projet. A la proprit Caption de la feuille Form1, affectez-lui la valeur "Bloc-note". Sur la feuille Form1, tracez un rectangle assez grand en utilisant le contrle TextBox. Allez dans la bote de proprit du contrle TextBox et allez sa proprit Text. Effacez-y le contenu. Ensuite, sa proprit Multiline, choisissez True. Maintenant, placez sur la feuille 4 contrles CommandButton. Pour chacun des 4 contrles, donnez leur, les valeurs "&Ouvrir", "&Effacer", "&Sauvegarder" et "&Quitter" la proprit Caption et les valeurs "Ouvrir","Effacer", "Sauvegarder" et "Quitter" la proprit Name. Voici l'allure que la feuille form1 doit avoir prsent :

Pour que ce bloc-note soit oprationnel, il faut dfinir des procdures qui grent les actions de chaque contrle prsent dans la feuille. Double-cliquez sur le bouton de commande "Ouvrir" et crivez la portion de code suivant : Private Sub ouvrir_Click() On Error Resume Next Open "C:\Windows\Bureau\note.TXT" For Input As #1 retour = Chr$(13) + Chr$(10) Line Input #1, texte tout = texte If Len(tout) <> 0 Then While Not EOF(1) Line Input #1, texte tout = tout + retour + texte Wend End If Close #1 End Sub Explication : L'instruction On error Resume Next permet d'ignorer toute erreur que peut entraner cette procdure. L'instruction Open "C:\Windows\bureau\note.TXT" For Input As #1 permet d'ouvrir le fichier "note" situ sur le bureau. Lorsque l'application est excute pour la premire fois, une erreur 53 devrait apparatre car le fichier "note"

n'existe pas encore. Mais grce l'instruction On Error Resume Next, cette erreur sera tout simplement ignore. L'instruction retour = Chr$(13) + Chr$(10) permet d'aller la ligne suivante. Le code ASCII 13 correspond au "retour chariot", c'est--dire de revenir gauche du texte et 10 au "passage la ligne", c'est--dire d'aller la ligne suivante. Vous pouvez aussi utiliser le code vbCrLf la place et c'est plus court et plus facile retenir. Vous aurez ainsi: "tout = tout + vbCrlf + texte" L'instruction Line Input permet de placer dans la variable "texte" le contenu de la premire ligne du fichier "note.TXT". Ensuite, le contenu de la variable "texte" est son tour, affect la variable "tout". Le test avec l'instruction If permet de vrifier que le fichier "note.TXT" n'est pas vide l'aide de la fonction Len qui compte le nombre de lettres ou tout autre symbole contenu dans la variable "tout". Si le nombre de lettres est diffrent de zro alors, les instructions l'intrieur du test sont excuts. La boucle avec While permet de parcourir tout le fichier la recherche d'ventuelles autres lignes que la premire. La fonction EOF permet de savoir si l'on arrive la fin du fichier ouvert. Cette boucle est donc excute jusqu' ce que tout le contenu du fichier soit plac dans la variable tout. Les chanes de caractres affectes la variable "tout" sont concatnes (concatnes = ajoutes) aux prcdentes contenues dans la variable. La variable "retour" provoque un retour la ligne chaque fois que cela est ncessaire. Lorsque tout le contenu du fichier sera affect la variable "tout", cette dernire sera son tour affecte la proprit Text du contrle TextBox. Ce qui provoquera l'affichage du contenu du fichier dans le contrle TextBox. L'instruction Close ferme le fichier ouvert en lecture.

crivons maintenant la portion de code correspondant au bouton "Sauvegarder" : Private Sub Sauvegarder_Click() Open "C:\Windows\Bureau\note.TXT" For Output As #1 Print #1, Text1.Text Close #1 End Sub Explication : L'instruction Open "C:\Windows\Bureau\note.TXT" For Output As #1 ouvre le fichier "note.TXT" en criture. Le contenu de la zone de texte "Text1" est ensuite copi dans le fichier l'aide de l'instruction Print. Enfin, le fichier est ferm l'aide de l'instruction Close. Passons l'criture de la procdure concernant le bouton "Effacer" :

Private Sub Effacer_Click() Text1.Text = "" Text1.SetFocus End Sub Explication : L'instruction Text1.Text = "" permet d'effacer tout ce qui se trouve sur la zone de texte du contrle TextBox. L'instruction Text1.SetFocus donne le focus la zone de texte, c'est--dire que cette instruction provoque l'affichage d'une barre d'insertion dans la zone de texte. Enfin, crivons la portion de code correspondant l'action du bouton "Quitter" : Private Sub Quitter_Click() End End Sub Explication : L'instruction End permet de quitter l'application en cours. Voil, c'est tout. A prsent, excutez le programme et voyez ce que a donne. Bien sr, ce n'est qu'un simple petit programme mais en acqurant plus de connaissances par la suite, vous pourrez l'amliorer, lui ajouter de nouvelles fonctions, action,...

2. Les fichiers accs direct


Les fichiers accs direct contiennent des donnes contenues dans plusieurs enregistrements fixes. Pour dclarer un enregistrement, on utilise l'instruction Type pour crer un nouvel type de variable. Ensuite, On dclare une variable de ce type. Pour ouvrir un fichier accs direct, on utilise l'instruction Open en indiquant la longueur de chaque enregistrement. Ainsi, un fichier accs direct s'ouvre de la manire suivante : Open "C:\Windows\Bureau\fichier.adr" For Random As #1 Len = Len(Adr) o adr est le nom d'une variable de type prdfini. La lecture d'un enregistrement s'effectue de la manire suivante: Get #1, Numro, adr. L'criture dans un fichier accs direct s'effectue de la manire suivante: Put #1, Numro, adr.

3. Les fichiers accs binaire

Dans la mesure o le fonctionnement des fichiers accs binaires est trs proche de celui des fichiers accs direct, reportez-vous aux fichiers accs direct.

Cours 10 : Le presse-papier
Le presse-papier est indispensable pour toute opration de copie et de collage. Ces oprations s'effectuent grce l'objet ClipBoard. Remarque : Si vous utilisez le contrle TextBox, vous n'avez pas besoin de dfinir des procdures pour le presse-papier dans la mesure o il est dj intgr dans le contrle. Par contre, si vous utilisez le contrle RichtextBox, alors il vous faudra dfinir vousmme le presse-papier. La diffrence entre ces 2 contrles de saisie est que le contrle RichTextBox possde quelques fonctions supplmentaires comme la possibilit de dfinir des marges autour du texte. Passons maintenant aux mthodes utilises pour dfinir le presse-papier :

ClipBoard.GetText permet de lire le contenu du presse-papier(uniquement avec des donnes textuelles). ClipBoard.SetText permet d'crire dans le presse-papier(uniquement avec des donnes textuelles). ClipBoard.Clear permet d'effacer le contenu du presse-papier. ClipBoard.GetFormat(type) permet d'indiquer quel type de donnes est prsent dans le presse-papier. Les valeurs que peut retourner Visual Basic sont : 1. (vbCFText) : donnes de type texte. 2. (vbCFBitmap) : image en mode point(bitmap). 3. (vbCFMetafile) : mtafichier vectoriel(wmf). 4. vbCFDib) : image bitmap indpendante du priphrique. 5. (vbCFPalette) : palette de couleur. 6. (vbCFEMetafile) : mtafichier amlior(emf). 7. (vbCFFile) : noms de fichiers copis depuis l'Explorateur de Windows. 8. &FFFFBF00 (vbCFLink) : liaisonDDE(valeur exprime sous forme hexadcimale). 9. &FFFFBF01 (vbCFRTF) : texte au format RTF. ClipBoard.GetData permet de lire le contenu du presse-papier(uniquement avec des donnes graphiques). ClipBoard.SetData permet d'crire dans le presse-papier(uniquement avec des donnes graphiques).

Cours 11 : La barre d'outils et la barre d'tat

La barre d'outils | La barre d'tat

Tout d'abord, pour pouvoir utiliser les contrles pour placer une barre d'outils ou d'tat, il faut qu'ils soient dj prsent dans votre bote outils. Or ce n'est pas le cas. Pour ce faire, choisissez la commande "Composants" du menu "Projet". Cochez le contrle Microsoft Windows Common Controls 6.0 et validez. A prsent, une srie de contrle est apparue sur votre bote outils. Vous y trouverez le contrle ToolBar et le contrle StatusBar.

1. La barre d'outils

Commencez par slectionner le contrle ToolBar dans la bote d'outils et sur la feuille tracez un rectangle d'une quelconque taille. Cela n'a aucune importance dans la mesure o la barre d'outils se placera automatiquement sur le haut de votre feuille. Ensuite, slectionnez le contrle ImageList et placez-le son tour sur la feuille. (Notez que l'emplacement de ce contrle n'a aucune importance.) Slectionnez nouveau le contrle ImageList mais cette fois, sur la feuille et cliquez sur le bouton droit de votre souris. Dans le menu contextuel, choisissez la commande "Proprits". Dans l'onglet "Gnral", vous avez la possibilit de modifier la taille de vos images prsentes dans la barre d'outils. C'est dans l'onglet "Images" que vous allez pouvoir choisir les images qui y seront places. Appuyez sur le bouton "Insrer une image". Les images par dfaut fournies avec Visual Basic sont situs dans le rpertoire C:\Program Files\Microsoft Visual Studio\Common\Graphics\Bitmaps. slectionnez les images que dsirez mettre sur votre barre d'outils. Attribuez chacune de ces images un nom dans la proprit "Key". Validez ensuite en appuyant sur le bouton "Appliquer". A prsent, faites un clic droit sur le contrle ToolBar et slectionnez "proprits". Dans l'onglet "Gnral", slectionnez "ImageList1" dans les proprits "ImageList", "DisabledImageList" et "HotImageList". slectionnez aussi "1-TbrFlat" dans la proprit "Style". Passons prsent l'onglet "Boutons". Renseignez les principales proprits. crivez dans la proprit "Key" le nom des images que vous avez choisi dans le contrle ImagaList. La proprit "ToolTipText" vous permet d'afficher une bulle lorsque vous survolez l'image. Enfin, dans la proprit "Image", crivez les numros qui sont respectifs aux images contenues dans le contrle ImagaList. N'oubliez pas que ce dernier permet d'afficher des images sur votre barre d'outils. Ok, maintenant, revenez la feuille principale. Vous avez vu, votre barre d'outils est prsent visible. A present, occupons-nous du code pour relier chaque icne de la barre d'outils une action. Double-Cliquez sur la barre d'outils. Pour grer chaque action, utilisons la structure Select Case qui convient parfaitement ce que l'on veut faire. Select Case Button.Key

Case "New" Nouveau_Click Case "Open" Ouvrir_Click End Select "Nouveau_Click" correspond la procdure que vous avez normalement attribu la commande "Nouveau" du systme de menus. Si ce n'est pas le cas, alors, il va vous falloir ici, lui attribuer une action. Par ailleurs, au lieu d'utiliser "Button.key" pour tester la condition, vous pouvez aussi utiliser "Button.Image", mais alors, au lieu d'avoir "New", vous devrez mettre la place le numro leur correspondant que vous avez dfini dans le contrle ToolBar, l'onglet Boutons, dans le champs "Image".

2. La barre d'tat

Choisissez le contrle StatusBar et placez-le n'importe o. cela n'a pas d'importance car au bout du compte, il s'affichera automatiquement tout en bas de votre feuille. Faites un clic droit sur ce dernier qui est prsent plac sur la feuille et allez dans l'onglet "Proprits". Paramtrez les diffrentes proprits qui s'y trouvent. Ca y est! A prsent, votre application est comparable toute autre logiciel. Avec quelques rglages supplmentaires, vous pouvez mme rivaliser avec les applications de Microsoft! Super, non?

Cours 12 : Les tableurs et les graphes


Tout d'abord, pour pouvoir utiliser les tableurs et graphes, vous devez au pralable placer dans votre bote d'outils, les contrles Microsoft Flexgrid Control 6.0 et Microsoft Chart Control 6.0. Pour cela, faites un clic droit sur la bote d'outils et choisissez la commande "Composants". Ensuite, cochez les cases correspondant aux contrles et validez. Grce au contrle MSFlexGrid et aprs avoir acquis une certaine exprience, vous pouvez mme crer des tableurs semblables ceux du logiciel Excel de Microsoft. Les proprits du contrle MSFlexGrid permettent de manipuler les cellules de ce dernier. Rows Cols Elle permet de dfinir ou de connatre le nombre de lignes du contrle. Elle permet de dfinir ou de connatre le nombre de colonnes du contrle.

FixedRows FixedCols Row Col Text ColWidth RowHeight ColAlignment RowSel ColSel

Elle permet de dfinir ou de connatre le nombre de lignes fixes du contrle. Elle permet de dfinir ou de connatre le nombre de colonnes fixes du contrle. Elle permet de dfinir ou de connatre les coordonnes de la cellule courante. Elle permet de dfinir ou de connatre les coordonnes de la cellule courante. Elle permet de dfinir ou de connatre le contenu de la cellule courante. Elle permet de dfinir ou de connatre la largeur d'une colonne. Elle permet de dfinir ou de connatre la hauteur d'une ligne. Elle permet de dfinir ou de connatre l'alignement des donnes d'une colonne. Elle permet de slectionner ou de connatre les coordonnes d'une plage de cellules. Elle permet de slectionner ou de connatre les coordonnes d'une plage de cellules.

De mme, les proprits du contrle Microsoft Chart Control 6.0 permettent de dfinir un graphe donn.

Column Data

Elle renvoie ou dfinit la colonne active de la grille de donnes. elle renvoie ou dfinit la valeur d'un point de donnes spcifique dans la grille de donnes identifie par Row et Column.

DrawMode Elle dtermine quand et comment est rafrachi l'affichage du graphique. CharType Elle renvoie ou dfinit le type de graphiques utilis pour tracer les donnes dans la grille de donnes.

Cours 13 : Les applications MDI

Tout d'abord, dfinissons ce que c'est qu'une application MDI. Vous connaissez srement le logiciel de traitement de texte WORD de Microsoft. Eh ben, c'est une application MDI et comme son nom l'indique, elle est compose d'une fentre principale(appel aussi fentre parent) et d'une ou plusieurs fentres de documents(appels aussi fentre fille. Les applications MDI sont en gnral pourvu d'un systme de menu, d'une barre d'outils et d'une barre d'tat. Elle permettent de visualiser plusieurs documents en mme temps. Ce qui permet d'viter d'ouvrir plusieurs fois la mme application. Passons prsent sa mise en place!

1. Mise en place de la fentre parent


Elle se droule en 3 tapes: 1. Pour crer la fentre parent en tant que tel, ouvrez un nouveau projet puis slectionnez dans la fentre de projet la feuille ouverte par dfaut Form1. Faites un clic droit dessus et choisissez la commande "Supprimer Form1". Ensuite, allez dans le menu "Projet" et slectionnez la commande "Ajouter une feuille MDI". Voil! Vous avez cr une fentre parent, facile non? 2. Passons la cration du systme de menus. pour cela, reportez-vous au cours 8. 3. Enfin, passons la cration de la barre d'outils et celle d'tat. Pour cela, reportezvous au cours11.

2. Mise en place de la fentre fille


Sa mise en place est simple. Pour la dfinir, placez une nouvelle feuille dans le projet. Ensuite, initialisez True sa proprit MDIChild. C'est tout!

Cours 14 : Les bases de donnes

L'laboration d'une base de donnes se fait l'aide du contrle Data. Ainsi, vous pouvez accder pas mal de fichiers de donnes divers tels que ceux de Access, Excel, FoxPro, Lotus 1-2-3, BTrieve ou tout fichier ASCII. En clair, le contrle Data est indispensable dans la ralisation d'une gestion d'une base de donnes. Cependant, il ne suffit pas simplement de placer le contrle sur la feuille. Il faut

imprativement renseigner quelques unes de ses proprits sans quoi, le contrle ne marchera pas. Mais rassurez-vous, ce n'est pas aussi dur que vous le pensiez. D'ailleurs, j'tais comme vous auparavant. Je me disais que les bases de donnes, c'est pas du tout mon truc et rien que d'entendre ce mot, a me donnait la migraine. Mais aprs une trs courte sance d'apprentissage, je me suis vite rendu compte que ce n'tait pas aussi cailloux comme le prtendent certains. Ca y est, vous avez repris confiance en vous? Allez, c'est parti! Tout d'abord, dfinissez un nouveau projet et placez le contrle Data sur la feuille "Form1". Maintenant, passons au renseignement de quelques unes de ses proprits. Connect Indiquez-y quel type de bases de donnes vous voulez utiliser: Access, Excel, Paradox, Foxpro...

DataBaseName Indiquez-y o se trouve votre fichier de base de donnes sur votre disque. RecordSource Indiquez-y le nom de la table diter.

Pour pouvoir afficher les donnes de votre fichier, vous aurez sans doute besoin d'un ou plusieurs champs de texte crs l'aide du contrle TextBox. L aussi, vous aurez modifier quelques une de ses proprits. DataSource Indiquez-y le nom du contrle Data auquel il se rapporte. DataField Indiquez-y le nom du champ de valeurs auquel il se rapporte.

Passons prsent, aux principales mthodes utilises pour grer une base de donnes dans une application. Elle sert crer un nouvel enregistrement. Cependant, Les donnes nouvellement entres ne sont pas tout de suite enregistres moins que vous n'appuyez sur une des flches du contrle Data. Pour qu'elles soient valides, on pourrait faire appel la mthode Updaterecord suivi de l'instruction suivante: Data1.recordSet.BookMark = Data1.RecordSet.LastModified qui permet de revenir la dernire donne enregistre ou modifie. Exemple: Data1.RecordSet.AddNew. Elle sert supprimer un enregistrement donn. Exemple: Data1.RecordSet.Delete Elles servent respectivement revenir au premier enregistrement, aller au dernier enregistrement, revenir l'enregistrement prcdent et aller l'enregistrement suivant.

AddNew

Delete Movefirst, MoveLast, MovePrevious,

MoveNext Refresh

Exemple: Data1.RecordSet.MoveFirst. Elle sert rafrachir la base de donne. Exemple: Data1.Refresh. Elle sert mettre jour une donne nouvellement enregistre ou modifie. Exemple: Data1.UpDateRecord.

UpdateRecord

Pour aller un peu plus loin, nous allons ici traiter des requtes SQL sans s'y attarder trop longtemps. Avant tout, faites attention la casse des mots. Si vous crivez Select au lieu de SELECT, a marchera pas! Pour comprendre son fonctionnement, prenons l'exemple de l'instruction suivante: Data1.RecordSource = "SELECT * FROM Produits WHERE [Nom de produit] = 'Riz';" . En terme plus clair, Cette requte extrait tous les champs (*) de la table Produits (FROM Produits) pour lesquels le champ "Nom de produit" a pour valeur "Riz"(WHERE [Nom de produit]='Riz'). Dans cette requte, le champ "Nom de produit" a t mis entre crochet car il contient des espaces. Autrement dit, ces crochets ne sont ncessaires que pour les champs avec un nom ne contenant qu'un seul mot. L'instruction suivante: Data1.RecordSource = "SELECT * FROM Produits; " permet nouveau d'avoir accs toutes les donnes du fichier. Tous les champs(*) de la table "Produits"(FROM Produits) sont nouveau accessible l'utilisateur.

Cours 15 : Le multimdia
La lecture des fichiers audio ou vido se fait l'aide du contrle MMControl. Pour cela, choisissez la commande "Composants" du menu "Projet". Cochez le contrle Microsoft Multimedia Control 6.0 et validez. A prsent, le contrle MMControl est dans votre bote d'outils. Notez qu'il existe plusieurs types d'objet multimdia comme vous pouvez vous en douter. Les plus courantes sont: Type d'objet multimdia WaveAudio Sequencer CDAudio Type de fichier Fichier sonore numris WAV Fichier musical MIDI Morceau de musique sur un CD audio Extension .WAV .MID -

AVIVideo

Fichier numrique au format AVI

.AVI

Bien sur, il en existe bien d'autres types d'objet multimdia mais nous nous contenterons de ceux cits dans le tableau.

Pour ouvrir un fichier multimdia, servez-vous des botes de dialogue communes. Pour imiter les commandes du contrle MMControl, il est utile de connatre les commandes MCI. Elles agissent sur le comportement de ce dernier. Voici une liste des commandes MCI, les plus importantes: Commande MCI Stop Play Open Close Pause Eject Fonction Stoppe immdiatement la lecture en cours. Joue le fichier slectionn. Ouvre le fichier slectionn. Ferme le fichier slectionn. Interrompt la lecture en cours. jecte le CD contenu dans le CD-ROM.

Par exemple, l'instruction MMControl1.Command = "Stop" permet de stopper immdiatement le fichier audio/vido en cours. Ainsi, pour lire un fichier ".wav", commencer par l'ouvrir avec la commande "Open", puis pour la lecture de ce fichier, utilisez la commande "Play". Si vous dsirez stopper la lecture en cours, utilisez la commande "Stop". Enfin, n'oubliez pas de bien refermer le fichier l'aide de la commande "Close" car il se peut qu'il reste encore en mmoire et donc qu'il occupe encore une partie de votre mmoire vive. Pour les fichiers "CDAudio", cela se passe un peu diffremment. Placez la portion de code qui suit dans la procdure "Form_Load()": Private Sub Form_Load() MMControl1.DeviceType = "CDAudio" MMControl1.Command = "Open" MMControl1.UpdateInterval = 1000 MMControl1.Timeformat = 10 End Sub Explication:

La 1re instruction informe au contrle MMControl du type de fichier qui va ouvert. Cela est ncessaire car les fichiers "CDAudio" sont diffrents des autres. La 2nde instruction permet d'ouvrir le premier morceau de musique. La 3me instruction permet de dterminer l'intervalle de temps o doit s'excuter la procdure MMControl1.StatusUpdate(), c'est--dire, toutes les secondes (ici, le temps est dfini en milliseconde), la procdure MMControl1.StatusUpdate(). La 4me instruction dtermine le format horaire utiliser pour exprimer les informations relatives la position en cours dans le CDAudio, par exemple combien de temps se sont couls depuis la lecture d'une musique.

Pour jecter le CD du CD-ROM, placez la portion de code qui suit dans la procdure "MMControl1_EjectClick(Cancel As Integer)": Private Sub MMControl1_EjectClick(Cancel As Integer) MMControl1.Command = "Eject" MMControl1.Command = "Close" End End Sub Explication: Comme vous vous doutez, la 1re instruction permet d'jecter le CD ,la 2nde de fermer le priphrique MCI (sorties audio/vido) et la dernire de quitter l'application. Enfin, le plus important, placez la portion de code qui suit dans la procdure MMControl1_StatusUpdate(): Private Sub MMControl1_StatusUpdate() Dim All, Seconde, Minute, Misc All = MMControl1.Position Mod 16777216 Seconde = All / 65536 Minute = (All - Seconde * 65536) /256 Misc = All - Seconde * 65536 - Minute * 256 Piste.Caption = " Piste " + Str(Misc) Temps.Caption = " Dure " + Minute + " : " + Seconde End Sub Explication: Les 3 premires instructions permettent d'extraire le numro de la piste et du temps coul depuis le dbut. La 4me instruction place le numro de la piste en cours dans le contrle "Piste" (il peut tre un contrle "Texbox" ou "Label"). Enfin, la dernire instruction place la dure du temps coul depuis la premire piste dans le contrle "Temps" il peut tre un contrle "Texbox" ou "Label").

Cours 16 : Le langage de requte structur SQL

Tout d'abord, il faut que je vous explique ce que c'est que ce langage de requte et quoi est-ce qu'il sert. Eh bien, SQL("Structured Query Language" ou pour les francophones, "Langage de Requte Structur") est un langage qui a t cr dans le but de communiquer avec une base de donnes relationnelle. Pour ceux qui ne le savent pas, une base de donnes relationnelle est une base de donnes o les donnes sont stockes dans des tables. Ces dernires sont en interaction les unes et les autres. ATTENTION: veuillez noter que le langage SQL peut varier d'un constructeur l'autre. Dans ce cas, il vous faut consulter la documentation qui lui est propre. Le langage SQL abord ici, est le langage standard et peut ne pas tre compatible avec votre base de donnes. Si vous constatez que les codes qui suivent ne fonctionnent pas, eh bien, a veut dire qu'il n'est pas compatible avec votre base. SQL permet d'interroger une base de donnes, d'insrer de nouvelles donnes mais aussi mettre jour vos donnes existantes. A prsent voyons cela de plus prs. Recherche de donnes Ajout et suppression de donnes Mise jour de donnes Groupement d'instructions SQL en transactions Recherche partir d'un champ de texte

1. Recherche de donnes

1.1 La syntaxe L'instruction utilise pour effectuer une recherche dans une base de donnes est SELECT. Elle sert interroger une base et de retourner si elles existent, les donnes que vous recherchez. La syntaxe de l'instruction SELECT est la suivante: SELECT [ *|ALL|DISTINCT ] [ TOP X [PERCENT] ] Colonne1,Colonne2 FROM Tables WHERE (Critre de recherche)|(Critre de jointure)

AND|OR [ (Critre de recherche) ] GROUP BY [ ALL ] Colonne1, Colonne2 HAVING (Critre de recherche) ORDER BY Colonnes [ ASC|DESC ] Je sais, premire vue d'oeil, a peut paratre compliqu. Mais il n'en est rien en ralit. En observant de plus prs, vous verrez que c'est trs abordable. Bon, je vous explique en dtail cette syntaxe. L'instruction SELECT permet de slectionner les donnes partir d'une ou plusieurs colonnes d'une table. L'argument * permet de faire une recherche dans toutes les colonnes de la table donne. L'argument ALL sert indiquer de retourner toutes les valeurs recherches mme ceux qui sont en double. Par exemple, dans une base de donnes contenant une liste de tous les clients d'une socit, il est parfaitement possible qu'il y ait 2 clients ayant le mme nom de famille ou le mme prnom. Eh bien, cet argument indique de retourner les donnes de ces 2 clients. Cet argument est celui par dfaut. Il est facultatif. L'argument DISTINCT est le contraire de ALL. Il sert indiquer de ne retourner que les donnes uniques. Il est facultatif. L'argument TOP permet de prciser le nombre d'enregistrements que vous souhaitez recevoir en rponse votre requte partir du premier enregistrement. PERCENT indique le pourcentage X d'enregistrements que vous souhaitez retournez. Il est facultatif. Les mots Colonne1,Colonne2 Indiquent dans quel(les) colonne(s) de la table ou des tables vous souhaitez effectuez votre recherche. N'oubliez pas la virgule si vous effectuez votre recherche dans plusieurs colonnes. La clause FROM sert indiquer partir de quel(les) table(s) les donnes doivent tre extraites. Cette clause est indispensable pour toute requte Tables reprsente le nom des diffrentes tables dans lesquelles vous dsirez faire des recherches. La clause WHERE permet d'insrer des critres de recherche dans votre requte. Il est facultatif. Le mot Critre de recherche reprsente les critres de recherche. Par exemple: "WHERE Client = 'Alphonse'" ou bien "WHERE Prix < '1500'". Le mot Critre de jointure permet d'effectuer une recherche dans une colonne prsente dans 2 tables diffrentes. Les oprateurs AND et OR permettent d'insrer un autre critre de recherche. Ils sont facultatifs. Le mot Critre de recherche reprsente aussi des critres de recherche. Par exemple: "WHERE Client='Alphonse' OR Client='Jean'". La clause GROUP BY permet de regrouper des donnes. Il est facultatif. Pour le mot ALLVoir prcdemment. La clause HAVING permet d'insrer un critre de recherche pour les donnes regroupes avec la clause GROUP BY. Il est facultatif. Pour le mot Critre de recherche, voir prcdemment.

Enfin, la clause ORDER BY permet de trier les donnes par colonnes. Il est facultatif. Le mot Colonnes reprsente le nom des colonnes dans lesquelles sont tries les donnes. L'argument ASCPermet de trier les donnes par ordre croissant. C'est l'ordre par dfaut. Il est facultatif. L'argument DESC permet de trier les donnes par ordre dcroissant. Il est facultatif.

C'est pas trs vident mais avec de la pratique, tout vous paratra clair. De plus, vous n'tes pas oblig d'utiliser tous les clauses et arguments montrs ci-dessus. Voici un exemple simple sur la faon d'utiliser les requtes avec SQL en s'appuyant sur le contrle Data qui vous permet de visualiser les donnes: Data.RecordSource="SELECT * FROM Fichier WHERE Prix<'1500' AND Prix>'3000' ORDER BY Prix" Il vous suffit de placer ce code dans un bouton de commande pour qu'il fasse apparatre la liste de tous les prix compris entre 1500 et 3000 de la table "Fichier". La clause ORDER BY permet de ranger le rsultat de votre recherche par ordre croissant(ordre par dfaut). 1.2 Les oprateurs Vous pouvez aussi faire appel des oprateurs pour spcifier des conditions dans une instruction SQL ou servir de conjonction plusieurs conditions. Vous vous rappelez, vous en avez dj vu 2 oprateurs avant: ce sont AND et OR. Ces deux l, sont des oprateurs conjonctifs. Il existe 5 types d'oprateur en tout: Les oprateurs de comparaisons servent vrifier les conditions d'galit, de nongalit, les valeurs suprieures et les valeurs infrieures . Les voici: =,<>,<,>,<=,>=. Les oprateurs conjonctifs permettent d'effectuer plusieurs conditions la fois. Les voici: AND et OR. Les oprateurs logiques servent effectuer des comparaisons. Les voici: IN, NOT IN, BETWEEN, NOT BETWEEN, LIKE, NOT LIKE, IS NULL, IS NOT NULL, EXISTS, NOT EXISTS, ALL et ANY. Les oprateurs arithmtiques servent effectuer des oprations de calcul. Les voici: +,-,* et /. Le tableau suivant vous montre comment utiliser tous ces oprateurs.

Oprateur = <> < > <= >= AND OR IN NOT IN BETWEEN NOT BETWEEN LIKE NOT LIKE IS NULL IS NOT NULL EXISTS NOT EXISTS

Exemple WHERE Prix='1500' WHERE Prix<>'1500' WHERE Prix<'1500' WHERE Prix>'1500' WHERE Prix<='1500' WHERE Prix>='1500' WHERE Prix>'1500' AND Prix<'2000' WHERE Prix='1500' OR Prix='2000' WHERE Prix IN('1500','2000') WHERE Prix NOT IN('1500','2000') WHERE Prix BETWEEN '1500' AND '2000' WHERE Prix NOT BETWEEN '1500' AND '2000' WHERE Nom LIKE 'c*' or LIKE '*a' WHERE Nom NOT LIKE '*k*' WHERE Prix IS NULL WHERE Prix IS NOT NULL WHERE EXISTS (SELECT Prix FROM Fichier WHERE Prix='1500') WHERE NOT EXISTS (SELECT Prix FROM Fichier WHERE Prix='1500')

Interprtation Retourne les valeurs dont le prix est gal 1500 Retourne les valeurs dont le prix est diffrent de 1500 Retourne les valeurs dont le prix est strictement infrieur 1500 Retourne les valeurs dont le prix est strictement suprieur 1500 Retourne les valeurs dont le prix est infrieur ou gal 1500 Retourne les valeurs dont le prix est suprieur ou gal 1500 Retourne les valeurs dont le prix est compris entre 1500 et 2000 non inclus. Retourne les valeurs dont le prix est gal 1500 ou 2000 Retourne les valeurs dont le prix est gal 1500 ou 2000 Retourne les valeurs dont le prix est diffrent de 1500 ou de 2000 Retourne les valeurs dont le prix est compris entre 1500 et 2000 non inclus. Retourne les valeurs dont le prix n'est pas compris entre 1000 et 1500 non inclus. Retourne les valeurs dont le nom du client commence par un "c" ou se terminant par un "a" Retourne les valeurs dont le nom du client ne contient pas la lettre "k" Retourne les valeurs dont aucun prix n'a t fix Retourne les valeurs dont le prix a t fix Teste pour vrifier s'il y a des prix gaux 1500 Teste pour vrifier s'il y a des prix diffrent 1500

ALL

WHERE Prix > ALL (SELECT Prix teste pour vrifier s'il y a des produits FROM Fichier_concurrent WHERE concurrent se trouvant Marseille qui Lieu='Marseille') cotent moins cher que le vtre WHERE Prix < ANY (SELECT Prix FROM Fichier_concurrent WHERE Lieu='Marseille') Teste le prix du produit pour savoir s'il est plus bas que celui du concurrent se trouvant dans Marseille

ANY

1.3 Les fonctions mathmatiques Il est aussi possible avec le langage SQL d'effectuer des calculs directement partir des donnes. Cela se fait l'aide des fonctions mathmatiques suivantes: Fonction Utilisation

COUNT() Comptabilise le nombre d'enregistrements retourn SUM() AVG() MAX() MIN() Prenons quelques Calcule la somme des valeurs retournes Calcule la moyenne des valeurs retournes Retourne la plus haute des valeurs trouves Retourne la plus petite des valeurs trouves exemples pour mieux comprendre:

Plaons ce bout de code dans un champs de texte. Data.RecordSource="SELECT COUNT(Produit) FROM Fichier Ce code permet de voir combien est-ce qu'il y a de produits vendu dans un magasin. Les autres fonctions fonctionnent de la mme manire que cette dernire.

2. Ajout et recherche de donnes

2.1 Ajout de donnes Pour ajouter des donnes dans une base de donnes, on utilise l'instruction INSERT. La syntaxe pour ajouter de nouvelles donnes avec SQL est la suivante: INSERT INTO Table (Colonnes)

VALUES (valeurs1,valeurs2) L'instruction INSERT permet d'insrer de nouvelles donnes. Le mot-cl INTO est spcifique une base Access. Ne la mettez que que si vous utilisez Access. Le mot Table reprsente la table o doit tre insr ces nouvelles donnes. Le mot Colonnes reprsente les colonnes dans lesquelles sont places ces nouvelles donnes. La clause VALUES vous permet d'insrer de nouvelles donnes. C'est ici qu'il faut placer les nouvelles valeurs. Les mots valeurs1, valeurs2 reprsentent les donnes qui vont tre entres dans la base. Par exemple: INSERT INTO Fichier_client(Nom,Prnom,Id) VALUES ('Dupont','Jean','568') Le client Dupont Jean, numro d'identification 568, a t ajout dans la base de donnes. 2.2 Suppression de donnes

La suppression de donnes se fait l'aide de l'instruction La syntaxe pour supprimer des donnes l'aide de SQL est la suivante: DELETE FROM table WHERE (Critre de recherche)

DELETE.

L'instruction DELETE permet d'effacer des donnes d'une base. La clause FROM sert indiquer partir de quel table les donnes doivent tre dtruites. Le mot table reprsente le nom de la table. La clause WHERE permet d'introduire un critre de recherche. Le mot Critre de recherche permet d'effectuer une recherche afin de dterminer quelles donnes doivent tre effac de la base.

Par exemple: Le client DELETE FROM Fichier_client WHERE Client='Dupont' Dupont a t supprim dans la base de donnes.

3. Mise jour de donnes

La mise jour de vos donnes se fait l'aide de l'instruction UPDATE. La syntaxe est la suivante:

UPDATE table SET Colonne='valeur' WHERE (Critre de recherche) L'instruction UPDATE permet de mettre jour vos donnes. Le mot table reprsente le nom de la table dans lequel vont tre mis jour des donnes. La clause SET permet d'introduire un critre de recherche. Le mot Colonne reprsente le nom de la colonne dans lequel vont tre mis jour des donnes. Le mot valeur reprsente la nouvelle valeur. La clause WHERE permet d'introduire un critre de recherche. Le mot Critre de recherche permet d'effectuer une recherche afin de dterminer quelles donnes doivent tre effac de la base.

Par exemple: UPDATE Fichier SET date='20/05/01' WHERE Produit='Lait' Tous les enregistrements de la colonne date vont tre modifi par '20/05/01'. Mais avec la clause WHERE, seul les produits laitiers seront concern.

4. Les transactions

Les transactions permettent de grouper une srie d'instruction SQL. Ne croyez pas que a sert rien. Cette mthode de regroupement peut s'avrer tre trs utile lorsque vous manipulez des donnes sensibles. En effet, lorsque qu'une instruction SQL choue, vous avez la possibilit d'annuler la transaction et de revenir en arrire c'est--dire avant que les donnes soient modifies. Cette transaction se fait l'aide des commandes suivantes: BEGINTRANS marque le dbut d'une transaction. COMMITTRANS marque la fin d'une transaction. ROLLBACK annule la transaction et vous retrouvez vos donnes initiales. Voici la syntaxe d'une transaction:
On Error GoTo Erreur BeginTrans Srie d'instruction CommitTrans Exit Sub Erreur: MsgBox Error$ RollBack exit Sub

Vous avez d remarqu qu'une routine de traitement d'erreur a t plac dans ce code. C'est dans le cas o la transaction chouerait. Sinon, je pense que vous avez compris son fonctionnement en voyant la syntaxe. C'est pas dur comprendre.

5. Recherche partir d'un champ de texte

Voici comment faire pour effectuer une recherche partir d'un mot tap dans un champ de texte. Voil, il faut que vous placiez un champ de texte nomm par exemple, "Text1" et un bouton de commande appel par exemple, "Chercher". Placez le bout de code suivant dans la procdure du bouton: valeur = "SELECT * FROM Liste WHERE Produit LIKE " + " ' " + Text1.Text + " ' " Data.RecordSource = valeur Data.refresh Voil, c'est tout! Si vous ne comprenez pas quelque chose, n'hsitez pas poser votre question sur le forum.

Cours 17 : L'diteur de ressources


Tout d'abord, faut que je vous explique ce que c'est qu'un diteur de ressources et quoi sert-il. C'est un utilitaire qui permet de stocker des donnes comme une base de donnes. On pourrait dire que c'est une alternative pour stocker vos donnes au lieu de faire appel des bases de donnes. Vous pouvez par exemple vous servir de cet utilitaire pour permettre de traduire une application en plusieurs langues. Vous pouvez y stocker 5 types de donnes:

Les chanes de caractre; Les bitmaps; Les icnes; Les curseurs; Les ressources de type binaires tels que les fichiers son(WAV) ou vido(AVI). La taille des fichiers est limit 64Ko.

Note:

Bon, en premier lieu, il faut le charger. pour cela, allez dans le menu "Complments" et choisissez la commande "Gestionnaire de complments". Ensuite, placez vous sur la ligne "diteur de ressources" et cochez la case "Charger/Dcharger" en bas droite. Voil, prsent, vous pouvez remarquer dans la barre d'outils, une icne avec des ptits

carrs

verts,

c'est

l'diteur

de

ressources.

Lorsque vous avez cliqu sur cet icne, la fentre de l'diteur de ressource apparat. Vous pouvez constater qu'il est vide. Normal, vous n'y avez encore rien mis. Passons au chose srieuse! A droite de la barre d'outils, vous pouvez remarquer la prsence de 5 icnes permettant de charger la ressource voulue. Chargeons par exemple des chanes. Cliquez sur l'icne "Modifier les tables d'une chane...". Vous verrez alors apparatre un tableau. La premire colonne contient le numro d'identification pour chacune des ressources. La deuxime colonne contient les chanes de caractre en franais. Vous pouvez rajouter d'autres colonnes si vous souhaitez avoir plusieurs langues. Les numros de la premire colonne correspondent la langue utilise par votre ordinateur(LCID). Par exemple, supposons que vous avez plac deux colonnes contenant des chanes en franais et en anglais. Si la langue utilis par votre ordinateur est le franais, alors, ce sera les ressources en franais qui sera utilis. par contre, si la langue utilise par votre ordinateur est l'anglais, alors, ce sera les ressources contenant les chanes en anglais qui sera utilis. Remarquez, si la langue utilise par votre PC ne fait pas partie de vos ressources, alors, ce sera la premire colonne qui sera utilis. Passons la pratique maintenant! Voici les fonctions qui permettent d'utiliser ces ressources dans votre projet. -Pour charger une chane, vous utiliserez la fonction LoadResString(id) o "id" correspond au numro de la chane contenue dans l'diteur de ressources. -Pour charger un curseur, une icne ou un bitmaps, vous utiliserez la fonction LoadResPicture(id,type) o "id" correspond au numro de la chane contenue dans l'diteur de ressources et o "type" correspond au type de ressources que vous voulez charger. Les diffrents types sont: Pour les bitmaps, c'est 0 ou "vbResBitmaps" Pour les icnes, c'est 1 ou "vbResIcon" Pour les curseurs, c'est 3 ou "vbResCursor" -Pour charger une ressource personnalise, vous utiliserez la fonction LoadResData(id,type) o "id" correspond au numro de la chane contenue dans l'diteur de ressources et o "type" correspond au type de ressources que vous voulez charger. Pour ce dernier, modifiez la proprit en crivant par exemple "WAV" comme type pour un fichier son WAV. Enfin, si vous voulez que l'utilisateur puisse choisir la langue utiliser, placez toutes vos chanes dans une seule colonne et utilisez la fonction "LoadResString" suivi de l'ID de la chane.

Cours 18 : Le contrle Winsock

Winsock est le contrle idal et indispensable pour toute communication entre ordinateurs. Il s'appuie principalement sur le protocole TCP/IP(Transmission Control Protocol/Internet Protocol) qui est le langage commun utilise par la plupart des ordinateurs pour communiquer. Winsock, diminutif de Windows Sockets, est souvent utilise pour crer des applications client/serveur. Mais il peut trs bien servir d'autres fins comme par exemple, accder un serveur par FTP(File Transfer Protocol). Au cas o ceux qui ne savent pas en quoi consiste les applications client/serveur, je vais vous expliquer un peu comment a fonctionne. De manire gnrale, ce sont deux programmes qui communiquent en s'changeant des informations. D'une manire plus prcise, l'application client envoie une requte l'application serveur pour demander des informations. Dans le sens inverse, le serveur aprs avoir reu la requte du client, essaie de rpondre cette requte puis renvoie la rponse de la requte au serveur. Bon, je vous explique prsent comment fonctionne ce contrle. Le contrle Winsock n'est pas prsent par dfaut dans la bote outils. Faites un clic droit sur la souris et choisissez la commande "Composants". Cochez sur la case "Microsoft Winsock Control" et validez. Les proprits Les mthodes Les vnements Un exemple d'applications client/serveur

1. Les proprits du contrle Winsock


Pour utiliser Winsock correctement, il est trs important de bien paramtrer les proprits de ce dernier, faute de quoi, votre application ne marchera. Notez que certaines de ses proprits ne sont accessibles que lors de l'criture du code. Toutes les proprits du contrle ne sont pas expliqus. Seuls, les plus importantes le sont et les voici: BytesReceived Indique en octets, les donnes prsentes dans la mmoire tampon de rception. Cette proprit n'est disponible que lors de l'excution de l'application et n'est pas modifiable. La valeur retourne est un nombre entier LocalHostName Retourne le nom du serveur local. Cette proprit n'est disponible que lors de l'excution de l'application et n'est pas modifiable. La valeur retourne est une chane de caractres. LocalIP

Retourne l'adresse IP du serveur local. Cette proprit n'est disponible que lors de l'excution de l'application et n'est pas modifiable. La valeur retourne est une chane de caractres. LocalPort Retourne le numro du port local. Cette proprit est disponible et modifiable aussi bien lors de la conception que lors de l'excution de l'application. La valeur retourne est un nombre entier. Protocol Retourne le protocole utilis. Vous avez le choix entre le mode TCP ou UDP. Le mode TCP vous permet d'tablir et maintenir une connexion un serveur donn. Pour l'application Client, il vous faut le nom du serveur auquel vous vous connectez ou bien son adresse IP ainsi que le port sur lequel vous tes connect. Utilisez ensuite la mthode Connect pour vous connecter. Pour l'application serveur, il vous faut connatre le port sur lequel l'application Client est connect. Faites ensuite appel la mthode Listen pour chercher savoir si l'application Client cherche se connecter au serveur. Si c'est le cas, l'vnement ConnectionRequest est activ et pour que la connexion entre l'application Client et celle du serveur soit maintenue, faites appel la mthode Accept. Enfin, aprs que la connexion soit maintenue, faites appel aux mthodes SendData et Getdata pour envoyer et recevoir des donnes. Le mode UDP(User Datagram Protocol) est un protocole qui n'tablit pas de connexion. Ainsi, la relation de client/serveur disparat. L'application peut donc tre aussi bien cliente que serveur. La distinction n'est plus faite avec ce mode. RemoteHost Retourne le nom du serveur distant. Cette proprit est disponible et modifiable aussi bien lors de la conception que lors de l'excution de l'application. RemotePort Retourne le numro du port distant. Cette proprit est disponible et modifiable aussi bien lors de la conception que lors de l'excution de l'application. La valeur retourne est un nombre entier. State Retourne l'tat de la connexion. Pour finir, voici les diffrents tats possibles de la proprit "State": ETAT Ferm(par dfaut) Ouvert A l'coute Connexion suspendu CONSTANTE sckClosed sckOpen sckListening sckConnectionPending VALEUR 0 1 2 3

Recherche du serveur distant Serveur distant trouv Connexion en cours Connect Fin de connexion avec l'application client Erreur

sckResolvingHost sckHostResolved sckConnecting sckConnected sckOpen sckError

4 5 6 7 8 9

2. Les mthodes du contrle Winsock


Passons maintenant aux mthodes les plus importantes du contrle Winsock. Accept Cette mthode sert montrer que le serveur a accept la connexion de l'application client. Mais avant, il faut que la proprit "State" du contrle soit paramtre "sckListening". Enfin, cette mthode n'est utilise que durant l'vnement "ConnectionRequest". Close Cette mthode met fin la connexion TCP entre les applications client et serveur. GetData Cette mthode permet de rcuprer les donnes stockes dans la mmoire tampon. Listen Cette mthode permet au serveur d'tre l'coute des requtes TCP provenant de l'application client. SendData Cette mthode permet d'envoyer les donnes soit l'application client, soit au serveur. Connect Cette mthode permet de se connecter l'ordinateur distant. Elle doit tre suivie des arguments RemoteHost et Remoteport en les sparant par une virgule.

3. Les vnements du contrle Winsock


Pour finir, faut que je vous montre l'utilisation des vnements. Ces vnements sont trs utiles pour le contrle Winsock. Close Cet vnement se dclenche quand l'ordinateur distant clt la connexion. Connect Cet vnement se dclenche quand l'ordinateur distant a russi tablir la connexion.

ConnectionRequest Cet vnement se dclenche quand le serveur reoit une requte provenant de l'application client. DataArrival Cet vnement se dclenche quand l'application reoit des donnes. SendComplete Cet vnement se dclenche quand l'envoi des donnes est termin. SendProgress Cet vnement se dclenche quand les donnes sont en cours d'envoi. Error Cet vnement se dclenche quand une erreur apparat.

4. Un exemple d'applications client/serveur


Il ne suffit pas de connatre les proprits et mthodes du contrle Winsock pour pouvoir l'utiliser correctement. Je vais donc vous expliquer un peu comment l'utiliser l'aide d'un exemple. Le code suivant est celui d'un exemple d'application client simplifi. Option Explicit Private Sub Connexion_Click() If Winsock.State <> sckConnected Then Winsock.RemoteHost = "127.0.0.1" Winsock.RemotePort = 1007 Winsock.Connect Else MsgBox "Vous tes dj connect" End If End Sub Private Sub Quitter_Click() Winsock.Close End End Sub Private Sub Recherche_Click() If Text1.Text <> "" Then If Winsock.State = sckConnected Then Winsock.SendData Text1.Text Else MsgBox "Non connect au serveur" End If Else MsgBox "Veuillez tapez le nom!"

End If End Sub Private Sub Winsock_DataArrival(ByVal bytesTotal As Long) Dim strData Winsock.GetData strData, vbString Text2.Text = strData End Sub Explication du code de l'application client :

La procdure "Connexion_Click()" sert se connecter au serveur o les donnes que l'on cherche savoir, sont stockes. L'instruction de test "If...Then...Else...End If" sert savoir si l'application client est dj connect ou pas au serveur. Dans le cas o il n'est pas connect au serveur, eh ben on le connecte au serveur. Mais avant, il faut lui fournir des informations sur le serveur, savoir son adresse IP("RemoteHost") et le port("RemotePort") o sera tabli la connexion. Une fois ceci faite, il ne reste plus qu' vous connecter l'aide de la mthode Connect. Dans le cas o il est dj connect au serveur, eh ben, on affiche tout simplement un message indiquant que vous tes dj connect. La procdure "Quitter_Click()" sert mettre fin la connexion avec le serveur. Pour cela, faites appel la mthode Close. Enfin, utilisez l'instruction End pour quitter l'application. N'oubliez surtout pas de mettre fin chaque fois votre connexion un serveur car sinon, cela peut provoquer des erreurs. Une fois connecte au serveur, la procdure "Recherche_Click()" sert faire une requte auprs du serveur afin de chercher les donnes que l'on cherche. La premire instruction de test sert savoir si le champ de texte(Text1) est vide. o Si ce n'est pas le cas, on fait appel une autre instruction de test pour savoir si vous tes dj connect ou pas. Si vous l'tes, alors, on fait appel la mthode SendData Pour envoyer au serveur ce qui est contenu dans le champ "Text1" et rcuprer des infos sur le mot que vous avez entrez dans ce champ. Si c'est le cas, alors un message vous indiquant que vous n'tes pas encore connect au serveur, est affich. o Si c'est le cas, un message vous indiquant que le champ "Text1" est vide, est affich votre cran. La procdure "Winsock_DataArrival(ByVal bytesTotal As Long)" sert recevoir les donnes du serveur. Pour cela, on fait appel la mthode GetData suivi de l'argument dans lequel les donnes seront stockes et enfin suivi du type de cet argument. Enfin, on affecte au champs "Text2" les donnes que l'on a reu du serveur.

Le code suivant est celui d'un exemple d'application serveur. Les donnes que l'on cherche, sont stockes dans une base de donnes que l'on accde l'aide du contrle "Data". Il y aussi une chose rajouter dans la proprit du contrle "Winsock". Dans sa proprit "Index", mettez "0". Cela correspond au nombre de personnes connectes au serveur mais aussi au nime contrle Winsock(groupe contrle). En effet, chaque fois que vous l'incrmentez, un "nouveau" contrle Winsock est charg l'aide de la mthode "Load". Option Explicit Private Sub Form_Load() Label6.Caption = Winsock(0).LocalHostName Label4.Caption = Winsock(0).LocalIP Winsock(0).LocalPort = 1007 List1.AddItem ("A l'coute du port:" & Winsock(0).LocalPort) Winsock(0).Listen End Sub Private Sub Winsock_ConnectionRequest(index As Integer, ByVal requestID As Long) Dim Message As String Message = "ID de la connexion " & requestID & " de " & Winsock(index).RemoteHostIP List1.AddItem (Message) index = index + 1 Load Winsock(index) Winsock(index).Accept requestID Label5.Caption = index End Sub Private Sub Winsock_DataArrival(index As Integer, ByVal bytesTotal As Long) Dim InData, OutData Dim requete As String Winsock(index).GetData InData, vbString requete = "select from * where Nom='" & strData & "'" Data.RecordSource = requete strOutData = Data.Recordset.Fields("Passe") Winsock(index).SendData OutData End Sub Private Sub Winsock_Close(index As Integer) List1.AddItem ("Dconnexion de: " & Winsock(index).RemoteHostIP) index = index - 1 Label5.Caption = index Winsock(index).Close EEnd Sub

Explication

du

code

de

l'application

serveur:

La procdure "Form_Load()" va permettre au chargement de l'application, de placer dans deux contrles "Label", le nom du serveur ainsi que son adresse IP. Ensuite, on indique au serveur sur quel port("LocalPort"), il doit se mettre en coute. Ensuite, il est indispensable de placer le serveur l'coute de requtes de connexion. Pour cela, on fait appel la mthode Listen. La procdure "Winsock_ConnectionRequest(index As Integer, ByVal requestID As Long)" sert traiter les requtes de connexions. L'instruction "index = index + 1" sert indiquer qu'une nouvelle requte de connexion est faite au serveur. On charge un "nouveau" contrle Winsock qui gre cette requte. Pour accepter cette requte, on fait appel la mthode Accept suivi de l'argument "requestID". La procdure "Winsock_DataArrival(index As Integer, ByVal bytesTotal As Long)" sert recevoir les donnes provenant de l'application client et vice-versa. Pour recevoir les donnes, on fait appel la mthode GetData. Pour envoyer des donnes, on fait appel la mthode SendData Enfin, la procdure "Winsock_Close(index As Integer)" sert mettre fin une connexion. A chaque fois, qu'une personne se dconnecte, la proprit "Index" est dcrment de 1. Pour fermer la connexion, utilisez la mthode Close.

Vous aimerez peut-être aussi