La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

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.

Présentations similaires


Présentation au sujet: "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."— Transcription de la présentation:

1 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

2 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

3 Syntaxe d’écriture du code
Pour faire appel à une méthode sans paramètre Objet. Méthode Exemple : Saisie.SetFocus 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

4 expression. Replace(What, Replacement, LookAt,
expression.Replace(What, Replacement, LookAt, SearchOrder, MatchCase, MatchByte) Cet exemple montre comment remplacer chaque occurrence de la fonction SIN par la fonction COS. La plage de remplacement est la colonne A de Feuil2. En nommant les paramètres : Worksheets("Feuil2").Columns("A").Replace _ What:="SIN", Replacement:="COS", _ MatchCase:=True Sans nommer les paramètres : ("SIN","COS", , ,True)

5 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

6 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

7 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

8 IF a > 0 THEN IF b > 12 THEN instruction1 END IF IF c > 8 THEN instruction 2 ELSE instruction 3 instruction 4 ELSE instruction 5

9 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

10 Dim nb1, nb2, err, nbfois As Integer
Private Sub UserForm_Initialize() Randomize err = 0 Genere nbfois = 0 End Sub Sub Genere() nombre1.Caption = Int(Rnd * 8) + 2 nombre2.Caption = Int(Rnd * 8) + 2 nb1 = nombre1.Caption nb2 = nombre2.Caption

11 Sub AfficheBilan() Dim rep As Integer rep = Val(reponse.Value) If rep = (nb1 * nb2) Then MsgBox "Bien" Else: MsgBox "faux" err = err + 1 End If End 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

12 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 Sub

13 Les boites de dialogue MSGBOX
Pour afficher simplement un message et le bouton OK : MSGBOX (’’ vous avez fait’’  & erreurs & ’’erreurs ’’)

14 Réponse = MSGBOX (’’ texte ’’ ,1, ’’titre ’’)
Pour afficher un texte et les boutons OK et ANNULER : Réponse = MSGBOX (’’ texte ’’ ,1, ’’titre ’’) Le 2° paramètre, qui vaut ici 1, provoque l’apparition des 2 boutons OK et ANNULER Le 3° paramètre apparaîtra en titre en haut de la boîte de dialogue La variable Réponse contiendra : 1 si l’utilisateur a cliqué sur OK, ou 2 s’il a cliqué sur ANNULER. On peut ensuite tester cette variable pour continuer le traitement selon le choix de l’utilisateur

15 Ainsi la ligne suivante affichera la boite ci-dessous
Choix = MSGBOX (’’erreur d’écriture ’’,1, ’’vérification LO10’’)

16 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

17 Valeurs possibles de la réponse en fonction du choix de l’utilisateur dans MSGBOX
1 s’il a cliqué sur OK 2 s’il a cliqué sur Annuler 3 s’il a cliqué sur Abandonner 4 s’il a cliqué sur Répéter 5 s’il a cliqué sur Ignorer 6 s’il a cliqué sur Oui 7 s’il a cliqué sur Non

18 Définitions Une VARIABLE
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 Une variable est définie par : son nom et son type

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

20 variable (suite) 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.

21 Définitions Une variable peut être renseignée
variable (suite) 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

22 Définitions Un TYPE de variable
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

23 type de variable (suite)
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 à Currency : entiers de ± 1015

24 type de variable (suite)
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 ( octets maximum) string*10 : chaîne de 10 caractères

25 Déclaration de Variables
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. Déclaration de Variables En Visual Basic on déclare généralement les variables ainsi : Dim NB As Integer Dim Trouve As Boolean

26 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)

27 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

28 chaînes de caractères (suite)
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

29 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

30 chaînes de caractères (suite)
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 = et c’est tout Position = InStr(NomComplet,’’I’’)  Position = 0

31 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

32 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 trouvé = formule.Replace(’’x’’,’’RCM’’, , , False)

33 chaînes de caractères (suite et fin)
Exercice : soit NomComplet = ’’DUPONT JEAN’’ Que trouvera-t-on dans la variable X après la commande : X=Mid (NomComplet, 1 , InStr (NomComplet ,’’ ’’) -1) ?

34 Voici différents moyens pour désigner en Visual-Basic une cellule d ’une feuille d ’Excel et y mettre la valeur 12 Range( ’ ’A1 ’ ’) = 12 Set x =Range( ’ ’A1 ’ ’) x = 12 Range( ’ ’A1 ’ ’) .Name = ’ ’age  ’ ’ Range(’ ’age ’ ’) = 12

