
| auteur : Romain Puyfoulhoux |
Un module standard contient un ensemble de fonctions et de procédures, plus toutes les déclarations qui leur sont nécessaires.
Parmi ces déclarations, fonctions, et procédures, certaines peuvent être de portée privée, c'est-à-dire que l'on ne peut pas y
accéder à partir d'un autre module. Sera donc de portée privée tout ce qui n'est utilisé que dans le module standard lui-même.
Un module de classe vous permettra de créer une classe. Une classe décrit un objet particulier : quelles sont ses
caractéristiques (appelées propriétés) et ce qu'il peut faire (quelles sont ses méthodes). Par exemple, chaque form
de votre projet correspond à une classe. Ses propriétés sont Caption, BorderStyle, etc...
et ses méthodes Show, Hide, etc... Dans une classe, une méthode s'écrit sous la forme d'une fonction de portée
publique. Voyons comment s'écrit une propriété, par exemple la propriété Marque de la classe Voiture :
Private m_Marque As String
Property Get Marque () As String
Marque = m_Marque
End Property
Property Let Marque (value As String )
m_Marque = value
End Property
|
Et pour finir, un exemple d'utilisation de la classe Voiture : Dim UneVoiture As Voiture
Set UneVoiture = New Voiture
UneVoiture. Marque = " Renault "
MsgBox UneVoiture. Marque
Set UneVoiture = Nothing
|
|
lien : FAQ VB
|
| auteur : Team Access | Les arguments d'une fonction ou d'une procédure peuvent être passés de deux façons différentes : par valeur ou par référence.
Si un argument est précédé de Byval, il est passé par valeur, et s'il est précédé de ByRef, ou de ni l'un ni l'autre, il est passé par référence.
Passage par valeur (ByVal) Consiste à passer la valeur de l'argument à la procédure, et non son adresse.
La procédure utilise alors une copie de la variable. La valeur de la variable ne peut pas être modifiée par la procédure.
Passage par référence (ByRef) Ici c'est l'adresse de la variable qui est passée à la procédure. La variable peut donc être modifiée par la procédure. Private Sub Echange (ByVal a As Integer, ByVal b As Integer)
Dim temp As Integer
temp = a
a = b
b = temp
End Sub
Private Sub Echange2 (a As Integer, b As Integer)
Dim temp As Integer
temp = a
a = b
b = temp
End Sub
Private Sub Test ()
x = 5
y = 3
Echange x, y
MsgBox x & " " & y
Echange2 x, y
MsgBox x & " " & y
End Sub
|
|
lien : FAQ VB
|
| auteur : Romain Puyfoulhoux | Un paramètre est optionnel s'il est précédé du mot clé Optional. Les paramètres placés après doivent être également
optionnels. Vous pouvez également spécifier une valeur par défaut : Private Sub Affiche (Optional x As Long= 10 )
End Sub
|
Pour les paramètres de type Variant et sans valeur par défaut, vous avez le moyen de savoir si une valeur a été
spécifiée lors de l'appel en utilisant IsMissing : Private Sub Affiche (Optional x As Variant)
If IsMissing (x) Then
Else
End If
End Sub
|
|
lien : FAQ VB
|
| auteur : Romain Puyfoulhoux | L'exemple suivant affiche les éléments d'un tableau : Private Sub AfficheElements (t () As Long)
Dim i As Long
For i = LBound (t) To UBound (t)
MsgBox t (i)
Next
End Sub
Private Sub Form_Load ()
Dim t (1 To 3 ) As Long
t (1 ) = 1
t (2 ) = 4
t (3 ) = 5
AfficheElements t ()
End Sub
|
|
lien : FAQ VB
|
| auteur : Romain Puyfoulhoux | La fonction UBound() renvoie l'indice maximum autorisé pour un tableau donné. Si le tableau est vide, elle crée une
erreur. La fonction suivante utilise ce principe. Elle renvoie vrai si le tableau passé en paramètre contient au moins un élément. Public Function ContientElements (ByVal tableau As Variant) As Boolean
Dim indice As Long
On Error goto vide
indice = UBound (tableau)
ContientElements = True
Exit Function
vide :
End Function
|
|
lien : FAQ VB
|
| auteur : Romain Puyfoulhoux | La fonction suivante renvoie un booléen : Vrai si le nombre reçu en paramètre est pair, et faux sinon. Private Function EstPaire (x As Long) As Boolean
EstPaire = (x Mod 2 = 0 )
End Function
|
|
lien : FAQ VB
|
| auteur : Jean-Marc Rabilloud | Dans l'exemple ci-dessous, la fonction RGBparTableau() renvoie les composantes rouge, verte, bleue du code couleur passé en paramètre. Les composantes sont renvoyées sous la forme d'un tableau. Public Function RGBparTableau (ByVal couleur As Long) As Long ()
Dim MonTab (0 To 2 ) As Long
MonTab (2 ) = Int (couleur / 65536 )
MonTab (1 ) = Int ((couleur - (65536 * MonTab (2 ))) / 256 )
MonTab (0 ) = couleur - ((MonTab (2 ) * 65536 ) + (MonTab (1 ) * 256 ))
RGBparTableau = MonTab
End Function
Private Sub Command1_Click ()
Dim TabCouleur () As Long, couleur As Long
couleur = 9550940
TabCouleur () = RGBparTableau (couleur)
MsgBox " Le code " & couleur & " correspond en RGB à " & _
TabCouleur (0 ) & " " & TabCouleur (1 ) & " " & TabCouleur (2 )
End Sub
|
|
lien : FAQ VB
|
| auteurs : Jean-Marc Rabilloud, Romain Puyfoulhoux | Une fonction peut renvoyer une variable de type utilisateur comme n'importe quel autre type simple.
Cependant vous ne pouvez pas déclarer dans un module de classe, y compris dans le module d'une form, une fonction de
portée publique renvoyant un type utilisateur. Dans un module standard, si vous déclarez un type utilisateur et
une fonction de portée publique qui renvoie ce type, le type doit être aussi déclaré avec une portée publique.
Dans l'exemple ci-dessous, la fonction RGBparType() renvoie les composantes rouge, verte, bleue du
code couleur passé en paramètre. Les composantes sont les champs du type CompCouleur. Private Type CompCouleur
Red As Long
Green As Long
Blue As Long
End Type
Private Function RGBparType (ByVal Couleur As Long) As CompCouleur
RGBparType. Blue = Int (Couleur / 65536 )
RGBparType. Green = Int ((Couleur - (65536 * RGBparType. Blue )) / 256 )
RGBparType. Red = Couleur - ((RGBparType. Blue * 65536 ) + (RGBparType. Green * 256 ))
End Function
Private Sub Command1_Click ()
Dim TypColor As CompCouleur
TypColor = RGBparType (9550940 )
lblred. Caption = " Red = " & TypColor. Red
lblgreen. Caption = " Green = " & TypColor. Green
lblblue. Caption = " Blue = " & TypColor. Blue
End Sub
|
|
lien : FAQ VB
|
| auteur : Alexandre Lokchine | Contrairement à d'autres langages, la constante Pi n'existe pas en VB. La meilleure façon de l'obtenir rapidement est d'utiliser le code suivant : Dim Pi as Double
Pi= 4 * Atn (1 )
|
|
lien : FAQ VB
|
| auteur : Romain Puyfoulhoux | Avec la fonction CallByName. Private Sub Form_Load ()
Msgbox CallByName (Me, " Caption " , VbGet)
CallByName Me, " Caption " , VbLet, " Test de callbyname "
End Sub
|
|
lien : FAQ VB
|
| auteur : Romain Puyfoulhoux | Avec la fonction CallByName. Private Sub Form_Load ()
CallByName Me, " Move " , VbMethod, " 5000,150 "
End Sub
|
FRED.G : Attention, l'exemple utilise la méthode Move qui n'est valable qu'à partir d'Access 2002.
|
lien : FAQ VB
|
| auteur : Romain Puyfoulhoux | La librairie Microsoft VBScript Regular Expressions permet d'utiliser des expressions régulières dans Visual Basic.
Il faut l'ajouter dans les références du projet.
Le principe consiste à créer un objet RegExp, à le paramétrer en modifiant ses propriétés, puis à lancer la recherche
en appelant la méthode Execute(). Vous devez passer en paramètre la chaîne de caractères dans laquelle vous souhaitez faire
une recherche. La méthode Execute vous renvoie les occurrences dans une collection. Si vous avez donné la valeur True à la
propriété Global de l'objet RegExp, cette collection contiendra toutes les occurrences, sinon seulement la première.
Voici comment vérifier la validité d'une adresse email. Ce code a été écrit avec la version 5.5 de la librairie. Public Function EmailValide (ByVal email As String ) As Boolean
Dim regEx As RegExp, occurrences As MatchCollection
Set regEx = New RegExp
regEx. Pattern = " ^[a-z0-9_.-]+@[a-z0-9.-]{2,}\.[a-z]{2,3}$ "
regEx. IgnoreCase = True
regEx. Global = False
Set occurrences = regEx. Execute (email)
EmailValide = (occurrences. Count = 1 )
End Function
|
Vous pouvez également jeter un oeil à la première partie du tutoriel de Louis-Guillaume MORAND.
|
lien : FAQ VB
|
| auteur : FRED.G | Il est impossible de déclencher des événements par le code (sauf les événements définis par l'utilisateur). Cependant il est possible d'exécuter les procédures événementielles correspondantes en les appelant comme n'importe quelle méthode de formulaire.
Remarque : les procédures doivent être déclarées en Public Sub.
|
lien : Comment exécuter une procédure (sub) d'un autre formulaire ?
|
| auteur : Lucifer |
L'opérateur ! indique que l'élément qui suit est défini par l'utilisateur (un élément d'une collection). Par exemple, vous pouvez utiliser l'opérateur ! pour faire référence à un formulaire ouvert, à un état ouvert, ou à un contrôle figurant sur un formulaire ou sur un état.
L'opérateur . (point) indique généralement que l'élément qui suit est défini par MS-Access. Par exemple, vous pouvez utiliser l'opérateur . (point) pour faire référence à une propriété d'un formulaire, d'un état, ou d'un contrôle.
|
| auteur : FRED.G | Deux solutions s'ouvrent à vous :
--> fermer la base en laissant Access ouvert : Application. CloseCurrentDatabase
|
--> fermer la base et Access |
| auteur : FRED.G | Utiliser la méthode FollowHyperlink de l'objet Application : Application. FollowHyperlink " http:www.developpez.net/forums/viewtopic.php?t=228003 "
|
ou
Exécuter la méthode Follow de l'objet Hyperlink (bibliothèque Access)
|
| auteur : Lucifer | Il faut utiliser la fonction Nz(). Par exemple si vous voulez afficher le contenu d'une variable, ou bien "Vide" si sa valeur est nulle il suffit de faire :
Cela peut également servir dans une requête pour donner une valeur à un champ s'il est nul.
|
| auteur : Tofalu | Un ensemble de constantes liées par leur sens peut être définit par une énumération à l'aide du mot clé Enum.
La déclaration de l'énumération est à placer dans le haut du module (partie déclaration)
Chaque ligne de l'énumération est déclarée ainsi :
<Nom de la valeur> = <Valeur : Type entier> Private Enum Couleurs
Bleu= 1
Vert= 3
Jaune= 5
End Enum
|
Ainsi, si on déclare une variable de type Couleurs, on aura par exemple : Dim MaCouleur as Couleurs
MaCouleur= Couleurs. Vert
Msgbox MaCouleur
|
Ceci affichera 3.
|
| auteur : Demco | Il faut utiliser la fonction IsNull().
Intéressez-vous aussi à la fonction Nz().
|
| auteur : Demco | Utilisez des variables globales, créez un module et insérez : La Variable MaVar sera utilisable depuis n'importe quel formulaire.
Cependant attention à l'utilisation des variables globales, ce peut-être un ennemi si elles sont mal utilisées. Attention à ne pas donner à des variables locales le même nom que les variables globales.
Attention, ceci peut être particulièrement dangereux lors d'un travail en équipe, si certains ignorent la présence de variables globales.
Pour utiliser cette valeur dans une requête il suffit de créer une fonction qui en renvoie la valeur.
Dans le même module écrivez : Public Function ValeurVar () As String
ValeurVar = MaVar
End Function
|
Ce qui donnera : Select * FROM MaTable WHERE ID = ValeurVal () ;
|
|
| auteur : Demco |
Le Me désigne en fait l'instance du formulaire sur lequel on se trouve.
Ainsi la ligne suivante fait référence à une zone de texte se trouvant dans le formulaire actuel :
|
| auteur : Tofalu |
Deux syntaxes sont possibles :
Dim obj as new clToto
obj. mamethode
|
Ou
Dim obj as clToto
Set obj= New clToto
obj. mamethode
|
Pourtant, il existe une différence fondamentale entre les deux syntaxes.
En Visual Basic, dès qu'une méthode est appelée, une vérification interne est réalisée.
Celle-ci consiste à vérifier que l'objet n'est pas vide avant l'appel.
Le mot clé SET permet d'outrepasser cette vérification et de dire explicitement au système que l'objet a été instancié.
Ainsi, on gagne de nombreuses opérations qui auraient dûes être effectuées à chaque fois que l'objet aurait été référencé.
La syntaxe 2 consomme donc une ligne de code de plus mais est beaucoup plus performante.
|
| auteur : Tofalu |
Pour tester si deux variables correspondent au même objet, il faut utiliser l'opérateur IS :
Dim a As Object
Dim b As Object
Set a = CurrentDb
Set b = a
If b Is a Then
MsgBox " Le même objet "
Else
MsgBox " Objet différent "
End If
Set b = CurrentProject
If b Is a Then
MsgBox " Le même objet "
Else
MsgBox " Objet différent "
End If
|
Ceci affiche respectivement :
- Le même objet
- Objet différent
|
Consultez les autres F.A.Q's
Les sources présentés sur cette pages sont libre de droits,
et vous pouvez les utiliser à votre convenance. Par contre cette page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs.
Copyright ©2004
Developpez LLC. Tout droits réservés Developpez LLC.
Aucune reproduction, même partielle, ne peut être faite de ce site et de
l'ensemble de son contenu : textes, documents et images sans l'autorisation
expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à 3 ans
de prison et jusqu'à 300 000 E de dommages et intérets.
Cette page est déposée à la SACD.
|