Visual Basic :quelques trucs en vrac  


Si vous débutez en Visual Basic, vous trouverez, peut-être, l'aide en ligne un peu rébarbative, ou vous aurez du mal à formuler votre question. D'où ce petit aide mémoire.

Note : Police proportionnelle = courrier

Form
Feuille
TexBox
(Boite Texte)
Combo et List Box
listes simples & combinées
Variables Les Boucles CommandButton
Bouton de commande
Fichier Texte Fichier, accès direct Afficher une aide simple Help WorkShop Les tests Menus et menus contextuels
Objets basiques Presse papier Boites de dialogues standards MsgBox Option Bouton Barre d'outils & la barre d'état
Valeur des touches Tableaux Les imprimantes Contrôle de saisie SetFocus : bug
Base SQL Server Base Access ADO Data Control Modèle ADO (code) Constantes VB


Convention d'écriture des objets

Frm = Form (feuille)Menu = MnuPictureBox = PicBoite Texte = Txt (TextBox)Label = Lbl
Bouton de commande = CmdCadre = Fra (Frame)Bouton d'option = Opt Case à cocher = Chk (CheckBox)Bouton d'option = Opt
Liste Modifiable = Cbo (ComboBox)List simple = Lst (List Box)Ascenseur Horiz. = Hsb Ascenseur Vertical = VsbMinuterie = Tmr (Timer)
Liste unités fixes = Drv (DriveBox)Liste répertoires = Dir (DirListBox)Liste fichiers = Fil (FileListBox) Formes = Shp (Shapes)Lignes = Lin (Lines)
Dessin = Img (Image)Contrôle de données = Dat (Data)OLE = OleOnglet = OngDBlist = Dbg
Grille Base de Données = Dbg (DbDrid)Liste Modifiable Base de Données = Dbc (DbCombo)


Les Form ou feuilles

Les TextBox

Propriétés modifiables non (?) dans le code : Propriétés modifiables dans le code : Police porportionnelle = Courrier Standard (Font Dina ?)

Note : passer de minuscule à majuscule (Text1.Text = UCase(Text1.Text)) ou vise-versa (Text1.Text = UCase(Text1.Text))

Combo/List Box

ListBox

Il existe des objets similaire : DriveListBox, DirListBox, FileListBox

