Académique Documents
Professionnel Documents
Culture Documents
Cours Visual Basic For Applications Vba Tutorial en Francais
Cours Visual Basic For Applications Vba Tutorial en Francais
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
Mot cl
Occupe
Limite de valeurs
Byte
1 octet
0 255
Logique
Boolean
2 octets
True(-1) ou False(0)
Entier
Integer
2 octets
Long
4 octets
4 octets
8 octets
Currency 8 octets
Date
Date
8 octets
Objet
Object
4 octets
Chane de
caractres
String
Variant (avec
chiffres)
Variant
16 octets
Variant (avec
lettres)
Variant
22 octets+longueur
de chane
Type
Entier long
Montaire
Dfini par
l'utilisateur
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 ils 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
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))
un
tableau,
on
peut
aussi
utiliser
la
fonction
Array
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 Semaine = 5 Then
Jour = "Vendredi"
ElseIf Semaine = 6 Then
Jour = "Samedi"
ElseIf Semaine = 7 Then
Jour = "Dimanche"
Else
MsgBox "erreur", vbOKOnly , "Note"
End If
Pour que l'instruction soit excute une fois sur 2, 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
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 feuille 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
large ou trop longue pour tre affiche en une seule fois.
Le contrle FileListBox permet d'afficher la liste de tous les fichiers d'un rpertoire
du disque.
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,...).
Utilisation
Initialise True, elle renvoie le code d'erreur 32755 (CDERR_CANCEL)
lorsque le bouton Annuler a t press.
DefaultExt
DialogTitle
FileName
Filter
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|.
Flags
InitDir
Utilisation
Initialise True, elle renvoie le code d'erreur 32755 (CDERR_CANCEL)
lorsque le bouton Annuler a t press.
Flags
Color
Flags
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&".
FontBold
FontItalic
FontName
FontSize
FontStrikethru
FontUnderline
Max
Min
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.
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'esperluette "&" 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'esperluette. 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
commandes 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 dcoch 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 ouverts 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 : Button = 1 pour le bouton
gauche et Button = 4 pour le bouton central
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.
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 excutes.
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.
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.
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).
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 situes 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 prsent, 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.
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 ?
Rows
Cols
FixedRows
FixedCols
Row
Col
Text
ColWidth
RowHeight
ColAlignment
RowSel
ColSel
De mme, les proprits du contrle Microsoft Chart Control 6.0 permettent de dfinir un
graphe donn.
Column
Data
elle renvoie ou dfinit la valeur d'un point de donnes spcifique dans la grille
de donnes identifie par Row et Column.
Elle renvoie ou dfinit le type de graphiques utilis pour tracer les donnes
dans la grille 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
DataBaseName Indiquez-y o se trouve votre fichier de base de donnes sur votre disque.
RecordSource
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
Passons prsent, aux principales mthodes utilises pour grer une base de donnes
dans une application.
AddNew
Delete
Movefirst,
MoveLast,
MovePrevious,
MoveNext
Refresh
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. Veuillez noter qu'il existe plusieurs types d'objet multimdia.
Les plus courantes sont le WaveAudio (Fichier sonore numris .WAV), le Sequencer
(Fichier musical MIDI .MID), CDAudio (Morceau de musique sur un CD audio),
AVIVideo (Fichier numrique au format .AVI), etc. Bien sr, 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. En voici une liste des commandes
MCI, les plus importantes :
Commande MCI
Fonction
Stop
Play
Open
Close
Pause
Eject
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.
L'argument ALL indique 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. 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 quelle(s) 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 quelle(s) 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 = 'Jean'" 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.
Colonnes reprsente le nom des colonnes dans lesquelles sont tries les donnes.
L'argument ASC permet de trier les donnes par ordre croissant. C'est l'ordre par
dfaut. Il est facultatif.
L'argument DESC , facultatif, permet de trier les donnes par ordre dcroissant.
Ce nest 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 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
Exemple
Interprtation
WHERE Prix='1500'
<>
WHERE Prix<>'1500'
<
WHERE Prix<'1500'
>
WHERE Prix>'1500'
<=
WHERE Prix<='1500'
>=
WHERE Prix>='1500'
AND
OR
IN
NOT IN
BETWEEN
NOT
BETWEEN
LIKE
'*a'
NOT LIKE
IS NULL
IS NOT
NULL
EXISTS
ALL
WHERE Prix > ALL (SELECT Prix Test pour vrifier s'il y a des produits
FROM Fichier_concurrent WHERE concurrents se trouvant Marseille
Lieu='Marseille')
qui cotent moins cher que le vtre
ANY
WHERE Prix < ANY (SELECT Prix Teste le prix du produit pour savoir s'il
FROM Fichier_concurrent WHERE est plus bas que celui du concurrent se
Lieu='Marseille')
trouvant dans Marseille
Utilisation
COUNT()
SUM()
AVG()
MAX()
MIN()
Prenons un exemple pour mieux comprendre. Plaons ce bout de code dans un champ 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.
DELETE.
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 remarquer qu'une routine de traitement d'erreur a t place 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. Ce nest pas dur comprendre.
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.
CONSTANTE
VALEUR
sckClosed
Ouvert
sckOpen
A l'coute
sckListening
Connexion suspendue
sckConnectionPending
sckResolvingHost
sckHostResolved
Connexion en cours
sckConnecting
Connect
sckConnected
sckOpen
Erreur
sckError
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.
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.
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