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

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 temps."— 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 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

4 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 : Worksheets("Feuil2").Columns("A").Replace _ ("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 dune 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 quil 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 END IF

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 END IF instruction 4 ELSE instruction 5 END IF

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

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 If End Sub

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

14 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 lapparition 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 lutilisateur a cliqué sur OK, ou 2 sil a cliqué sur ANNULER. On peut ensuite tester cette variable pour continuer le traitement selon le choix de lutilisateur

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 lutilisateur dans MSGBOX 1 sil a cliqué sur OK 3 sil a cliqué sur Abandonner 4 sil a cliqué sur Répéter 2 sil a cliqué sur Annuler 5 sil a cliqué sur Ignorer 6 sil a cliqué sur Oui 7 sil a cliqué sur Non

18 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

19 Construction dun 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 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 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 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 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 ± 10 15

24 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é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

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

29 NomComplet = DUPONT Jean La fonction Mid permet de recopier un certain nombre de caractères (3° paramètre), dune 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 dobtenir Jean dans la variable Prénom

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

31 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 navons 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 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. Range ( C2:D10 ).Name = prénoms une plage de cellules d Excel en Visual-Basic (suite)

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

39 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) set PR = Range ( C2:D10 ) une plage de cellules d Excel en Visual-Basic (suite) PR.Cells(10) désigne la même cellule (les cellules sont implicitement numérotées dans PR ligne par ligne)

40 set PR = Range ( C2:D10 ) une plage de cellules d Excel en Visual-Basic (suite) 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 set PR = Range ( C2:D10 ) une plage de cellules d Excel en Visual-Basic (suite) 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 PR.Rows.Count indique le nombre total de lignes de la plage PR set PR = Range ( C2:D10 ) une plage de cellules d Excel en Visual-Basic (suite) 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 Range( A1 ) = PR.Cells.Count ??

43 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) set PR = Range ( C2:D10 ) une plage de cellules d Excel en Visual-Basic (suite) 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 temps."

Présentations similaires


Annonces Google