35 Pour mettre en Visual-Basic une formule dans une cellule d ’une feuille d ’Excel
Range( ’ ’B1 ’ ’) =   ’ ’= sin(RC[-1] ) ’ ’ le R vient du mot Row (niveau de ligne) et le C vient de Column Dans la cellule B1 on aura le sinus de la valeur située dans la cellule A1 ( même ligne et colonne précédente par rapport à B1)

36 Voici différents moyens pour désigner en Visual-Basic une plage de cellules d ’une feuille d ’Excel
Range( ’ ’A1:B10 ’ ’) = 12 la valeur 12 est recopiée dans toutes les cellules de la plage  ’ ’A1:B10 ’ ’ attention : ceci ne permet pas la recopie automatique d ’une formule

37 une plage de cellules d ’Excel en Visual-Basic (suite)
Range (’ ’C2:D10 ’ ’).Name = ’ ’prénoms ’ ’ Range( ’ ’prénoms ’ ’) =  ’ ’sophie ’ ’ la valeur  ’ ’sophie ’ ’ est recopiée dans toutes les cellules de la plage  ’ ’prénoms’ ’ Avec la propriété Name, on nomme une plage de cellules. Le nom est visible dans la liste des cellules nommées de la feuille Excel.

38 une plage de cellules d ’Excel en Visual-Basic (suite)
set PR = Range (’ ’C2:D10 ’ ’) La variable n ’est pas visible dans la liste des cellules nommées de la feuille Excel. PR  =  ’ ’sophie ’ ’ impossible la valeur  ’ ’sophie ’ ’ n ’ est pas recopiée dans toutes les cellules de la variable PR

39 une plage de cellules d ’Excel en Visual-Basic (suite)
set PR = Range (’ ’C2:D10 ’ ’) PR.Cells(5,2) désigne la cellule de la 5° ligne , 2° colonne de la plage référencée par PR (c ’est la cellule D6 de la feuille) PR.Cells(10) désigne la même cellule (les cellules sont implicitement numérotées dans PR ligne par ligne)

40 une plage de cellules d ’Excel en Visual-Basic (suite)
set PR = Range (’ ’C2:D10 ’ ’) PR.Columns(2) désigne toutes les cellules de la 2° colonne de la plage référencée par PR (ce sont les cellules D2 à D10 de la feuille) La commande PR.Columns(2) = ’ ’oui ’ ’ remplit toutes les cellules de la 2° colonne de PR avec  ’ ’oui ’ ’

41 une plage de cellules d ’Excel en Visual-Basic (suite)
set PR = Range (’ ’C2:D10 ’ ’) PR.Rows(7) désigne toutes les cellules de la 7° ligne de la plage référencée par PR (ce sont les cellules C8 et D8 de la feuille) La commande PR.Rows(7) = 0 remplit toutes les cellules de la 7° colonne de PR avec  0

42 une plage de cellules d ’Excel en Visual-Basic (suite)
set PR = Range (’ ’C2:D10 ’ ’) PR.Cells.Count indique le nombre total de cellules de la plage PR PR.Columns.Count indique le nombre total de colonnes de la plage PR PR.Rows.Count indique le nombre total de lignes de la plage PR Range(’ ’A1 ’ ’ ) = PR.Cells.Count ??

43 une plage de cellules d ’Excel en Visual-Basic (suite)
set PR = Range (’ ’C2:D10 ’ ’) PR.Cells(PR.Cells.Count) désigne la dernière cellule de la plage référencée par PR (c ’est la cellule D10 de la feuille) PR.Cells(9,2) et PR.Cells(18) et PR.Cells(PR.Rows.Count,PR.Columns.Count) désignent aussi la même cellule, D10 de la feuille d ’Excel

44 Private Sub UserForm_Initialize()
Dim i As Integer For i = 1 To Range("noms").Cells.Count Range("noms").Cells(i).Interior.ColorIndex = 3 Next i End Sub

45 Private Sub UserForm_Initialize()
Dim i As Integer i = 1 Do Range("noms").Cells(i).Interior.ColorIndex = 3 Loop Until i = Range("noms").Cells.Count End Sub

46 Private Sub UserForm_Initialize()
Dim i As Integer i = 1 Do Range("noms").Cells(i).Interior.ColorIndex = 3 i = i + 1 Loop Until i = Range("noms").Cells.Count End Sub

47 Private Sub UserForm_Initialize()
Dim i As Integer i = 1 Do While i < > Range("noms").Cells.Count i = i + 1 Range("noms").Cells(i).Interior.ColorIndex = 3 Loop End Sub

48 Private Sub Choix_AfterUpdate()
L = UCase(Choix.Text) If L < > "O" or L < > "N " Then MsgBox ("erreur ") Else Range("corrigé!G2") = L End If End Sub


Télécharger ppt "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."

Présentations similaires


Annonces Google