48
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

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

Embed Size (px)

Citation preview

Page 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 ’é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

Page 2: 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

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

Page 3: 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

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

Page 4: 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

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)

Page 5: 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

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

Page 6: 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

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

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

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

Page 8: 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

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

Page 9: 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

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

Page 10: 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

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

Page 11: 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

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

Page 12: 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

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

Page 13: 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

Les boites de dialogue MSGBOX

Pour afficher simplement un message et le bouton OK :

MSGBOX (’’ vous avez fait’’  & erreurs & ’’erreurs ’’)

Page 14: 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

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

Page 15: 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

Ainsi la ligne suivante affichera la boite ci-dessous

Choix = MSGBOX (’’erreur d’écriture ’’,1, ’’vérification LO10’’)

Page 16: 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

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

Page 17: 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

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

Page 18: 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

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

Page 19: 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

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.

Page 20: 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

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.

Page 21: 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

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

Page 22: 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

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

Page 23: 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

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

Page 24: 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

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

Page 25: 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

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

Page 26: 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

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)

Page 27: 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

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

Page 28: 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

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)

Page 29: 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

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

Page 30: 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

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)

Page 31: 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

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

Page 32: 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

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)

Page 33: 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

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

Page 34: 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

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

Page 35: 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

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)

Page 36: 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

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

Page 37: 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

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

Page 38: 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  =  ’ ’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)

Page 39: 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.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)

Page 40: 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

• 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 ’ ’

Page 41: 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

• 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

Page 42: 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.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 ??

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

Page 44: 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

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

Page 45: 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

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

Page 46: 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

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

Page 47: 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

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

Page 48: 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

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