Evènements (le focus : l'objet est en court, sélectionné) :

_KeyPress
appuie d'1 touche
lorsque l'utilisateur enfonce (_KeyDown)
ou relâche (_KeyUp) une touche
tandis qu'un objet à le focus.
L'objet reçoit _GoFocus ou
pert (_LostFocus) le focus
_DropDown
la liste va se dérouler
_Change
_Validate(KeepFocus As Boolean)


.ItemChek Si liste en case à cocher (style=1)

Propriétés

.ListCount
nb éléments (0->n)
.List (x)
élt indexé x
.NewIndex
Index dernier ajouté
.index
N° sélectionné (pdt controle)
.Selected(index)
[= boolean]
.clear
Efface la liste
.AddItem
Ajoute 1 élément
.RemoveItem
Supprime 1'élément


Note :
on peut tester si .ListIndex <> -1 pour savoir s'il y a un élément sélectionné (au lieu de .selected(index)). De même on peut mettre .ListIndex = -1 au lieu .selected(index) = False . Cela, bien sûr n'est pas tout à fait valable en cas de multi-sélection.

.ItemData (long) = associe un tableau de nombres au tableau list (espèce de fichier index). Ex:
Lst.AddItem "Lucie Gombaud"					' prénom & nom
Lst.ItemData(Lst.NewIndex) = 42310				' matricule
Remarque :

ComboBox

Même propriétés et évènements que les ListBox, plus quelques uns spécifique :

Style => DropDown List


Valeur des touches clavier

vbKeyBack = Touche RET.ARR (8)vbKeyReturn = Touche ENTRÉE (13)


Les valeurs entre parenthèses sont en Hexa. Pour plus de détail sur d'autres touches voir ici ou dans l'aide VB "Constantes de code de touches".


Les Tableaux

ex : Dim Tbl(100) As Integer

Redim

Déclarer le tableau sans taille Dim Tbl() As Integer, faire un redim de l'estimé Redim Tbl(100),
puis un redim après comptage Redim Tbl(x)

Dim Rep As string * 1

Les Variables

Byte 1 octet 0 à 255
Boolean 2 octets True ou False
Integer 2 octets -32 768 à 32 767
Long
(entier long)
4 octets -2 147 483 648 à 2 147 483 647
Single
(virgule flottante,
simple précision)
4 octets -3,402823E38 à -1,401298E-45 pour les valeurs négatives ;
1,401298E-45 à 3,402823E38 pour les valeurs positives
Double
(à virgule flottante
en double précision)
8 octets -1,79769313486232E308 à -4,94065645841247E-324 pour les valeurs négatives ;
4,94065645841247E-324 à 1,79769313486232E308 pour les valeurs positives
Currency
(entier à décalage)
8 octets -922 337 203 685 477,5808 à 922 337 203 685 477,5807 Decimal
14 octets +/-79 228 162 514 264 337 593 543 950 335 sans séparateur décimal
Date 8 octets 1er janvier 100 au 31 décembre 9999
Object 4 octets Toute référence à des données de type Object
Variant (nombres) 16 octets Toute valeur numérique, avec la même plage de valeurs qu'une donnée de type Double
Variant (caractères) 22 octets + longueur de la chaîne Même plage de valeurs qu'une donnée de type String de longueur variable
App.Path = chemin de l'appli (exe)

Les Constantes

Constante Équivalent Description
vbCrLf Chr(13) + Chr(10) Combinaison des caractères de retour chariot et de saut de ligne
vbCr Chr(13) Caractère de saut de paragraphe
vbLf Chr(10) Caractère de saut de ligne
vbNewLine Chr(13) + Chr(10) Caractère de saut de ligne spécifique à la plate-forme ;choix en fonction de la plate-forme
vbNullChar Chr(0) Caractère ayant la valeur 0
vbNullString Chaîne ayant la valeur 0 Différent d'une chaîne de longueur nulle ("") ; permet l'appel de procédures externes
vbObjectError -2147221504 Les numéros d'erreur définis par l'utilisateur doivent être supérieurs à cette valeur.
Par exemple : Err.Raise Number = vbObjectError + 1000
vbTab Chr(9) Caractère de tabulation
vbBack Chr(8) Caractère de retour arrière
vbFormFeed Chr(12) Inutilisé sous Microsoft Windows
vbVerticalTab Chr(11) Inutilisé sous Microsoft Windows

Option Explicit

Cette ligne en début de programme vous obligera à déclarer vos variables avant de les utiliser.

Vous pouvez généraliser cela pour tous vos programmes automatiquement :
Outils/Options/Editeur cocher "Déclaration des variables obligatoire" (dans Paramètres du code)

Opération sur les zones alphabétiques

Right(zone,x)prend les x caractères à partir de la droite
Left(zone,x)prend les x caractères à partir de la gauche
Mid(zone,x,y)prend y caractères à partir de x (si pas y, prend tout après x)
attention x commence à 1
Str(zone_numérique)Transforme une zone numérique en alpha
Val(zone_numérique)Transforme une zone alpha en numérique
Chr(13) + Chr(10)Génère un saut de ligne
(pour test utiliser plutôt Chr(13) & Chr(10) )
UCase(ZoneAlpha)
LCase(ZoneAlpha)
Converti en majuscule ou minuscule
Un petit truc pour formater une ligne : Right(" " + Str(zone_de_3_chiffres), 3)
A quoi çà sert, ben, pour sauvegarder/charger des nombres à partir d'un fichier texte.

Toujours pas compris ? Vous voulez gérer le nombre de billes des élèves d'une classe sans passer par un base de donnée. Donc vous avez : Paul 10 billes, Jacques 5....
Mais, vous ne pouvez pas sauvegarder additionner du texte ni avoir un texte+zone numérique dans le fichier.
Donc vous faites un fichier texte du style 25 caractères pour le prénom + 3 caractères pour le nombre de billes. Puis en jouant avec les Val et Str, les Mid, vous avez tout.

Les conversions

Fonction Type renvoyé Plage de valeurs de l'argument expression
CBool Boolean Toute chaîne ou expression numérique valide.
CByte Byte 0 à 255.
CCur Currency-922 337 203 685 477,5808 à 922 337 203 685 477,5807.
CDate Date Toute expression de date valide.
CDbl Double -1,79769313486232E308 à -4,94065645841247E-324 ou
4,94065645841247E-324 à 1,79769313486232E308
CDec Decimal +/-79 228 162 514 264 337 593 543 950 335 sans décimales ou,
+/-7,9228162514264337593543950335 à 28 décimales.
Le + petit nombre <> 0 est 0,0000000000000000000000000001.
CInt Integer -32 768 à 32 767 ; les fractions sont arrondies.
CLng Long -2 147 483 648 à 2 147 483 647 ; les fractions sont arrondies.
CSng Single -3,402823E38 à -1,401298E-45 ou,
1,401298E-45 à 3,402823E38
CStr String Les valeurs renvoyées par la fonction Cstr dépendent de l'argument expression
CVar Variant Même plage de valeurs que le type Double pour les nombres et que le type String pour les chaînes non numériques.


Contrôle de saisie

Il existe un composant qui peut créer des masque de saisie (Miscrosoft Masked Edit Control). Il fonction un peu comme une TextBox avec des propriétés supplémentaires (Format, Mask, MaxLength, PromptChar...)

MsgBox

MsgBox(prompt[, buttons] [, title] [, helpfile, context])

Dim rep
rep = MsgBox("Fin d'application", vbOKOnly + vbExclamation)
rep = MsgBox("Fin d'application", 48) idem ci-dessus

prompt Expression de chaîne affichée comme message dans la boîte de dialogue. La longueur maximale de l'argument prompt est d'environ 1 024 caractères selon la largeur des caractères utilisés. Si l'argument prompt occupe plus d'une ligne, n'oubliez pas d'insérer un retour chariot (Chr(13)) ou un saut de ligne (Chr(10)) entre les lignes, ou une combinaison de caractères retour chariot-saut de ligne (Chr(13) & Chr(10)).

buttons Facultatif.Expression numérique qui représente la somme des valeurs indiquant le nombre et le type de boutons à afficher, le style d'icône à utiliser, l'identité du bouton par défaut, ainsi que la modalité du message. Si l'argument buttons est omis, sa valeur par défaut est 0.

title Facultatif. Expression de chaîne affichée dans la barre de titre de la boîte de dialogue. Si l'argument title est omis, le nom de l'application est placé dans la barre de titre.
Valeurs buttons
Constant Value Description
vbOKOnly 0 Affiche le bouton OK uniquement.
vbOKCancel 1 Affiche les boutons OK et Annuler.
vbAbortRetryIgnore 2 Affiche le bouton Abandonner, Réessayer et Ignorer.
vbYesNoCancel 3 Affiche les boutons Oui, Non et Annuler.
vbYesNo 4 Affiche les boutons Oui et Non.
vbRetryCancel 5 Affiche les boutons Réessayer et Annuler.
vbCritical 16 Affiche l'icône Message critique.
vbQuestion 32 Affiche l'icône Requête d'avertissement.
vbExclamation 48 Affiche l'icône Message d'avertissement.
vbInformation 64 Affiche l'icône Message d'information.
vbDefaultButton1 0 Le premier bouton est le bouton par défaut.
vbDefaultButton2 256 Le deuxième bouton est le bouton par défaut.
vbDefaultButton3 512 Le troisième bouton est le bouton par défaut.
vbDefaultButton4 768 Le quatrième bouton est le bouton par défaut.
Valeurs renvoyées
Constante Valeur Description
vbOK 1 OK
vbCancel 2 Annuler
vbAbort 3 Abandonner
vbRetry 4 Réessayer
vbIgnore 5 Ignorer
vbYes 6 Oui
vbNo 7 Non


Fichier Texte

Lecture d'un fichier texte

Texte entier mis dans la variable Texte :
Dim CheminFichier, Texte As String
Dim a As Long
CheminFichier = "c:\Autoexec.bat"
a = FreeFile() ' pour obtenir le No de fichier disponible
Open CheminFichier For Input As #a
Texte = Input(LOF(a), a)
Close #a
Lecture ligne par ligne et mis dans le tableau iteme() :
 
Dim lg As String       ' fichier à ouvrir
Dim x As Integer       ' compteur
Dim iteme() As String  ' tableau

x = 1
lg = ""
Open "h:\mes documents\item\ListInvent.txt" For Input As #1
Line Input #1, lg
Do While Not EOF(1)
  Line Input #1, lg
  x = x + 1
Loop
Close #1
Redim iteme(x)		' on pourrait mettre (x-1) mais en cas de fichier vide ?
A la place du nom du fichier avec son chemin, on peut mettre une variable.
La procédure ci-dessus compte et dimensionne un tableau (dans le but de le remplir). Cela évite d'allouer trop de mémoire à un tableau (ou pas assez ) si on n'en connaît pas trop le nb d'éléments .

Fichier à accès direct

Mettre dans un module (au début, après option explicit)
Type EnrItem
  Num As String * 5
  Lib As String * 40
End Type
Puis dans la feuille
Dim Item As EnrItem
Open "ItemFich.txt" For Random Access Write As #1
Put #1, num_enr, Item			' écrit
..
Get #1, [num_enr], Item		' Se positionne et lit
..
Seek #1 num_enr			' Se positionne


Pour les fichiers binaires :
Open "ItemFich.txt" For Binary Access Write As #1
Get #1, [No_octet], variable
ou
Seek #1, No_enr
x = Input$(1,8)
...
Put #1, No_enr, variable

Les Boucles

Do
...
[Exit Do]
...
Loop
Do While condition
...
[Exit Do]
...
Loop
Do Until condition
...
[Exit Do]
...
Loop
Do
...
[Exit Do]
...
Loop Until
condition
While condition
...
Wend




CommandButton

Vous pouvez remplacer le texte par une image :

Option Bouton

Sur une feuille, les boutons d'option constituent un seul groupe. Pour créer des groupes de boutons d'option, vous devez les placer dans des contrôles Frame ou PictureBox. Ainsi, ils peuvent être sélectionnés et déplacés comme une seule unité (maintenez enfoncée la touche CTRL pendant que vous dessinez un cadre autour).

Exemple :
Private Sub NomProcedure_Click(Index As Integer)
Select Case Index
  Case Is = 1
    ...
  Case Is = 2
    ...
End Select

Création de touches de raccourci. Vous pouvez utiliser la propriété Caption pour créer des touches d'accès rapide pour vos boutons d'option en ajoutant le signe & devant la lettre que vous souhaitez utiliser comme touche d'accès rapide.
Ex : If Option1(0).Value = True Then Label5.Caption = "+"

Afficher une aide simple

Vous pouvez créer une autre feuille et y créer des boîtes Label et un bouton (CommandButton) pour sortir.

Mais si vous avez plusieurs lignes de commentaires, cela est un peu tristounet.

Vous avez la possibilité de créer un fichier .RTF avec les avantages qu'il procure (police, couleurs ...)
Créer un fichier .HLP (voir Help WorkShop) puis, au début de votre feuille sous Option Explicit créez la ligne suivante :

Private Declare Function WinHelp% Lib "user32" Alias "WinHelpA" _
 (ByVal hwnd&, ByVal HelpFile$, ByVal wCommand%, dwData As Any)
Et dans le Sub concerné ce qui suit :
Dim nRet
If Len(App.HelpFile) = 0 Then
  MsgBox "Impossible d'affichiez le sommaire de l'aide. Il n 'y a pas d'aide associée à ce projet.", _
    vbInformation, Me.Caption
Else
  On Error Resume Next
  nRet = WinHelp(Me.hwnd, App.HelpFile, 3, 0)
  If Err Then
    MsgBox Err.Description
  End If
End If
Dans l'Explorateur de projets (Menu/Affichage/Explorateur de projets, s'il n'est pas affiché), clic droit le le projet en court, Propriété, mettez le chemin+nom de votre fichier .HLP.

Ne me demandez pas plus d'explications, je n'ai pas très bien compris, mais çà marche.


Les tests


If ... Then ...

If ... Then
  ...
  ElseIf ... Then
Else
  ...
End If

Select Case Nombre   ' Évalue Nombre.
  Case 1 To 5
    MsgBox "Le nombre est compris entre 1 et 5 inclus"
  Case 6, 7, 8
    MsgBox "Le nombre est compris entre 6 et 8 inclus"
  Case 9 To 10
    MsgBox " Le nombre est 9 ou 10."
  Case Else
    MsgBox "Non compris entre 1 et 10"
End Select
  Select Case Button.Key
    Case "Sauve"
            
    Case "Couper"
    Case "Coller"
    Case "Ncr"

  End Select

Les Contrôles de base de la boite à outils

  Nom du contrôle Description
PictureBox C'est un conteneur d' autres objets. Vous pouvez insérer une image ou par exemple un groupe d' objets en une seule opération
Label On utilise ce contrôle pour placer du texte comme affichage simple ou comme étiquette.(L' utilisateur ne peut pas modifier le texte saisi dans ce contrôle)
TextBox C' est le seul objet qui vous permet de saisir du texte, des nombres ou des dates. 
Frame Ce contrôle sert à enjoliver votre présentation. Un autre contrôle remplit le même rôle mais n' est pas livré en standard, c 'est le contrôle Sheridan 3D Controls qui est généré par le fichier Threed32.ocx.(A posséder impérativement)
CommandButton C'est un bouton poussoir qui enclenchera une action par l' intermédiaire d' une procédure événementielle.
CheckBox C'est une case à cocher
OptionButton C'est un bouton radio(Option)
ComboBox Il s' agit d' une liste modifiable qui permet de choisir un seul élément dans une liste mais aussi de taper une valeur qui n' est pas affichée
ListBox C'est une liste dans laquelle vous pouvez choisir un ou plusieurs éléments, sans pouvoir saisir de nouvelle valeur.
HScrollBar C'est un ascenseur horizontal
VScrollBar C'est un ascenseur vertical
Timer C'est une minuterie, genre chronomètre qui vous permet d' enclencher une action toutes les n millisecondes
DriveListBox Ce contrôle permet d' afficher la liste de tous les lecteurs disponibles sur
l' ordinateur
DirListBox Ce contrôle permet d' afficher la liste de tous les répertoires d' un lecteur sélectionné
FileListBox Ce contrôle permet d' afficher la liste de tous les fichiers d' un répertoire sélectionné
Shape Permet de dessiner des formes, rectangles, cercles
Line Permet de dessiner des lignes
Image Sert à insérer des images, nous le préférerons à l' objet PictureBox
Data Ce contrôle permet de programmer l' accès aux bases de données
OLE Il permet de placer des applications OLE(Object Link and Embedding)

Les boites de dialogues communes

Les boites de dialogues communes Il existe 5 boîtes de dialogue communes en Visual Basic : Pour cela il faut d'abord ajouter le contrôle CommonDialog dans votre boîte à outils (clic droit sur boite à outil, composants, cochez la case du contrôle Microsoft Common Dialog Control 6.0 (SP3) puis Appliquer).

1. La boîte de dialogue Ouvrir

Cet la boîte de dialogue "Ouvrir" standard de Windows. On fait appel à la méthode ShowOpen. Cependant, il est aussi nécessaire de renseigner plusieurs propriétés de la boîte de dialogue :

Propriété Utilisation
CancelError Initialisée à True, elle renvoie le code d'erreur 32755 (CDERR_CANCEL) lorsque le bouton Annuler a été pressé.
DefaultExt définit l'extension par défaut du nom du fichier à ouvrir.
DialogTitledéfinit le titre de la boîte de dialogue situé sur la barre de titre.
FileName définit le chemin d'accès et le nom du fichier sélectionné par défaut.
Filterdé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 (*.DLL)|*.DLL|Exécutables (*.EXE)|*.EXE|Tous (*.*)|*.*| ", vous pouvez choisir de n'ouvrir que les fichiers DLL ou Exécutables ou bien d'ouvrir tous les fichiers.
FilterIndexspécifie le filtre à utiliser par défaut dans la boîte de dialogue. Reprenons l'instruction précédente : avec l'instruction suivante "CMD.FilterIndex = 2", le filtre utilisé par défaut sera donc Exécutables (*.EXE)|*.EXE|.
Flagsdéfinit les options de la boîte de dialogue. La syntaxe de l'instruction est : "Objet.Flags = valeur" où "valeur" peut valoir "&H1&", "&H2&", "&H3&" ou bien "&H2& + &H1&".
InitDirdéfinit le répertoire des fichiers affichés à l'ouverture de la boîte de dialogue.

2. La boîte de dialogue Sauvegarder sous.

La boîte de dialogue "Enregistrer sous" permet de sauvegarder un fichier ouvert. Pour l'afficher, on fait appel à la méthode ShowSave. Pour ce qui est des propriétés à modifier, reportez-vous à ceux de la boîte de dialogue "Ouvrir".

3. La boîte de dialogue Couleur.

Cette boîte de dialogue "Couleur" standard permet une couleur parmi d'autres. Pour l'afficher, on fait appel à la méthode ShowColor. Vous devrez renseigner les propriétés du contrôle suivantes.

Propriété Utilisation
CancelError Initialisée à True, elle renvoie le code d'erreur 32755 (CDERR_CANCEL) lorsque le bouton Annuler a été pressé.
Flags Elle définit les options de la boîte de dialogue. La syntaxe de l'instruction est : "Objet.Flags = valeur" où "valeur" peut valoir "&H1&", "&H2&", "&H3&" ou bien "&H2& + &H1&".
ColorElle sélectionne une couleur par défaut. La syntaxe de l'instruction est: "Objet.Color = QBColor(valeur)".

4. La boîte de dialogue Police de caractères

Boîte de dialogue "Police de caractères" standard, permet de sélectionner une police et ses attributs. Pour l'afficher, on fait appel à la méthode ShowFont. Ensuite, renseignez les propriétés suivantes: .
Propriété Utilisation
CancelError Initialisée à True, elle renvoie le code d'erreur 32755 (CDERR_CANCEL) lorsque le bouton Annuler a été pressé
Flags Options de la boîte de dialogue. La syntaxe de l'instruction est : "Objet.Flags = valeur" où "valeur" peut valoir "&H1&", "&H2&", "&H3&" ou bien "&H2& + &H1&".
FontBold style Gras par défaut.
FontItalic style Italique par défaut.
FontName police par défaut.
FontSize taille par défaut.
FontStrikethru style Barré par défaut.
FontUnderline style Souligné par défaut.
Max taille maximale des polices affichés.
Min taille minimale des polices affichés.

2. La boîte de dialogue Imprimer

La boîte de dialogue "Imprimer" sert à définir les paramètres de l'impression. Pour l'afficher, on fait appel à la méthode ShowPrinter. Ensuite, renseignez les propriétés suivantes:

Propriété Utilisation
CancelError Initialisée à True, elle renvoie le code d'erreur 32755 (CDERR_CANCEL) lorsque le bouton Annuler a été pressé.
Copies Nombre d'exemplaires à imprimer.
FlagsOptions de la boîte de dialogue. La syntaxe de l'instruction est : "Objet.Flags = valeur" où "valeur" peut valoir "&H1&", "&H2&", "&H3&" ou bien "&H2& + &H1&".
FromPageNuméro de la première page à imprimer.
PrinterDefaultIndiquer si les paramètres entrés doivent devenir les nouveaux paramètres par défaut.
ToPageNuméro de la dernière page à imprimer.

Menus et menus contextuels

Un menu peut inclure des commandes, des titres de sous-menus (jusqu'à quatre niveaux)et des barres de séparation. Il doit être associé à une feuille (Form)

Sélectionnez une feuille dans la fenêtre projet, puis son objet . Maintenant vous pouvez accéder à la création de menu (Outils/Créateur de menus) ou par l'icône (3ème à partir de la droite).

Caption : Nom qui apparaîtra à l'utilisateur. Le trait d'union (-) crée une barre séparatrice, & pour la touche Alt.

Name : nom identificateur pour le programme. Il n'apparaît pas à l'utilisateur.

Index : pour affecter une valeur numérique qui détermine la position du contrôle à l'intérieur d'un groupe de contrôles. Cette position n'a aucun rapport avec la position à l'écran.

ShortCut : raccourci clavier pour chaque commande.

HelpContextID : Vous permet d'affecter une valeur numérique unique pour l'identificateur de contexte. Cette valeur est utilisée pour trouver la rubrique appropriée dans le fichier d'aide identifié par la propriété HelpFile.

NegotiatePosition : Vous permet de sélectionner la propriété NegotiatePosition du menu. Cette propriété détermine si le menu apparaît dans une feuille conteneur, et, si oui, à quel emplacement.

Checked : Vous permet d'ajouter une coche à la gauche d'un élément de menu. Celle-ci est généralement utilisée pour signaler si une option à bascule est validée ou non.

Enabled : Vous permet de décider si l'élément de menu doit répondre à des événements, ou doit être grisé si vous voulez qu'il soit indisponible.

Visible : Vous permet de rendre l'élément visible dans le menu.

WindowList : Détermine si le contrôle Menu contient une liste des feuilles MDI fille ouvertes dans une application MDI (càd afficher les derniers fichiers ouverts par l'application concernée).

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 :
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
Interprétation : Lorsque le bouton droit de la souris a été cliqué, le menu contextuel X apparaît.
Vous pouvez remplacer la valeur de la variable "Button" si vous voulez que le menu contextuel apparaisse à une autre action de l'utilisateur : Enfin, revenez dans la boîte de dialogue "créateur de menu" et décochez la case "Visible" du menu que vous désirez rendre contextuel. Ne le faites pas avant car si vous le faites, vous ne pourrez pas définir une action pour chaque commande du menu contextuel.
Private Sub RText1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
    If Button = vbRightButton Then
        PopupMenu mnuEdit
    End If
End Sub

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 : 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 et surtout il peut supporter des fichiers Txt > 60Ko.

Méthodes utilisées pour définir le presse-papier :

La barre d'outils et la barre d'état

Il faut que soit présent le contrôle Microsoft Windows Common Controls 6.0.

1. La barre d'outils

Créez en une, elle se placera automatiquement sur le haut de votre feuille.
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.)

Clic droit sur le contrôle ImageList sur la feuille, puis Propriétés/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" ( celles fournies avec Visual Basic sont situés dans 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".

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

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.

Les imprimantes

For I = 0 To Printers.Count - 1
    Txt.Text = Txt.Text & "------ Imprimante " & (I + 1) & " ------" & vbNewLine
    Txt.Text = Txt.Text & "Device Name =" & Printers(I).DeviceName & vbNewLine
    Txt.Text = Txt.Text & "Driver Name =" & Printers(I).DriverName & vbNewLine
    Txt.Text = Txt.Text & "Port =" & Printers(I).Port & vbNewLine
Next
Set Printer = Printer (0)

Appel de base sous SQL Server


Fig.1

Fig.2
  • Si dans la boite à outils l'objet Data (Data Environnement) n'existe pas : clic droit sur la boite à outils, composant, onglet concepteurs, cocher Data Environnement.
  • Puis clic droit sur le nom du projet, ajouter, Data Environnement (fig.1)
  • Double clic sur Data Environnement
  • dans la grande fenêtre clic droit sur connection1, propriétés (fig.2) :
    • Onglet Fournisseur choisir Microsoft OLE DB Provider For SQL Server (pour SQL sever 2000)
    • Onglet connection
      • choisir sa connection (ex M102) dans la liste déroulante
      • sélectionner Utiliser la sécurité intégrée de Windows NT (option Bouton)
      • sélectionner sélectionner la base de donnée sur le serveur (option Bouton)
      • Choisir la base sur laquelle vous voulez travailler dans la liste déroulante
      • Cliquer sur le bouton tester la connection pour vérifier
      • Cliquer sur le bouton "OK"
Dans la fenêtre principale (celle du data environnement, si besoin aller dans le menu principal, fenêtre) :
  • clic droit sur la connection et choisir ajouter une commande.
  • clic droit sur ce dernier, puis propriété là, vous pouvez
    • soit choisir directement l'Objet de base de donnée (table par ex.) et le nom de l'objet dans listes déroulantes (fig.4)
    • soit choisir instructions SQL, cliquez sur le bouton Générateur SQL pour créer votre propre vue.
Votre table est prête à l'emploie. Il vous ne reste plus qu'à transporter les champs sur la feuille (form) VB.
  • Mettez côte à côte les fenêtres Form et DataEnvironnement
  • Faites un cliquer-glisser de la commande (ou du détail, +) de la feuille DataEnvironnement à la Form.


Note : pour vous aider, dans le menu, affichage, sélectionner "Fenêtre Données". Dans cette dernière dérouler la connection (+) pour avoir accès aux tables.

Appel d'une base Access

  • Si dans la boite à outils l'objet Data (Data Environnement) n'existe pas : clic droit sur la boite à outils, composant, onglet concepteurs, cocher Data Environnement.
  • Puis clic droit sur le nom du projet, ajouter, Data Environnement (idem SQL fig.1)
  • Double clic sur Data Environnement
  • dans la grande fenêtre clic droit sur connection1, propriétés :
    • Onglet Fournisseur choisir Microsoft OLE DB Provider for ODBC Drivers
    • Onglet connection
      • choisir utiliser la chaîne de connection
      • Cliquer sur le bouton
      • Onglet Source de données machine : Choisir MS Access Database
      • Sous la nouvelle fenêtre cliquer sur Base de donnée, et choisir sa base Access, valider
      • Cliquer sur le bouton tester la connection pour vérifier
      • Cliquer sur le bouton "OK"
Dans la fenêtre principale (celle du data environnement, si besoin aller dans le menu principal, fenêtre) :

ADO Data Control : l'objet

Dans la boîte à outils choisir le composant Microsoft ADO Data control (différent suivant version ex : 6.0 SP4). Cliquer sur l'objet et placez-le sur votre feuille Form.

Clic droit sur cet objet, propriété : Pour afficher les champs, créez une TexBox, puis dans ses propriétés :

ADO Data Control : l'objet

Provider : Ex :
Dim Cnx As ADODB.Connection
Set Cnx = New Connection
With Cnx
  .Provider = "SQLOLEDB"
  .ConnectionString = "User ID=toto;Data Source = SQL_SCR_1;Initial Catalog=Mabase"
  .open
End With
Dim Cmd As ADODB.Command
Set Cmd = New Command
With Cmd
  .ActiveConnection = Cnx
  .CommandText = "Update Vente SET px = px * 0.1"
  .Execute		
End Wit
ou
Dim Rs As New Recordset
...
Private Sub Form_Load()
  Rs.Open "SELECT * FROM " & nom_table, ma_connexion, adOpenDynamic, adLockOptimistic
ou bien sans définir de connection
Dim Cmd As ADODB.Command
Set Cmd = New Command
With Cmd
  .ActiveConnection = "Provider = "SQLOLEDB;User ID=toto;Data Source = SQL_SCR_1;Initial Catalog=Mabase"
  ...
End With

SetFocus : bug

On ne peut pas modifier le focus d'une zone dans la form.load, utilisez Tableindex = 0

Appel prog. ext. : Shell


Help WorkShop