L ’événement CHANGE est détecté par Vba dès qu ’un caractère est saisi ( ou tapé) dans l ’objet TextBox. Par contre l ’événement AFTERUPDATE laisse le temps à l ’utilisateur de taper plusieurs dans la boite, et détecte qu ’il a fini quand il appuie sur : • la touche Entrée • ou la touche Tab • ou la souris
48
Embed
L événement CHANGE est détecté par Vba dès qu un caractère est saisi ( ou tapé) dans l objet TextBox. Par contre l événement AFTERUPDATE laisse le temps.
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
L ’événement CHANGE est détecté par Vba dès
qu ’un caractère est saisi ( ou tapé) dans l ’objet
TextBox.
Par contre l ’événement AFTERUPDATE laisse le
temps à l ’utilisateur de taper plusieurs dans la
boite, et détecte qu ’il a fini quand il appuie sur :
• la touche Entrée
• ou la touche Tab
• ou la souris
On a souvent besoin de faire faire à notre
programme un traitement d ’initialisation de
variables, ou de plages de cellules d ’une feuille
d ’Excel, qu ’on ne peut pas simplement réaliser en
modifiant les propriétés de certains objets.
Dans ce cas on écrit le traitement nécessaire dans
une procédure intitulée :
Private Sub Userform_Initialize()
Elle sera déclenchée automatiquement au
démarrage du programme, et ne fonctionnera
qu ’une seule fois
Pour faire appel à une méthode sans paramètre
Objet. Méthode Exemple : Saisie.SetFocus
Syntaxe d’écriture du code
Pour faire appel à une méthode qui a des paramètres
Objet. Méthode nom_du_paramètre :=valeur, nom_du_paramètre :=valeur… en donnant les paramètres sans ordre prédéfini, mais en les nommant
Objet. Méthode (valeur,valeur,,valeur) en donnant les valeurs des paramètres en fonction de leur position dans la liste des paramètres attendus
Sans nommer les paramètres :Worksheets("Feuil2").Columns("A").Replace _
("SIN","COS", , ,True)
Syntaxe d’écriture du code
Pour attribuer une valeur à une propriétéObjet.Propriété = valeur Exemple : OK.Visible = true
Pour mémoriser la valeur d’une propriété dans une variable
Nom_de_variable = Objet.PropriétéExemple : nom = Saisie.Value
Pour écrire une ligne de code sur plusieurs lignes de l’éditeur : il faut indiquer qu’il y a une suite en tapant en fin de ligne le caractère souligné _
Pour mettre des commentaires Commencer la ligne de code par une apostrophe
Différents cas de construction de IF THEN …..
IF a >0 THEN
instruction 1
IF b > 12 THEN
instruction 2
ELSEIF b<8 THEN
instruction 3
ELSE instruction 4
END IF
ELSE instruction 5
END IF
IF a >0 THEN
instruction 1
ELSEIF a = 0 THEN instruction 2
ELSEIF a<-10 THEN
instruction 3
ELSEIF a < -5 THEN
instruction 4
ELSE instruction 5
END IF
IF a > 0 THEN
IF b > 12 THEN
instruction1
END IF
IF c > 8 THEN
instruction 2
ELSE
instruction 3
END IF
instruction 4
ELSE instruction 5
END IF
Nous allons étudier un programme qui permet de faire répéter plusieurs fois un même enchaînement de procédures et événements.
On ne peut pas matérialiser un traitement répétitif par une boucle classique ( Pour, Jusqu ’à, ou Tant Que) lorsqu ’un événement, déclenché par l ’utilisateur, intervient au cours de ce traitement.
Dans ce programme on trouvera aussi des procédures qui ne dépendent pas directement d ’un événement
Dim nb1, nb2, err, nbfois As Integer
Private Sub UserForm_Initialize() Randomize err = 0 Genere nbfois = 0End Sub
Sub Genere() nombre1.Caption = Int(Rnd * 8) + 2 nombre2.Caption = Int(Rnd * 8) + 2 nb1 = nombre1.Caption nb2 = nombre2.Caption End Sub
Sub AfficheBilan() Dim rep As Integer rep = Val(reponse.Value) If rep = (nb1 * nb2) Then MsgBox "Bien" Else: MsgBox "faux" err = err + 1 End IfEnd Sub
AfficheBilan et Genere sont des procédures qui sont déclenchées par d ’autres procédures et non pas par des événements
Sub validez_Click() nbfois = nbfois + 1 If nbfois < 4 Then AfficheBilan If nbfois = 3 Then validez.Caption = "FIN" MsgBox "vous avez fait " & err & " erreurs" reponse.Locked = True Else: reponse.SetFocus Genere reponse.Value = "" End If Else End End IfEnd Sub
Les boites de dialogue MSGBOX
Pour afficher simplement un message et le bouton OK :
Autres valeurs possibles du 2° paramètre de MSGBOX
2 : pour afficher les boutons Abandonner, Répéter et Ignorer
3 : pour afficher les boutons Oui, Non, et Annuler
4 : pour afficher les boutons Oui et Non
5 : pour afficher les boutons Répéter et Annuler
Valeurs possibles de la réponse en fonction du choix de l’utilisateur dans MSGBOX
1 s’il a cliqué sur OK
3 s’il a cliqué sur Abandonner
4 s’il a cliqué sur Répéter
2 s’il a cliqué sur Annuler
5 s’il a cliqué sur Ignorer
6 s’il a cliqué sur Oui
7 s’il a cliqué sur Non
Définitions
C ’est une zone précise de la mémoire centrale,
allouée temporairement à un programme pour
gérer les valeurs successives d ’une information.
Une variable est définie par :
• son nom
• et son type
Construction d’un nom de variable
Un nom de variable doit
commencer par une lettre
avoir moins de 255 caractère, et au moins 1
ne contenir que
des lettres
et des chiffres (facultatifs)
et traits de soulignement _ (facultatifs)
les espaces sont interdits ainsi que les autres signes de ponctuation
former un mot quelconque, sauf un mot réservé du langage Basic, comme End ou Sub, etc.
Définitions
Une variable n ’a toujours qu ’une seule valeur à
un instant donné.
Une valeur ne peut être mémorisée dans une
variable que si leurs types respectifs sont
compatibles.
Exemple : un nombre entier peut-être mémorisé
dans une variable de type réel, mais il perdra sa
nature d ’entier.
Définitions
Une variable peut être renseignée
•par une donnée utilisateur lors d ’une
ACQUISITION
•ou directement par programme, suite à un calcul,
un test, une lecture dans un fichier, un appel de
procédure ou de fonction, lors d ’une
AFFECTATION
Définitions
La désignation du type de la variable permettra
à l ’ordinateur :
• de dimensionner au mieux l ’espace alloué en
mémoire centrale
•de filtrer des valeurs cohérentes
•de savoir quels procédés de codage et
décodage il doit appliquer
Définitions
Voici quelques types de variables courants :
•Boolean : vrai ou faux (true/false, 1/0)
•Date : de 1/1/100 à 31/12/9999
•Byte : entiers de 0 à 255
•Integer : entiers de -32768 à +32767
•Currency : entiers de ± 1015
Définitions
•single : réels avec une précision de 7
décimales : de ±1.4 E-45 à ±3.04 E+38
•double : réels avec une précision de 15
décimales : de ±4.94 E-324 à ±1.79
E+308
•string : chaîne de caractères (65 535
octets maximum)
•string*10 : chaîne de 10 caractères
Définitions
Les déclarations de variables facilitent la
compréhension des programmes et participent à
leur optimisation : nous déclarerons donc
TOUTES les variables que nous utiliserons.
En Visual Basic on déclare généralement les
variables ainsi :
Dim NB As Integer
Dim Trouve As Boolean
Outils de traitement des variables de type
chaînes de caractères
La fonction LEN indique le nombre de caractères contenus dans la variable :
LONG = LEN(Saisie.Value)
La procédure LCASE transforme tous les caractères de la variable en minuscules :
LCASE (prénom)
La procédure UCASE transforme tous les caractères de la variable en majuscules :
UCASE (nom)
chaînes de caractères (suite)
La fonction Left recopie des caractères à partir du premier
caractère.
Exemple :
soit la variable NomComplet = ’’DUPONT Jean’’
La commande NomDeFamille = Left (Nomcomplet, 6)
permettra de mettre ’’DUPONT ’’ dans la variable
NomDeFamille
La fonction Right recopie des caractères à partir du dernier caractère.
Exemple :
soit la variable NomComplet = ’’DUPONT Jean’’
la commande Prénom = Right (Nomcomplet, 4)
permettra de mettre ’’Jean’’ dans la variable Prénom
chaînes de caractères (suite)
chaînes de caractères (suite)
NomComplet = ’’DUPONT Jean’’
La fonction Mid permet de recopier
• un certain nombre de caractères (3° paramètre),
• d’une variable Chaîne de caractères (1° paramètre),
• à partir du n° caractère (2° paramètre)
La commande Prénom = Mid(NomComplet,8,4) permet d’obtenir ’’Jean’’ dans la variable Prénom
La fonction InStr permet de savoir si une sous-chaîne se trouve dans une chaîne et à partir de quel endroit (attention aux minuscules, majuscules)
NomComplet = ’’DUPONT JEAN’’
Position = InStr(NomComplet,’’ON’’) Position = 4
Position = InStr(NomComplet,’’on’’) Position = 0
Position = InStr(NomComplet,’’N’’) Position = 5 et c’est tout
Position = InStr(NomComplet,’’I’’) Position = 0
chaînes de caractères (suite)
chaînes de caractères (suite)
Pour remplacer une sous-chaîne, par une autre sous-chaîne, dans une chaîne, on utilise la méthode Replace
Dans la commande suivante :
trouvé = formule.Replace(’’x’’,’’RCM’’)
trouvé est une variable booléenne qui vaudra Vrai si on a trouvé, au moins une fois, la lettre ’’x’’, à remplacer par la chaîne ’’RCM’’, dans la variable formule
chaînes de caractères (suite)
trouvé = formule.Replace(’’x’’,’’RCM’’)
dans cette commande nous n’avons pas précisé s ’il fallait différencier ‘ x ’ et ‘ X ’ donc par défaut ils ne sont pas différenciés, et tous les ‘ x ’ et ‘ X ’ sont remplacés.
Si on ne veut faire remplacer que les ‘ x ’ minuscules, il faut préciser le 5° paramètre de Replace et le mettre à False