Cours Visual Basic For Applications (Vba) - Tutorial en Francais
Cours Visual Basic For Applications (Vba) - Tutorial en Francais
Cours Visual Basic For Applications (Vba) - Tutorial en Francais
D’après http://membres.lycos.fr/allvb/
Après avoir lancé Visual Basic, vous devez voir apparaître à l'écran une boîte de dialogue
vous demandant quel genre d'application voulez-vous créer ? Choisissez "EXE
Standard" si vous voulez créer un programme. Quant aux autres types d'applications,
laissez-les de côté pour le moment. Vous verrez alors apparaître en face de vous une
fenêtre fragmentée en plusieurs petites fenêtres. Au premier abord, cela doit
certainement vous effrayer de voir une multitude de mini fenêtres. Ne vous inquiétez pas,
votre comportement est tout à fait normal. N'importe quel NEWBIE aurait eu ce
comportement. Moi-même, je l'ai été et j'ai pensé au début 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 créer, créer un
programme même si ce n'est qu'une simple petite application car je sais qu'après je
pourrai concevoir des programmes plus élaborés au fur à mesure que j'acquiers de
nouvelles connaissances.
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 procédure 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
procédure. Contentez-vous pour l'instant de lire cette procédure et observez simplement
de quoi peut être composée une procédure.
• La 1ère ligne contient des infos sur le nom de la feuille principale (Form1) du
projet, du type d'événement qui permet de lancer cette procédure. Ici
L'événement en question est Load, ce qui veut dire que cette procédure sera
exécutée au chargement de la feuille "Form1".
• dans les 2èmes et 3èmes lignes, sont définis des variables limitées à cette procédure
uniquement.
• Les lignes suivantes sont formées d'instructions servant à définir le comportement
de la feuille dès son chargement. (Nous verrons de plus près ces instructions dans
les cours suivants.)
• La dernière ligne End Sub clôt la procédure.
Les variables sont des données ou des valeurs qui peuvent changer à l'intérieur d'une
application. C'est pourquoi, il est fort utile de les nommer par un nom, de déclarer quel
genre de variables est-ce (nombre entier, nombre décimal, lettres...) et leur affecter,
lorsque cela est nécessaire une valeur.
La longueur maximale du nom d'une variable est de 255 caractères. 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 affectée à la variable.
Ainsi, une variable déclarée comme du type numérique ne peut pas recevoir une valeur
chaîne de caractère, ainsi qu'à l'inverse.
Notez que si vous ne déclarez pas une variable, Visual Basic se chargera d'affecter par
défaut un type de variable (Variant) à celle-ci. Une variable du type Variant peut aussi
bien recevoir des données numériques que des chaînes de caractères. Tout dépend de ce
que vous avez affecté à cette variable.
2. Type de variables
3. Déclaration de variables
Pour utiliser des variables, il est normalement obligatoire de les prédéfinir, soit dans la
section Déclarations de la liste déroulante Objet, soit en début de procédure ou de
fonction. Un programme où les variables sont bien déclarées rend un programme plus
facile à comprendre, à lire et surtout à corriger en cas d'erreurs. Certes, il n'est pas
obligatoire de les déclarer mais faites-le quand même, c'est un conseil. Si vous êtes prêt à
déclarer une variable que vous voulez utilisez mais que vous êtes un étourdi, alors,
utilisez simplement l'instruction Option Explicit (à placer dans la section Déclarations de
la liste déroulante Objet) qui vous oblige à chaque fois à déclarer toutes vos variables
avant de pouvoir exécuter l'application.
Pour déclarer 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 1ère déclaration ne contient pas d'information sur le type de variable.
Si vous déclarez une variable sans donner d'information sur le type de variable que c'est,
alors, cette variable (DateNaissance) aura par défaut une variable du type Variant. Si vous
avez bien lu l'exemple précédent, vous aurez compris qu'il s'agit ici d'une variable de type
Variant (avec chiffres) qui lui est affectée par défaut. La 2ème déclaration est par contre
explicite. Vous pouvez aussi mettre 2 variables sur une même ligne à condition que le type
de variable est le même pour les 2 et en les séparant par une virgule.
Il existe une autre méthode de déclarer des variables. Pour cela, il suffit d'ajouter juste
avant la variable, un symbole spécifique. Voici la liste des symboles avec le type de
variable auxquelles ils se rapportent :
Dans l'exemple ci-après, les deux premières instructions sont équivalentes à la troisième :
Dim V1 as Integer
V1 = 25
V1% = 25
En général, toute variable déclarée a une portée limitée. Cette même variable a une valeur
nulle au départ. De plus, elle ne s'applique pas forcément à toutes les procédures d'une
application. Tout dépend de 2 éléments : la manière de déclarer et l'emplacement de la
variable.
• dans une procédure, si vous déclarez une variable à l'aide de l'instruction Dim, sa
portée se trouve limitée seulement à cette procédure. On dit que la variable est
locale. Elle est donc initialisée à chaque appel de la procédure et détruite lorsque
celle-ci se termine (à moins que vous remplaciez le mot Dim par Static). Elle n'est
pas accessible en dehors de la procédure. Vous pouvez remplacer l'instruction
Dim par Private, les deux termes étant équivalentes s'ils sont placés à l'intérieur
d'une procédure.
• Si vous déclarez une variable dans la section Général/Déclarations 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 procédures de la feuille ou
du module, mais pas pour les autres feuilles du projet.
• Enfin, si vous déclarez une variable dans la section Général/Déclarations 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 diffèrent 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 définissent de la même façon que les
variables. Tout dépend donc de l'endroit où est défini la constante. Le mot Const peut
être précédé de l'option Public pour que toutes les feuilles et modules de l'application
puissent y accéder.
Attention cependant à ne pas affecter à une constante des noms identiques aux constantes
prédéfinies (VbSystemModal, VbOkOnly, VbArrow...) dans Visual Basic !
Prenons l'exemple du taux de TVA :
Const TVA = 20.6
TotalTTC=PrixHorsTaxe x (1 + (TVA / 100))
Les tableaux de valeurs sont utiles lorsque l'on manipule des données en tout genre.
Ainsi, dans un carnet d'adresses, vous pouvez stocker toutes les adresses dans un tableau
structuré. Par exemple :
........
Adresses(50) = "4, rue de la Paix, Paris"
Comme vous pouvez le constatez, la définition d'un tableau ressemble beaucoup à celle
d'une variable à la seule différence que vous devez donner une limite aux nombres de
valeurs contenues dans un tableau. Pour appeler une des variables du tableau, il faut
faire précéder de la variable, un numéro qui permet d'identifier la variable spécifique
recherchée parmi toutes celles du tableau. Ce tableau est à une dimension,
Voici un exemple à 2 dimensions :
Notez qu'avec les fonctions LBound et UBound, vous pouvez obtenir les limites
inférieures et supérieures d'un tableau.
........
Adresses(49) = "4, rue de la Paix, Paris"
Avec cette méthode, les limites du tableau ne sont pas définies. Notez que le nombre
d'adresses est de 50 mais la numérotation va de 0 à 49 et non de 1 à 50. Il existe
cependant un moyen pour que la numérotation commence à 1 : c'est en utilisant
l'instruction Option Base (par exemple : Option Base = 1) qu'il faut placer dans la section
Déclarations.
Ainsi, à chaque fois que l'on lance cette procédure, le nombre total d'adresses
(NbAdresses) est incrémenté (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 dernière valeur entrée.
Cependant, il existe un moyen de conserver les données déjà présentes dans le tableau.
Pour cela, on fait appel à l'instruction Preserve :
Enfin, pour terminer, il est possible d'effacer toutes les données d'un tableau. Pour cela,
on utilise l'instruction Erase suivi du nom du tableau.
Cours 5 : Structure des conditions (tests, boucles)
1. Structure des tests
If condition Then
Instructions 1
else
Instructions 2
End if
Interprétation : Si la condition est vérifiée alors les instructions 1 sont exécutées sinon les
instructions 2 sont exécutées à la place. (Notez que l'on peut utiliser des opérateurs
logiques And (et) et Or (ou) pour que plusieurs conditions doivent d'abord être vérifiées
avant de pouvoir exécuter les instructions suivantes.). Le mot Else et les instructions qui
suivent ne sont pas obligatoires.
If Condition 1 Then
Instruction 1
ElseIf Condition 2 Then
Instruction 2
Else
Instructions X
End If
Interprétation : Si la condition 1 est vérifiée alors les instructions 1 sont exécutées. Sinon
si la condition 2 est vérifiée alors les instructions 2 sont exécutées. Sinon, si aucune de ces
deux conditions ne sont vérifiées alors les instructions X sont exécutées.
Interprétation : Si la condition est vérifiée alors les instructions 1 sont exécutées sinon les
instructions 2 sont exécutées à 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 retournée par la condition est affectée
à une variable.
1.2 La structure Select Case...End Select
Lorsque l'on doit effectuer toute une série de tests, il est préférable d'utiliser la structure
Select Case...End Select au lieu de If...Then...End if.
Ainsi, les deux exemples suivants sont équivalents :
La structure For...Next est utile lorsqu'on doit répéter plusieurs fois la même instruction.
Exemple :
For J = 1 To 10
T(J) = J
Next
Interprétation : Dans cette boucle, l'instruction "T(J)=J" est répétée 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 exécutée une fois sur 2, vous pouvez utiliser l'instruction Step :
For J = 1 To 10 Step 2
T(J) = J
Next
Interprétation : Dans cette boucle, l'instruction "T(J)=J" affecte à T(J) les valeurs
1,3,5,7,9.
Cette structure est moins utilisée que la précédente. Elle sert surtout à exécuter des
instructions portant sur un tableau. Exemple :
Avec ces boucles, le nombre de fois où sont répétées les instructions est indéfini.
Les deux exemples qui suivent sont équivalents :
i = 1 i = 1
Do While i < 10
T(i) = i T(i) = i
i = i + 1 i = i + 1
Loop Until i > 10 Wend
Ne vous fiez pas aux apparences. Le Pointeur n'est pas un contrôle. Il sert juste à
déplacer et à redimensionner un contrôle placé sur une feuille.
Le contrôle PictureBox sert à afficher une image en mode point, une icône ou un
métafichier. Il sert aussi à regrouper des boutons radio. Remarquons que ce contrôle est
le seul qui puisse être placé dans une feuille MDI. En effet, essayez de placer d'autres
contrôles sur une feuille MDI, vous verrez que ça ne marche pas !
Le contrôle Label sert à placer du texte qui ne peut être modifié ou effacé lors de
l'exécution de l'application.
Le contrôle Textbox sert à placer du texte qui peut être ou non modifié par
l'utilisateur lors de l'exécution de l'application.
Le contrôle Checkbox sert à placer une case à cocher. En plaçant plusieurs cases à
cocher dans une application, l'utilisateur aura le choix entre plusieurs options. Selon les
options sélectionnées, une portion de code sera exécutée.
Le contrôle ListBox s'utilise comme le contrôle ComboBox sauf que dans la liste
d'option, plusieurs options sont affichées simultanément.
Les barres de défilement permettent de lire la suite du contenu d'une fenêtre trop
large ou trop longue pour être affichée en une seule fois.
Le contrôle Timer permet de générer un événement à intervalle régulier, par exemple
dans une horloge où toutes les minutes, l'aiguille des minutes bouge. Notons que le
contrôle Timer n'apparaît pas pendant l'exécution d'une application.
Le contrôle DirListBox permet d'afficher la liste de tous les répertoires d'un lecteur
de disque.
Le contrôle FileListBox permet d'afficher la liste de tous les fichiers d'un répertoire
du disque.
Le contrôle Shape permet de dessiner des figures dans une feuille (rectangle, carré,
cercle). Le type de forme est choisi dans la propriété Shape du contrôle.
Le contrôle Line permet de tracer des lignes dans une feuille. La propriété
BorderStyle permet de choisir le type de ligne que vous désirez : continu, invisible,
pointillé...
Le contrôle Image permet tout comme le contrôle PictureBox d'insérer des images en
mode point, icône, ou métafichier. Cependant, il requiert moins de ressource et donc
diminue la taille de votre application.
Propriété Utilisation
DialogTitle elle définit le titre de la boîte de dialogue situé sur la barre de titre.
FileName Elle définit le chemin d'accès et le nom du fichier sélectionné par défaut.
Elle définit le(s) filtre(s) qui sert à spécifier quel type de fichier pouvant être
ouvert en lecture. Par exemple, avec l'instruction " CMD.Filter =" DLL
Filter
(*.DLL)|*.DLL|Exécutables (*.EXE)|*.EXE|Tous (*.*)|*.*| ", vous pouvez
choisir de n'ouvrir que les fichiers .DLL ou .EXE ou bien tous les fichiers.
Elle spécifie le filtre à utiliser par défaut dans la boîte de dialogue. Reprenons
FilterIndex l'instruction précédente : avec l'instruction suivante "CMD.FilterIndex = 2", le
filtre utilisé par défaut sera donc Exécutables (*.EXE)|*.EXE|.
Propriété Utilisation
Propriété Utilisation
Propriété Utilisation
Elle sert à indiquer si les paramètres entrés doivent devenir les nouveaux
PrinterDefault
paramètres par défaut.
1. Le système de menus
Pour créer un système de menus, allez dans le menu "Outils" du système de menu de
Visual Basic et choisissez la commande "Créateur de menus" ou pour aller plus vite,
cliquez sur la 3ème image de la barre d'outils.
A première vue, ça a l'air compliqué. Mais après quelques manipulations, ce sera facile.
Bon, voyons de plus près ce système de menus.
L'esperluette "&" que vous voyez dans chaque menu et commande vous permet de créer
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 créer un raccourci. C'est automatiquement "Alt" + la lettre
précédant l'esperluette. Pour les commandes, allez dans la liste déroulante Shortcut et
choisissez le raccourci que vous voulez pour votre commande de menu.
Pour créer une commande de menu, il faut l'indenter au menu auquel il est rattaché.
Pour cela, à la suite de la création du menu "Fichier", appuyez sur la flèche de droite
pour indenter la commande "Ouvrir". Visual basic permet un maximum de 5 niveaux
d'indentation. Par exemple, vous pouvez après avoir créé la commande "Ouvrir", créer
une sous-commande en l'indentant à ce dernier.
Vous pouvez par ailleurs créer une barre séparatrice afin de séparer 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
sélection en face d'une commande de menu.
• La case à cocher "Enabled" permet d'empêcher l'utilisateur de sélectionner une
commande. Si vous décochez cette case, l'utilisateur ne pourra pas sélectionner le
menu ou la commande auquel vous avez décoché 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 concernée.
2. Le menu contextuel
Dans une quelconque application de Microsoft, lorsque vous cliquez sur le bouton droit
de votre souris, une série de commande apparaît : c'est le menu contextuel (ou Popup
menu en anglais).
La création d'un popup menu se fait presque comme un système de menu. Pour cela,
faites exactement comme si vous créez un système de menu. Définissez ensuite, une action
pour chaque commande du menu contextuel. Par la suite, il faut définir dans quelles
conditions doit apparaître le menu contextuel. Double-cliquez sur la feuille où est créé le
système de menu et dans la liste déroulante "événement", sélectionnez l'événement
"MouseDown". Entrez les instructions suivantes :
Il existe trois manières d'ouvrir un fichier texte. La 1ère manière est l'ouverture d'un
fichier uniquement en lecture à l'aide de l'instruction Input. La 2ème manière est
l'ouverture d'un fichier uniquement en écriture à l'aide de l'instruction Output. Enfin, la
dernière manière est l'ouverture d'un ficher en écriture aussi mais à la seule différence de
la précédente manière, les nouvelles données sont entrées à la suite de l'enregistrement
précédent. Pour cela, on utilise l'instruction Append.
Explication :
• L'instruction On error Resume Next permet d'ignorer toute erreur que peut
entraîner cette procédure.
• 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 exécutée
pour la première fois, une erreur 53 devrait apparaître car le fichier "note"
n'existe pas encore. Mais grâce à l'instruction On Error Resume Next, cette erreur
sera tout simplement ignorée.
• 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
première 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 vérifier 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 différent de
zéro alors, les instructions à l'intérieur du test sont exécutées.
• La boucle avec While permet de parcourir tout le fichier à la recherche
d'éventuelles autres lignes que la première. La fonction EOF permet de savoir si
l'on arrive à la fin du fichier ouvert. Cette boucle est donc exécutée jusqu'à ce que
tout le contenu du fichier soit placé dans la variable tout. Les chaînes de
caractères affectées à la variable "tout" sont concaténées (concaténées = ajoutées)
aux précédentes contenues dans la variable. La variable "retour" provoque un
retour à la ligne à chaque fois que cela est nécessaire.
• Lorsque tout le contenu du fichier sera affecté à la variable "tout", cette dernière
sera à son tour affectée à la propriété Text du contrôle TextBox. Ce qui
provoquera l'affichage du contenu du fichier dans le contrôle TextBox.
• L'instruction Close ferme le fichier ouvert en lecture.
Explication : le contenu de la zone de texte "Text1" est ensuite copié dans le fichier à l'aide
de l'instruction Print.
Les fichiers à accès direct contiennent des données contenues dans plusieurs
enregistrements fixes. Pour déclarer un enregistrement, on utilise l'instruction Type pour
créer un nouvel type de variable. Ensuite, On déclare une variable de ce type. Pour
ouvrir un fichier à accès direct, on utilise l'instruction Open en indiquant la longueur de
chaque enregistrement. Ainsi, un fichier à accès direct s'ouvre de la manière suivante :
Open "C:\Windows\Bureau\fichier.adr" For Random As #1 Len = Len(Adr) où adr est le
nom d'une variable de type prédéfini.
La lecture d'un enregistrement s'effectue de la manière suivante : Get #1, Numéro, adr.
L'écriture dans un fichier à accès direct s'effectue de la manière suivante : Put #1,
Numéro, adr.
Dans la mesure où le fonctionnement des fichiers à accès binaires est très proche de celui
des fichiers à accès direct, reportez-vous aux fichiers à accès direct.
Cours 10 : Le presse-papier
Le presse-papier est indispensable pour toute opération de copie et de collage. Ces
opérations s'effectuent grâce à l'objet ClipBoard.
Remarque : Si vous utilisez le contrôle TextBox, vous n'avez pas besoin de définir des
procédures pour le presse-papier dans la mesure où il est déjà intégré dans le contrôle.
Par contre, si vous utilisez le contrôle RichtextBox, alors il vous faudra définir vous-
même le presse-papier. La différence entre ces 2 contrôles de saisie est que le contrôle
RichTextBox possède quelques fonctions supplémentaires comme la possibilité de définir
des marges autour du texte.
1. La barre d'outils
Commencez par sélectionner le contrôle ToolBar dans la boîte 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, sélectionnez le contrôle ImageList et placez-le à son tour sur la feuille. (Notez
que l'emplacement de ce contrôle n'a aucune importance.) Sélectionnez à nouveau le
contrôle ImageList mais cette fois, sur la feuille et cliquez sur le bouton droit de votre
souris. Dans le menu contextuel, choisissez la commande "Propriétés".
Dans l'onglet "Général", vous avez la possibilité de modifier la taille de vos images
présentes dans la barre d'outils. C'est dans l'onglet "Images" que vous allez pouvoir
choisir les images qui y seront placées. Appuyez sur le bouton "Insérer une image". Les
images par défaut fournies avec Visual Basic sont situées dans le répertoire C:\Program
Files\Microsoft Visual Studio\Common\Graphics\Bitmaps. Sélectionnez les images que
désirez mettre sur votre barre d'outils. Attribuez à chacune de ces images un nom dans la
propriété "Key". Validez ensuite en appuyant sur le bouton "Appliquer".
A présent, faites un clic droit sur le contrôle ToolBar et sélectionnez "propriétés". Dans
l'onglet "Général", sélectionnez "ImageList1" dans les propriétés "ImageList",
"DisabledImageList" et "HotImageList". Sélectionnez aussi "1-TbrFlat" dans la
propriété "Style". Passons à présent à l'onglet "Boutons". Renseignez les principales
propriétés. Écrivez dans la propriété "Key" le nom des images que vous avez choisi dans
le contrôle ImagaList. La propriété "ToolTipText" vous permet d'afficher une bulle
lorsque vous survolez l'image. Enfin, dans la propriété "Image", écrivez les numéros qui
sont respectifs aux images contenues dans le contrôle 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 à
présent visible.
A présent, occupons-nous du code pour relier chaque icône de la barre d'outils à une
action. Double-Cliquez sur la barre d'outils. Pour gérer 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
2. La barre d'état
Choisissez le contrôle 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 à présent placé sur la feuille et allez dans l'onglet
"Propriétés". Paramétrez les différentes propriétés qui s'y trouvent.
Ca y est ! A présent, votre application est comparable à toute autre logiciel. Avec
quelques réglages supplémentaires, vous pouvez même 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 préalable
placer dans votre boîte d'outils, les contrôles Microsoft Flexgrid Control 6.0 et Microsoft
Chart Control 6.0. Pour cela, faites un clic droit sur la boîte d'outils et choisissez la
commande "Composants". Ensuite, cochez les cases correspondant aux contrôles et
validez.
Grâce au contrôle MSFlexGrid et après avoir acquis une certaine expérience, vous
pouvez même créer des tableurs semblables à ceux du logiciel Excel de Microsoft. Les
propriétés du contrôle MSFlexGrid permettent de manipuler les cellules de ce dernier.
1. Pour créer la fenêtre parent en tant que tel, ouvrez un nouveau projet puis
sélectionnez dans la fenêtre de projet la feuille ouverte par défaut Form1. Faites
un clic droit dessus et choisissez la commande "Supprimer Form1". Ensuite, allez
dans le menu "Projet" et sélectionnez la commande "Ajouter une feuille MDI".
Voilà ! Vous avez créé une fenêtre parent, facile non ?
2. Passons à la création du système de menus. pour cela, reportez-vous au cours 8.
3. Enfin, passons à la création de la barre d'outils et celle d'état. Pour cela, reportez-
vous au cours11.
Sa mise en place est simple. Pour la définir, placez une nouvelle feuille dans le projet.
Ensuite, initialisez à True sa propriété MDIChild. C'est tout !
Cours 14 : Les bases de données
L'élaboration d'une base de données se fait à l'aide du contrôle Data. Ainsi, vous pouvez
accéder à pas mal de fichiers de données divers tels que ceux de Access, Excel, FoxPro,
Lotus 1-2-3, BTrieve ou tout fichier ASCII.
En clair, le contrôle Data est indispensable dans la réalisation d'une gestion d'une base de
données. Cependant, il ne suffit pas simplement de placer le contrôle sur la feuille. Il faut
impérativement renseigner quelques unes de ses propriétés sans quoi, le contrôle 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 données, c'est pas du tout mon truc et rien
que d'entendre ce mot, ça me donnait la migraine. Mais après une très courte séance
d'apprentissage, je me suis vite rendu compte que ce n'était pas aussi cailloux comme le
prétendent certains. Ca y est, vous avez repris confiance en vous ? Allez, c'est parti !
Tout d'abord, définissez un nouveau projet et placez le contrôle Data sur la feuille
"Form1". Maintenant, passons au renseignement de quelques unes de ses propriétés.
Pour pouvoir afficher les données de votre fichier, vous aurez sans doute besoin d'un ou
plusieurs champs de texte créés à l'aide du contrôle TextBox. Là aussi, vous aurez à
modifier quelques une de ses propriétés.
Passons à présent, aux principales méthodes utilisées pour gérer une base de données
dans une application.
Pour aller un peu plus loin, nous allons ici traiter des requêtes 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 !
La lecture des fichiers audio ou vidéo se fait à l'aide du contrôle MMControl. Pour cela,
choisissez la commande "Composants" du menu "Projet". Cochez le contrôle Microsoft
Multimedia Control 6.0 et validez. A présent, le contrôle MMControl est dans votre boîte
d'outils. Veuillez noter qu'il existe plusieurs types d'objet multimédia.
Les plus courantes sont le WaveAudio (Fichier sonore numérisé .WAV), le Sequencer
(Fichier musical MIDI .MID), CDAudio (Morceau de musique sur un CD audio),
AVIVideo (Fichier numérique au format .AVI), etc. Bien sûr, il en existe bien d'autres
types d'objet multimédia mais nous nous contenterons de ceux cités dans le tableau.
Pour ouvrir un fichier multimédia, servez-vous des boîtes de dialogue communes. Pour
imiter les commandes du contrôle MMControl, il est utile de connaître les commandes
MCI. Elles agissent sur le comportement de ce dernier. En voici une liste des commandes
MCI, les plus importantes :
Pour les fichiers "CDAudio", cela se passe un peu différemment. Placez la portion de
code qui suit dans la procédure "Form_Load()":
Private Sub Form_Load()
MMControl1.DeviceType = "CDAudio"
MMControl1.Command = "Open"
MMControl1.UpdateInterval = 1000
MMControl1.Timeformat = 10
End Sub
Pour éjecter le CD du CD-ROM, placez la portion de code qui suit dans la procédure
"MMControl1_EjectClick(Cancel As Integer)":
Explication : Comme vous vous doutez, la 1ère instruction permet d'éjecter le CD, la
2nde de fermer le périphérique MCI (sorties audio/vidéo) et la dernière de quitter.
Enfin, le plus important, placez la portion de code qui suit dans la procédure
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 = " Durée " + Minute + " : " + Seconde
End Sub
Tout d'abord, il faut que je vous explique ce que c'est que ce langage de requête et à quoi
est-ce qu'il sert. Le SQL("Structured Query Language" ou pour les francophones,
"Langage de Requête Structuré") est un langage qui a été créé dans le but de
communiquer avec une base de données relationnelle.
Pour ceux qui ne le savent pas, une base de données relationnelle est une base de données
où les données sont stockées dans des tables. Ces dernières 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 données. 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 données, d'insérer de nouvelles données mais aussi
mettre à jour vos données existantes. A présent voyons cela de plus près.
1. Recherche de données
1.1 La syntaxe
L'instruction utilisée pour effectuer une recherche dans une base de données est
SELECT. Elle sert à interroger une base et de retourner si elles existent, les données que
vous recherchez. La syntaxe de l'instruction SELECT est la suivante :
Je sais, à première vue d'oeil, ça peut paraître compliqué. Mais il n'en est rien en réalité.
En observant de plus près, vous verrez que c'est très abordable. Bon, je vous explique en
détail cette syntaxe.
Ce n’est pas très évident mais avec de la pratique, tout vous paraîtra clair. De plus, vous
n'êtes pas obligé d'utiliser tous les clauses et arguments montrés ci-dessus.
Voici un exemple simple sur la façon d'utiliser les requêtes avec SQL en s'appuyant sur le
contrôle Data qui vous permet de visualiser les données :
Vous pouvez aussi faire appel à des opérateurs pour spécifier des conditions dans une
instruction SQL ou servir de conjonction à plusieurs conditions. Vous vous rappelez, vous
en avez déjà vu 2 opérateurs avant : ce sont AND et OR. Ces deux là, sont des opérateurs
conjonctifs. Il existe 5 types d'opérateur en tout :
Il est aussi possible avec le langage SQL d'effectuer des calculs directement à partir des
données. Cela se fait à l'aide des fonctions mathématiques suivantes :
Fonction Utilisation
COUNT() Comptabilise le nombre d'enregistrements retourné
SUM() Calcule la somme des valeurs retournées
AVG() Calcule la moyenne des valeurs retournées
MAX() Retourne la plus haute des valeurs trouvées
MIN() Retourne la plus petite des valeurs trouvées
Prenons un exemple pour mieux comprendre. Plaçons 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 même manière que cette dernière.
Pour ajouter des données dans une base de données, on utilise l'instruction INSERT.
La syntaxe pour ajouter de nouvelles données avec SQL est la suivante :
Par exemple :
INSERT INTO Fichier_client(Nom,Prénom,Id) VALUES ('Dupont','Jean','568')
Le client Dupont Jean, numéro d'identification 568, a été ajouté dans la base de données.
Par exemple :
DELETE FROM Fichier_client WHERE Client='Dupont'
Le client Dupont a été supprimé dans la base de données.
La mise à jour de vos données se fait à l'aide de l'instruction UPDATE. La syntaxe est :
UPDATE table SET Colonne='valeur'
WHERE (Critère de recherche)
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 série d'instruction SQL. Ne croyez pas que
ça sert à rien. Cette méthode de regroupement peut s'avérer être très utile lorsque vous
manipulez des données sensibles. En effet, lorsque qu'une instruction SQL échoue, vous
avez la possibilité d'annuler la transaction et de revenir en arrière c'est-à-dire avant que
les données soient modifiées. Cette transaction se fait à l'aide des commandes suivantes :
Voilà, c'est tout ! Si vous ne comprenez pas quelque chose, n'hésitez pas à poser votre
question sur le forum.
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 données comme une base de données.
On pourrait dire que c'est une alternative pour stocker vos données au lieu de faire appel
à des bases de données.
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 données :
Bon, en premier lieu, il faut le charger. Pour cela, allez dans le menu "Compléments" et
choisissez la commande "Gestionnaire de compléments". Ensuite, placez vous sur la ligne
"Éditeur de ressources" et cochez la case "Charger/Décharger" en bas à droite. Voilà, à
présent, vous pouvez remarquer dans la barre d'outils, une icône avec des ptits carrés
verts, c'est l'éditeur de ressources.
Lorsque vous avez cliqué sur cet icône, la fenêtre de l'éditeur de ressource apparaît. Vous
pouvez constater qu'il est vide. Normal, vous n'y avez encore rien mis. Passons aux
choses sérieuses !
A droite de la barre d'outils, vous pouvez remarquer la présence de 5 icônes permettant
de charger la ressource voulue. Chargeons par exemple des chaînes. Cliquez sur l'icône
"Modifier les tables d'une chaîne...". Vous verrez alors apparaître un tableau. La
première colonne contient le numéro d'identification pour chacune des ressources. La
deuxième colonne contient les chaînes de caractère en français. Vous pouvez rajouter
d'autres colonnes si vous souhaitez avoir plusieurs langues. Les numéros de la première
colonne correspondent à la langue utilisée par votre ordinateur (LCID). Par exemple,
supposons que vous avez placé deux colonnes contenant des chaînes en français et en
anglais. Si la langue utilisée par votre ordinateur est le français, alors, ce sera les
ressources en français qui sera utilisé. Par contre, si la langue utilisée par votre
ordinateur est l'anglais, alors, ce sera les ressources contenant les chaînes en anglais qui
sera utilisé. Remarquez, si la langue utilisée par votre PC ne fait pas partie de vos
ressources, alors, ce sera la première colonne qui sera utilisé.
Enfin, si vous voulez que l'utilisateur puisse choisir la langue à utiliser, placez toutes vos
chaînes dans une seule colonne et utilisez la fonction "LoadResString" suivi de l'ID de la
chaîne.
Cours 18 : Le contrôle Winsock
Pour utiliser Winsock correctement, il est très important de bien paramétrer les
propriétés de ce dernier, faute de quoi, votre application ne marchera pas. Notez que
certaines de ses propriétés ne sont accessibles que lors de l'écriture du code. Toutes les
propriétés du contrôle ne sont pas expliquées. Seules les plus importantes le sont :
LocalPort : Retourne le numéro du port local. Cette propriété est disponible et modifiable
aussi bien lors de la conception que lors de l'exécution de l'application. La valeur
retournée 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 méthode Connect pour vous connecter. Pour l'application
serveur, il vous faut connaître le port sur lequel l'application Client est connectée.
Faites ensuite appel à la méthode Listen pour chercher à savoir si l'application
Client cherche à se connecter au serveur. Si c'est le cas, l'événement
ConnectionRequest est activé et pour que la connexion entre l'application Client et
celle du serveur soit maintenue, faites appel à la méthode Accept.
Enfin, après que la connexion soit maintenue, faites appel aux méthodes SendData
et Getdata pour envoyer et recevoir des données.
Le mode UDP (User Datagram Protocol) est un protocole qui n'établit pas de
connexion. Ainsi, la relation de client/serveur disparaît. L'application peut donc
être aussi bien cliente que serveur. La distinction n'est plus faite avec ce mode.
Pour finir, faut que je vous montre l'utilisation des événements. Ces événements sont très
utiles pour le contrôle Winsock.
Close : Cet événement se déclenche quand l'ordinateur distant clôt la connexion.
Connect : Cet événement se déclenche quand l'ordinateur distant a réussi à établir la
connexion.
ConnectionRequest : Cet événement se déclenche quand le serveur reçoit une requête
provenant de l'application client.
DataArrival : Cet événement se déclenche quand l'application reçoit des données.
SendComplete : Cet événement se déclenche quand l'envoi des données est terminé.
SendProgress : Cet événement se déclenche quand les données sont en cours d'envoi.
Error : Cet événement se déclenche quand une erreur apparaît.
Il ne suffit pas de connaître les propriétés et méthodes du contrôle 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 déjà connecté"
End If
End Sub
Le code suivant est celui d'un exemple d'application serveur. Les données que l'on
cherche, sont stockées dans une base de données que l'on accède à l'aide du contrôle
"Data". Il y aussi une chose à rajouter dans la propriété du contrôle "Winsock". Dans sa
propriété "Index", mettez "0". Cela correspond au nombre de personnes connectées au
serveur mais aussi au nième contrôle Winsock(groupe contrôle). En effet, à chaque fois
que vous l'incrémentez, un "nouveau" contrôle Winsock est chargé à l'aide de la
méthode "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