Académique Documents
Professionnel Documents
Culture Documents
Chapitre 2
À l’étape 2, la variable z prend la valeur 32. À l’étape 4, la variable z prend la valeur 45.
Six variables sont définies par le programme calcul4() : x, y, z, x1, y1 et z1. Elles sont
toutes de type Double. Le déroulement de l’exécution du programme est le suivant :
1. x = 2/3 : 2/3 est calculé, puis sa valeur 0.666666666666667 est affectée à x. Le résultat
est donné avec 15 décimales.
2. y = 4/7 : 4/7 est calculé, puis affecté à y. La variable y vaut alors 0.571428571428571.
3. z = x + y : la somme x + y est tout d’abord calculée. Elle vaut 1.23809523809524.
La variable z prend alors cette valeur.
4. x1 = Round(x, 2) : cette affectation utilise la fonction Round(x, nb). Celle-ci calcule
la valeur arrondie de x avec nb décimales, soit 2 décimales. Elle fournit comme
résultat 0.67 et x1 prend la valeur 0.67.
5. y1 = Round(y, 2) : de la même façon, la fonction Round(y, 2) calcule la valeur
arrondie de y avec 2 décimales. La variable y1 vaut alors 0.57.
6. z1 = x1 + y1 : z1 vaut la somme 0.67 + 0.57, c’est-à-dire 1.24 qui est le résultat calculé
par le programme.
•
Sub chiffres4()
•
Dim val As Integer, x As Integer, y As Integer
•
Dim nbu As Integer, nbd As Integer, nbc As Integer, nbm As Integer
•
Randomize
•
val = Int(9000 * Rnd() + 1000) 'nb compris entre 1000 et 9999
•
nbu = val Mod 10
•
x = val \ 10
•
nbd = x Mod 10
•
y = x \ 10
•
nbc = y Mod 10
•
nbm = y \ 10
•
MsgBox val & " : " & nbu & " " & nbd & " " & nbc & " " & nbm
•
End Sub
Chapitre 3
1. Prénom, année de naissance et âge
Le programme prenom_age() est défini avec trois variables :
• prenom de type String : la valeur est donnée par l’utilisateur.
• annee de type Integer : la valeur est aussi donnée par l’utilisateur.
• age de type Integer : la valeur est calculée par le programme.
Si l’on veut qu’il affiche comme résultat "Alexandre tu as 23 ans. Bonne chance!",
il faut que la chaîne de caractères à afficher grâce à l’instruction MsgBox soit structurée
de la façon suivante :
•
prenom & " tu as " & age & " ans. Bonne chance!"
La chaîne est constituée de la valeur de la variable prenom, puis de la chaîne " tu as ",
puis de la valeur de la variable age, et enfin de la chaîne " ans. Bonne chance!". Notez
que les deux chaînes contiennent des espaces de façon que les mots de la chaîne finale
soient séparés les uns des autres.
•
Sub prenom_age()
•
Dim prenom As String
•
Dim annee As Integer, age As Integer
•
prenom = InputBox("quel est ton prénom ?")
•
annee = InputBox("quelle est ton année de naissance ?")
•
age = 2012 - annee
•
MsgBox prenom & " tu as " & age & " ans. Bonne chance!"
•
End Sub
Si l’on veut que le résultat soit affiché sur deux lignes au sein de la boîte de dialogue,
il faut introduire le caractère spécial vbCr de la façon suivante :
•
MsgBox prenom & " tu as " & age & " ans." & vbCr & "Bonne chance!"
N° SS 1 78 07 64 386 097 52
Positions 1 3 6 9 12 20
•
Sub numero_SS()
•
Dim ch As String
•
Dim sexe As String, annee As String, mois As String
•
Dim departement As String, numero_registre As String
•
Dim cle As String
•
ch = InputBox("Numéro de Sécurité Sociale " & vbCr _
• & "(avec un espace entre chaque élément) ?")
•
sexe = Mid(ch, 1, 1)
•
annee = Mid(ch, 3, 2)
•
mois = Mid(ch, 6, 2)
•
departement = Mid(ch, 9, 2)
•
numero_registre = Mid(ch, 12, 7)
•
cle = Mid(ch, 20, 2)
•
MsgBox "Sexe : " & sexe & vbCr _
• & "Annee : " & annee & vbCr _
• & "Mois : " & mois & vbCr _
• & "Département : " & departement & vbCr _
• & "Numéro registre : " & numero_registre & vbCr _
• & "Clé : " & cle
•
End Sub
•
Sub emprunt()
•
Dim montant As Double, new_montant As Double
•
Dim taux As Double, t As Double
•
Dim mensualite As Double, new_mensualite As Double
•
Dim nb_annees As Integer
•
Dim nb As Integer, new_nbmois As Double
• '--- Calcul mensualité ---
•
montant = InputBox("Montant de l'emprunt ?")
•
taux = InputBox("Taux d'intérêt annuel (exemple : 5,5) ?")
•
taux = taux / 100
•
nb_annees = InputBox("Durée de l'emprunt (nb années) ?")
•
t = taux / 12
•
nb = nb_annees * 12
•
mensualite = (montant * t) / (1 - (1 + t) ^ -nb)
•
MsgBox Round(mensualite, 2)
• '--- Valeur cible = montant emprunté ---
•
new_mensualite = InputBox("Quelle mensualité souhaitez-vous ? ")
•
new_montant = (new_mensualite * (1 - (1 + t) ^ -nb)) / t
•
MsgBox Round(new_montant, 2)
• '--- Valeur cible = nombre de mois ---
•
new_mensualite = InputBox("Quelle mensualité maximale souhaitez-vous ? ")
•
new_nbmois = (-Log(1 - (montant * t / new_mensualite))) / Log(1 + t)
•
MsgBox Round(new_nbmois, 2)
•
End Sub
Chapitre 4
Équation du second degré
L’équation du second degré ax2 + bx + c = 0 est définie avec les coefficients numériques
a, b et c, le coefficient a devant être différent de 0. Les valeurs des racines dépendent
de la valeur du discriminant b2 – 4 × a × c.
Soit discrim la variable qui donne la valeur du discriminant. Trois cas sont à distinguer
pour calculer les racines de l’équation :
• Si la valeur de discrim est positive, les racines sont données par les valeurs de r1
et r2.
• Si la valeur de discrim est nulle, les deux racines sont égales.
• Si la valeur de discrim est négative, il n’y a pas de racines réelles.
Avant l’étude de ces trois cas, il convient de vérifier si le coefficient a est bien différent
de 0.
Le programme est structuré par une instruction conditionnelle imbriquée qui examine
tous les cas présentés ci-dessus.
•
Sub eq2degre()
•
Dim a As Double, b As Double, c As Double
•
Dim discrim As Double, r1 As Double, r2 As Double
•
a = InputBox("donne la valeur du coef a : ")
•
b = InputBox("donne la valeur du coef b : ")
•
c = InputBox("donne la valeur du coef c : ")
•
discrim = b * b - 4 * a * c
•
If a = 0 Then
• MsgBox "a=0 : calcul impossible!"
•
ElseIf discrim > 0 Then
• r1 = (-b - Sqr(discrim)) / (2 * a)
• r2 = (-b + Sqr(discrim)) / (2 * a)
• MsgBox "r1=" & r1 & " " & "r2=" & r2
•
ElseIf discrim = 0 Then
• r1 = -b / (2 * a)
• r2 = r1
• MsgBox "r1=r2=" & r1
•
Else
• MsgBox "Pas de racines réelles"
•
End If
•
End Sub
Exemples : si a = 1, b = –6.2 et c = 9.25, les racines valent r1 = 2.5 et r2 = 3.7 ; si a = 1,
b = –13 et c = 42.25, le discriminant est nul et r1 = r2 = 6.5.
•
Sub nbsproches()
•
Dim x As Integer, y As Integer
•
Dim seuil As Integer, diff As Integer
•
Randomize
•
x = Int(500 * Rnd() + 1) 'de 1 à 500
•
y = Int(500 * Rnd() + 1)
•
seuil = InputBox("valeur du seuil positive : ")
•
diff = x - y
•
If diff < 0 Then diff = -diff
•
If diff < seuil Then
• MsgBox "OK " & x & " et " & y & " sont proches"
•
Else
• MsgBox "NON " & x & " et " & y & " ne sont pas proches"
•
End If
•
End Sub
Exemple : si x vaut 102 et y vaut 341, et si l’utilisateur donne 200 comme valeur de la
variable seuil, les deux nombres x et y sont proches car la variable diff vaut +139,
valeur inférieure à 200.
•
Sub loterie1()
•
Dim nb As Integer, gain As Integer
•
Randomize
•
nb = Int(500 * Rnd() + 1)
•
If nb >= 1 And nb <= 200 Then gain = 10
•
If nb = 201 Or nb = 202 Then gain = 1000
•
If nb >= 203 And nb <= 400 Then gain = 20
•
If nb >= 401 Then gain = 15
•
MsgBox "Vous avez gagné " & gain & "€ car nb = " & nb
•
End Sub
•
Sub loterie2()
•
Dim nb As Integer, gain As Integer
•
Randomize
•
nb = Int(500 * Rnd() + 1)
•
Select Case nb
•
Case 1 To 200
• gain = 10
•
Case 201, 202
• gain = 1000
•
Case 203 To 400
• gain = 20
•
Case 401 To 500
• gain = 15
•
End Select
•
MsgBox "Vous avez gagné " & gain & "€ car nb = " & nb
•
End Sub
Notez les deux formulations lorsque le programme examine si la variable nb vaut 201
ou 202 :
• L’instruction conditionnelle définit la condition avec l’opérateur logique Or :
•
If nb = 201 Or nb = 202 Then gain = 1000
• L’instruction Select Case… donne les deux valeurs possibles en les énumérant :
•
Case 201, 202
• gain = 1000
Chapitre 5
1. Somme et moyenne de plusieurs nombres
Le programme est construit avec quatre variables : x reçoit la valeur du nombre donné
par l’utilisateur, som permet de calculer la somme des nombres x, nb permet de compter
le nombre des nombres donnés par l’utilisateur, et moy donne la moyenne de ces
nombres.
Le texte du programme est le suivant.
•
Sub somme_nbspos()
•
Dim x As Double, som As Double, moy As Double
•
Dim nb As Integer
•
som = 0
•
nb = 0
•
x = InputBox("Donnez un nombre positif :" & vbCr _
• & "Pour arrêter le processus , tapez -1")
•
While x <> -1
• som = som + x
• nb = nb + 1
• x = InputBox("Donnez un nombre positif :" & vbCr _
• & "Pour arrêter le processus , tapez -1")
•
Wend
•
If nb > 0 Then
• moy = som / nb
• MsgBox "somme = " & som & vbCr _
• & "moyenne = " & moy
•
Else
• MsgBox "aucun nombre positif!"
•
End If
•
End Sub
2. Calcul de Un
Pour calculer Un = a × Un – 1 + b × Un – 2 à partir des valeurs de a, b, U0, U1 et n données
par l’utilisateur, plusieurs variables sont nécessaires :
• Les variables a, b et n enregistrent les valeurs données au clavier.
• Les variables U0 et U1 mémorisent les deux valeurs initiales U0 et U1 données par
l’utilisateur.
• Les variables U, V et W vont effectuer le calcul demandé lors de l’exécution de
l’affectation : U = a * V + b * W.
Le texte du programme utilise aussi la variable i pour compter le nombre de répétitions
effectuées. Voici le code de ce programme.
•
Sub calcul_Un()
•
Dim a As Double, b As Double
•
Dim U0 As Double, U1 As Double
•
Dim U As Double, V As Double, W As Double
•
Dim n As Integer, i As Integer
•
a = InputBox("donne la valeur de a : ")
•
b = InputBox("donne la valeur de b : ")
•
U0 = InputBox("donne la valeur de U0 : ")
•
U1 = InputBox("donne la valeur de U1 : ")
•
n = InputBox("donne la valeur de n : ")
•
W = U0
•
V = U1
•
For i = 2 To n
• U = a * V + b * W
• W = V
• V = U
•
Next i
•
MsgBox "Un vaut " & U
•
End Sub
Elle définit une somme pour i allant de 1 à nb_annees, en mettant en jeu les éléments
suivants :
• Fi définit le flux net de trésorerie de la période i : la variable flux représentera ces
quantités au sein du programme.
• t est le taux d’actualisation : la variable taux donnera sa valeur au sein de la somme
à calculer.
• I est le montant de l’investissement initial : la variable invest_init donnera sa
valeur initiale.
Voici le texte du programme qui calcule la VAN selon cette formule.
•
Sub VAN()
•
Dim invest_init As Double
•
Dim flux As Double
•
Dim taux As Double
•
Dim nb_annees As Integer, i As Integer
•
Dim VAN As Double, somme As Double
•
invest_init = InputBox("Investissement initial ?")
•
taux = InputBox("Taux d'actualisation ?")
•
nb_annees = InputBox("Nombre d'années ?")
•
somme = -invest_init
•
For i = 1 To nb_annees
• flux = InputBox("Flux de trésorerie année " & i)
• somme = somme + flux * (1 + taux) ^ -i
•
Next i
•
VAN = somme
•
MsgBox VAN
•
End Sub
Chapitre 6
1. Les deux valeurs les plus grandes
Le programme recherche les deux valeurs les plus grandes. Soit maxsup et maxinf
les variables qui enregistrent les deux valeurs maximales, la valeur de maxsup étant
supérieure ou égale à celle de maxinf.
Le programme étudie chaque valeur x tirée au hasard :
• Si x est supérieure à maxsup, deux mises à jour sont nécessaires : maxinf doit prendre
la valeur de maxsup et maxsup doit prendre la valeur de x.
• Sinon (x est inférieure ou égale à maxsup) et si x est supérieure à maxinf, la valeur
de maxinf doit être mise à jour : maxinf = x.
Voici le programme correspondant.
•
Sub deuxmax()
•
Dim x As Integer, maxsup As Integer, maxinf As Integer
•
Dim i As Integer
•
Dim ch As String
•
Randomize
•
maxsup = 0
•
maxinf = 0
•
For i = 1 To 10
• x = Int(100 * Rnd() + 1) 'de 1 à 100
• ch = ch & " " & CStr(x)
• If x > maxsup Then
• maxinf = maxsup
• maxsup = x
• ElseIf x > maxinf Then
• maxinf = x
• End If
•
Next i
•
MsgBox ch & vbCr & "maxsup=" & maxsup & " maxinf=" & maxinf
•
End Sub
•
Sub lettresdiff() 'première solution, voir MMIA p4
•
Dim ch As String
•
Dim i As Integer, j As Integer, nb As Integer
•
ch = InputBox("donne un mot :")
•
nb = 0
•
For i = 1 To Len(ch) - 1
• For j = i + 1 To Len(ch)
• If Mid(ch, i, 1) = Mid(ch, j, 1) Then nb = nb + 1
• Next j
•
Next i
•
If nb = 0 Then
• MsgBox ("lettres toutes différentes")
•
Else
• MsgBox ("lettres NON toutes différentes")
•
End If
•
End Sub
Une double boucle permet de structurer l’étude des caractères : la boucle extérieure est
définie par la variable i allant de 1 à Len(ch) – 1 et la boucle intérieure par la variable
j allant de i + 1 à Len(ch). La condition Mid(ch, i, 1) = Mid(ch, j, 1) permet de
tester si le ième caractère est égal ou non au jième caractère de la chaîne ch. Si tous les
caractères sont différents, la variable nb garde sa valeur initiale qui vaut 0.
3. Palindrome
Soit ch la chaîne de caractères à étudier. Soit i la variable qui donne la position des
caractères à partir du début de la chaîne et j la variable qui donne la position des
caractères à partir de la fin de la chaîne. Pour déterminer si ch est un palindrome
ou non, il faut comparer le premier et le dernier caractère, puis le deuxième et
l’avant-dernier, etc. Il suffit donc de comparer le ième caractère et le jième caractère
autant de fois que nécessaire en augmentant i de 1 et en diminuant j de 1 après
chaque comparaison.
Le programme est alors le suivant.
•
Sub palindrome()
•
Dim ch As String
•
Dim i As Integer, j As Integer
•
Dim val As Boolean
•
ch = InputBox("donne le mot à étudier :")
•
i = 1
•
j = Len(ch)
•
val = True
•
While i < j And val
• If Mid(ch, i, 1) = Mid(ch, j, 1) Then
• i = i + 1
• j = j - 1
• Else
• val = False
• End If
•
Wend
•
If val = True Then
• MsgBox ch & " est un palindrome"
•
Else
• MsgBox ch & " n'est pas un palindrome"
•
End If
•
End Sub
Exemple : le mot « radar » est un palindrome, alors que ce n’est pas le cas du mot
« radars » (avec un s).
Chapitre 7
1. Valeurs cumulées
Le premier tableau tab1 contient les dix valeurs numériques données par l’utilisateur
et le second tableau tab2 enregistre les valeurs cumulées. La ième valeur cumulée est
calculée en faisant la somme de la ième valeur du tableau initial tab1(i) et de la valeur
cumulée tab2(i – 1) calculée précédemment :
•
tab2(i) = tab1(i) + tab2(i - 1)
Il faut alors exécuter cette instruction pour toutes les valeurs de i allant de 2 à 10. Pour
la valeur i = 1, il suffit d’attribuer à tab2(1) la valeur du premier nombre du tableau.
Voici le programme correspondant.
•
Sub val_cumulees()
•
Dim tab1(1 To 10) As Integer, tab2(1 To 10) As Integer
•
Dim i As Integer
•
Dim ch1 As String, ch2 As String
•
ch1 = ""
•
For i = 1 To 10
• tab1(i) = InputBox("donne la valeur n°" & i)
• ch1 = ch1 & CStr(tab1(i)) & " "
•
Next i
•
tab2(1) = tab1(1)
•
ch2 = tab2(1) & " "
•
For i = 2 To 10
• tab2(i) = tab1(i) + tab2(i - 1)
• ch2 = ch2 & CStr(tab2(i)) & " "
•
Next i
•
MsgBox ch1 & vbCr & ch2
•
End Sub
•
Sub deuxnbs()
•
Dim t(1 To 15) As Integer
•
Dim i As Integer, prop As Integer
•
Dim ch As String
•
ch = ""
•
Randomize
•
For i = 1 To 15
• t(i) = Int(20 * Rnd() + 1) 'de 1 à 20
• ch = ch & CStr(t(i)) & " "
•
Next i
•
prop = 1
•
i = 1
•
While i < 14 And prop = 1
• If t(i) = t(i + 1) Then prop = 0
• i = i + 1
•
Wend
•
If prop = 0 Then
• MsgBox ch & vbCr _
• & "il y a deux nbs successifs égaux"
•
Else
• MsgBox ch & vbCr _
• & "il n'y a pas deux nbs successifs égaux"
•
End If
•
End Sub
L’instruction itérative While…Wend a pour condition i < 14 And prop = 1. Tant que
cette condition reste vraie, le programme examine si t(i) et t(i + 1) ont des valeurs
égales. Si c’est le cas, la variable prop prend la valeur 0, ce qui rend alors la condition
du While fausse, arrêtant ainsi l’exécution de cette instruction.
Le test final étudie la valeur de la variable prop. Si celle-ci vaut 0, deux nombres
successifs du tableau sont bien égaux. En revanche, si la variable prop a conservé sa
valeur initiale 1, cela signifie que le programme n’a pas constaté l’égalité recherchée :
il n’y a donc pas deux valeurs successives égales au sein du tableau.
Chapitre 8
1. Calcul de ex
ex qui vaut 1 + x + x 2 / 2! + x 3 / 3!+…+ x n / n peut s’écrire sous la forme 1 + ∑x k / k!,
pour k allant de 1 à n.
En langage VBA, x k / k! s’écrit (x ^ k) / facto(k), le caractère ^ signifiant puissance,
et facto(k) étant une fonction qui calcule la factorielle de k.
Pour calculer ex, il suffit donc de répéter n fois l’affectation suivante :
•
res = res + (x ^ k) / facto(k)
dans laquelle res permet de calculer la somme totale après avoir été initialisée à 1.
Le code du programme est constitué d’une procédure et d’une fonction :
• La procédure exp() permet à l’utilisateur de donner les valeurs de x et de n, puis
elle effectue le calcul en utilisant une boucle For…Next…
• La fonction facto(x) calcule la factorielle de x.
•
Sub exp()
•
Dim x As Double, n As Double, res As Double, k As Integer
•
x = InputBox("donne la valeur de x :")
•
n = InputBox("donne la valeur de n :")
•
res = 1
•
For k = 1 To n
• res = res + (x ^ k) / facto(k)
•
Next k
•
MsgBox res
•
End Sub
•
•
Function facto(x As Integer) As Double
•
Dim i As Integer, f As Double
•
f = 1
•
For i = 1 To x
• f = f * i
•
Next i
•
facto = f
•
End Function
Nous avons défini deux variables globales : tnotes qui définit un tableau de 15 notes
et nbnotes qui donne le nombre de notes mises au sein du tableau. Ces deux variables
globales sont déclarées en tête du texte et sont utilisées par chacune des procédures.
Voici le texte complet des quatre procédures.
Listing 14.18 : gestion_notes(), ajout_note(), affichage_notes() et moyenne_notes()
•
Dim tnotes(1 To 15) As Double
•
Dim nbnotes As Integer
•
Sub gestion_notes()
•
Dim rep As Integer
•
nbnotes = 0
•
rep = 1
•
While rep <> 4
• rep = InputBox("1: ajout d'une note" & vbCr _
• & "2: affichage des notes" & vbCr _
• & "3: moyenne des notes" & vbCr _
• & "4: FIN")
• If rep = 1 Then ajout_note
• If rep = 2 Then affichage_notes
• If rep = 3 Then moyenne_notes
•
Wend
•
End Sub
•
•
Sub ajout_note()
•
tnotes(nbnotes + 1) = InputBox("donne la note :")
•
nbnotes = nbnotes + 1
•
End Sub
•
•
Sub affichage_notes()
•
Dim i As Integer, resultats As String
•
resultats = ""
•
For i = 1 To nbnotes
• resultats = resultats & " " & tnotes(i)
•
Next i
•
MsgBox (resultats)
•
End Sub
•
•
Sub moyenne_notes()
•
Dim i As Integer, s As Double, moy As Double
•
For i = 1 To nbnotes
• s = s + tnotes(i)
•
Next i
•
moy = s / nbnotes
•
MsgBox moy
•
End Sub
La procédure gestion_notes() propose quatre choix à l’utilisateur :
• S’il tape 1, c’est la procédure ajout_note() qui s’exécute.
• S’il tape 2, c’est la procédure affichage_notes() qui s’exécute.
• S’il tape 3, c’est la procédure moyenne_notes() qui s’exécute.
• En revanche, s’il tape 4, aucune procédure n’est appelée, la condition du While
devient fausse et le programme met fin à son exécution.
•
Function fp_combin(c1 As Range, c2 As Range) As Integer
•
Dim n As Integer, p As Integer
•
n = c1.Value
•
p = c2.Value
•
fp_combin = facto(n) / (facto(p) * facto(n - p))
•
End Function
Chapitre 9
1. Partage d’une série de nombres
Le programme est structuré avec les variables suivantes :
• p désigne la plage B1:D10 qui contient la série des nombres à étudier (colonne B)
et les résultats recherchés (colonnes C et D).
• seuil enregistre la valeur donnée par l’utilisateur.
• i désigne la ligne du ième nombre de la série des nombres.
• j désigne la ligne du jième nombre à ajouter dans la colonne C (nombres inférieurs
à la valeur de seuil) ; k désigne la ligne du k ième nombre à ajouter dans la colonne
D (nombres supérieurs ou égaux à la valeur de seuil).
Voici le texte du programme.
•
Sub partage_serie()
•
Dim p As Range
•
Dim seuil As Integer
•
Dim i As Integer, j As Integer, k As Integer
•
Set p = Range("B1:D10")
•
seuil = InputBox("donne la valeur du seuil :")
•
j = 1
•
k = 1
•
For i = 1 To 10
• If p.Cells(i, 1).Value < seuil Then
• p.Cells(j, 2).Value = p.Cells(i, 1).Value
• j = j + 1
• Else
• p.Cells(k, 3).Value = p.Cells(i, 1).Value
• k = k + 1
• End If
•
Next i
•
End Sub
Le ième nombre de la série des nombres est donné par la variable p.Cells(i, 1).Value.
Si cette valeur est inférieure à la valeur de seuil, ce nombre est recopié dans la deuxième
colonne de la plage au sein d’une cellule de coordonnées (j, 2), puis j est augmenté
de 1. Sinon, ce nombre est recopié dans la troisième colonne de la plage au sein d’une
cellule de coordonnées (k, 3), puis k est augmenté de 1.
2. Table de multiplications
Le programme est le suivant.
•
Sub table_multip()
•
Dim c As Range
•
Dim i As Integer, j As Integer
•
Set c = Range("A1")
•
For i = 1 To 10 '---(1) Valeurs de i ---
• c.Offset(i, 0).Value = i
•
Next i
•
For j = 1 To 10 '---(2) Valeurs de j ---
• c.Offset(0, j).Value = j
•
Next j
•
For i = 1 To 10 '---(3) Résultats ---
• For j = 1 To 10
• c.Offset(i, j).Value = _
• c.Offset(i, 0).Value * c.Offset(0, j).Value
• Next j
•
Next i
•
End Sub
La variable c désigne la cellule A1.
Le programme exécute les actions suivantes :
1. Valeurs de i. Les valeurs de i allant de 1 à 10 sont placées au sein des cellules de
la plage A2:A11 (sur la colonne A).
2. Valeurs de j. Les valeurs de j allant de 1 à 10 sont placées au sein des cellules de
la plage B1:K1 (sur la ligne 1).
3. Résultats. Les résultats des calculs sont affectés aux cellules de la plage B2:K11.
Le produit i * j est calculé par le produit c.Offset(i, 0).Value * c.Offset(0,
j).Value, et sa valeur est affectée à la cellule c.Offset(i, j).
•
Sub val_cumulees()
•
Dim i As Integer, nblig As Integer
•
Dim s As Double
•
Dim pl As Range
•
Set pl = Selection
•
nblig = pl.Rows.Count
• '---(1) Effectifs cumulés ---
•
pl.Cells(1).Offset(0, 1).Value = pl.Cells(1).Value
•
s = 0
•
For i = 2 To nblig
• s = pl.Cells(i).Value + pl.Cells(i - 1).Offset(0, 1).Value
• pl.Cells(i).Offset(0, 1).Value = s
•
Next i
• '---(2) Fréquences relatives ---
•
For i = 1 To nblig
• pl.Cells(i).Offset(0, 2).Value = pl.Cells(i).Value / s
•
Next i
• '---(3) Fréquences relatives cumulées ---
•
For i = 1 To nblig
• pl.Cells(i).Offset(0, 3).Value = pl.Cells(i).Offset(0, 1).Value / s
•
Next i
•
End Sub
Le programme est conçu pour que l’utilisateur sélectionne tout d’abord une plage de
cellules à une seule colonne dans laquelle il va mettre les effectifs à examiner. Cette
colonne est désignée par la variable pl. Puis le programme calcule le nombre de lignes
de la plage pl en exécutant nblig = pl.Rows.Count.
Le programme effectue ensuite les trois traitements demandés.
1. Calcul des effectifs cumulés. La valeur initiale des effectifs cumulés est la première
valeur des effectifs. D’où la première affectation :
pl.Cells(1).Offset(0, 1).Value = pl.Cells(1).Value.
Pour déterminer la ième valeur des effectifs cumulés, il faut faire la somme de la ième
valeur de l’effectif étudié et de la (i – 1)ème valeur de l’effectif cumulé déjà calculée.
Le résultat de la somme est affecté à la variable s. Le calcul est schématisé par la
figure 14.3.
+1
pl.Cells(i-1).Offset(0,+1)
ligne i-1 116
ligne i 21 137 pl.Cells(i).Offset(0,+1)=s
pl.Cells(i)
Cette valeur s est la valeur recherchée. Elle est affectée à la cellule désignée par
pl.Cells(i).Offset(0, 1) car c’est elle qui doit contenir la ième valeur des effectifs
cumulés. Le calcul ainsi défini est répété plusieurs fois, pour chacune des valeurs
de i allant de 2 à nblig.
Au sortir de la boucle, la variable s contient la somme des effectifs de la plage pl.
2. Calcul des fréquences relatives. Chaque valeur est le quotient de la ième valeur de
l’effectif initial par la somme des effectifs s. Elle vaut donc pl.Cells(i).Value / s,
et sa valeur est affectée à la ième cellule de la deuxième colonne des résultats qui
est définie par pl.Cells(i).Offset(0, 2). D’où l’affectation qu’il faut exécuter
nblig fois :
•
pl.Cells(i).Offset(0, 2).Value = pl.Cells(i).Value / s
Chapitre 10
1. Formulaire de calcul
Le formulaire est construit selon la maquette donnée par la figure 14.4.
UF_3nbs
CALCUL TextBox4
Btn_Calcul
La variable UF_3nbs désigne l’objet formulaire et cet objet est affiché par la procédure
trois_nbs() dont voici le code (on peut aussi définir un bouton de commande).
•
Sub trois_nbs()
•
UF_3nbs.Show
•
End Sub
•
Private Sub Btn_Calcul_Click()
•
Dim x As Integer, y As Integer, z As Integer
•
x = CInt(TextBox1.Text)
•
y = CInt(TextBox2.Text)
•
z = CInt(TextBox3.Text)
•
If x = y + z Or y = x + z Or z = x + y Then
• TextBox4.Text = "Egalité"
•
Else
• TextBox4.Text = "NON Egalité"
•
End If
•
End Sub
2. Nombre proche
La plage B1:B10 donne la série des nombres à étudier. Le bouton de commande
Btn_Calcul, intitulé « CALCUL », permet d’afficher le formulaire UF_Nbproche lors
de l’exécution du code suivant :
•
Private Sub Btn_Calcul_Click()
•
UF_Nbproche.Show
•
End Sub
•
Private Sub Btn_Proche_Click()
•
Dim p As Range
•
Dim i As Integer, x As Integer
•
Dim diff As Integer, nb As Integer
•
Set p = Range("B1:B10")
•
x = CInt(TextBox1.Text)
•
diff = Abs(x - p.Cells(1).Value)
•
nb = p.Cells(1).Value
•
For i = 2 To 10
• If Abs(x - p.Cells(i).Value) < diff Then
• diff = Abs(x - p.Cells(i).Value)
• nb = p.Cells(i).Value
• End If
•
Next i
•
TextBox2.Text = CStr(nb)
•
End Sub
3. Agence de voyage
Il s’agit d’ajouter un bouton de commande et un formulaire à l’application présentée
au paragraphe 3.2 du chapitre 10 afin de pouvoir modifier les informations données
lors d’une inscription (nombre de personnes et formule retenue).
Le bouton, ajouté sur la feuille de calcul, est intitulé « MODIFICATION », et il est
désigné par la variable Btn_Modif. Le formulaire associé est désigné par la variable
UF_Modif. Il a la même structure que le formulaire UF_Inscription de l’application
comme l’indique la figure 14.6.
•
Private Sub Btn_OK_Modif_Click()
•
Dim c As Range
•
Dim nb As Integer, prix As Integer
•
Dim choix As String
•
Dim i As Integer
• '---(1) Recherche du nom ---
•
i = 1
•
While Range("B3").Offset(i, 0).Value <> TextBox1.Text _
•
And Range("B3").Offset(i, 0).Value <> Empty
• i = i + 1
•
Wend
• '---(2) Enregistrement des modifs ---
•
If Range("B3").Offset(i, 0) <> Empty Then
• Set c = Range("B3").Offset(i, 0)
• c.Offset(0, 1).Value = TextBox2.Text
• nb = CInt(TextBox2.Text)
• choix = ComboBox1.Value
• c.Offset(0, 2).Value = choix
• If choix = "Week-End" Then prix = nb * 100
• If choix = "Semaine" Then prix = nb * 500
• If choix = "Promotion" Then prix = nb * 150
• c.Offset(0, 3).Value = prix
• MsgBox "La modification de " & TextBox1.Text & " est enregistrée"
• Unload Me
•
Else
• MsgBox "Erreur sur le nom de la personne"
•
End If
•
End Sub
Chapitre 11
1. Dessin
Le dessin à reproduire se présente comme à la figure 14.7.
2 1
J6: cellule
de départ
3 4
•
Sub dessin()
•
Dim i As Integer, j As Integer
•
Dim k As Integer
•
i = 6
•
j = 10 'cellule J6
•
For k = 1 To 4 'parcours 1
• Cells(i, j).Interior.ColorIndex = 4
• i = i - 1
• j = j - 1
•
Next k
•
For k = 1 To 4 'parcours 2
• Cells(i, j).Interior.ColorIndex = 4
• i = i + 1
• j = j - 1
•
Next k
•
For k = 1 To 4 'parcours 3
• Cells(i, j).Interior.ColorIndex = 4
• i = i + 1
• j = j + 1
•
Next k
•
For k = 1 To 4 'parcours 4
• Cells(i, j).Interior.ColorIndex = 4
• i = i - 1
• j = j + 1
•
Next k
•
End Sub
2. Frise n° 1
La première frise est structurée par la répétition de six cellules qui sont organisées à
partir de la cellule B3 comme l’indique la figure 14.8.
c.Offset(-1,0) c.Offset(-1,+1)
c=cellule B3
=c.Offset(0,0)
c.Offset(+1,0)
c.Offset(+1,+1) c.Offset(0,+1)
•
Sub frise1()
•
Dim c As Range
•
Dim j As Integer, k As Integer
•
Set c = Range("B3")
•
For k = 0 To 12 Step 2
• c.Offset(0, k).Interior.ColorIndex = 6 'jaune
• c.Offset(-1, k).Interior.ColorIndex = 6
• c.Offset(-1, k + 1).Interior.ColorIndex = 6
• c.Offset(0, k + 1).Interior.ColorIndex = 3 'rouge
• c.Offset(1, k).Interior.ColorIndex = 3
• c.Offset(1, k + 1).Interior.ColorIndex = 3
•
Next k
•
End Sub
Le programme affecte à la variable c l’adresse de la cellule B3. Puis il colorie les cellules
en fonction de leur position par rapport à cette cellule :
• k vaut d’abord 0 : le programme colorie les six premières cellules.
• La valeur suivante de k vaut 2 car le pas de l’instruction itérative est de 2. Les
cellules sont décalées de +2 vers la droite, et le même traitement est appliqué aux
six cellules concernées.
3. Frise n° 2
Pour réaliser la seconde frise, il suffit de la découper en une succession de croix comme
l’indique la figure 14.9.
Cellule de départ
0
Ligne i 1
2
3
4
0 1 2 3 4
Colonne j
Chaque croix s’inscrit dans un ensemble de 5 × 5 cellules où chaque cellule est repérée
par son numéro de ligne i et son numéro de colonne j, i allant de 0 à 4 et j allant de 0
à 4. Les cellules sont coloriées lorsqu’elles appartiennent à l’une des deux diagonales :
première diagonale lorsque i = j et deuxième diagonale lorsque i = 4 – j.
Voici le programme correspondant.
•
Sub frise2()
•
Dim c As Range
•
Dim i As Integer, j As Integer, k As Integer
•
Set c = Range("B2")
•
For k = 0 To 15 Step 5
• For i = 0 To 4
• For j = 0 To 4
• If i = j Or i = 4 - j Then
• c.Offset(i, j + k).Interior.ColorIndex = 5
• End If
• Next j
• Next i
•
Next k
•
End Sub
Chapitre 12
1. Calculs financiers
Nous proposons que le calcul du montant de l’emprunt soit structuré de la même façon
que celui qui détermine la mensualité d’un emprunt : il faut alors ajouter un troisième
bouton de commande « EMPRUNT Montant ? » sur la feuille F_menu comme cela
est présenté sur la figure 14.10.
•
Private Sub Btn_Emprunt2_Click()
•
Dim f_emprunt2 As Worksheet
•
Set f_emprunt2 = Worksheets("F_montants_emprunt")
•
f_emprunt2.Activate
•
End Sub
•
Private Sub Btn_Calcul_Montants_Click()
•
Dim m As Double, t As Double
•
Dim taux As Double, mens As Double
•
Dim n As Integer, nb As Integer, i As Integer, j As Integer
•
Dim p As Range
• '---(1) Données et calcul du montant ---
•
mens = Range("B3").Value
•
t = Range("B4").Value
•
n = Range("B5").Value
•
m = (mens * (1 - (1 + (t / 12)) ^ -(n * 12))) / (t / 12)
•
Range("B6").Value = Round(m, 2)
• '---(2) Mise en place du tableau ---
•
Set p = Range("B8:G13")
•
p.Cells(1, 1).Value = Round(m, 2)
•
taux = Range("B4").Value - 0.01
•
nb = Range("B5").Value - 2
•
For i = 2 To 6 'valeurs des durées
• p.Cells(i, 1).Value = nb
• nb = nb + 1
•
Next i
•
For j = 2 To 6 'valeurs des taux
• p.Cells(1, j).Value = taux
• taux = taux + 0.005
•
Next j
• '---(3) Calcul des montants ---
•
For i = 2 To 6
• For j = 2 To 6
• n = p.Cells(i, 1).Value
• t = p.Cells(1, j).Value
• m = (mens * (1 - (1 + (t / 12)) ^ -(n * 12))) / (t / 12)
• p.Cells(i, j).Value = Round(m, 2)
• Next j
•
Next i
•
End Sub
2. Gestion de prêts
Il s’agit de compléter l’application « Gestion de prêts » en la dotant d’un service supplé-
mentaire INFORMATIONS. Celui-ci doit permettre de donner des informations sur
l’état des prêts.
Un bouton de commande intitulé « INFORMATIONS » est ajouté à la feuille F_menu
comme l’indique la figure 14.12.
•
Private Sub Btn_Infos_Click()
•
UF_Infos.Show
•
End Sub
Voici le formulaire que nous proposons d’ajouter au sein de l’application. Il est donné
par la figure 14.13.
•
Private Sub Btn_Nbpers_Click()
•
Dim i As Integer
•
Dim nb0 As Integer, nb1 As Integer, nb2 As Integer
•
Dim nb3 As Integer, nb4 As Integer, nb5 As Integer
• '---(1) Initialisations ---
•
init
•
i = 0
•
nb0 = 0: nb1 = 0: nb2 = 0: nb3 = 0: nb4 = 0: nb5 = 0
• '---(2) Calculs ---
•
While ci.Offset(i, 0).Value <> Empty
• If ci.Offset(i, 3).Value = 0 Then
• nb0 = nb0 + 1
• ElseIf ci.Offset(i, 3).Value = 1 Then
• nb1 = nb1 + 1
• ElseIf ci.Offset(i, 3).Value = 2 Then
• nb2 = nb2 + 1
• ElseIf ci.Offset(i, 3).Value = 3 Then
• nb3 = nb3 + 1
• ElseIf ci.Offset(i, 3).Value = 4 Then
• nb4 = nb4 + 1
• Else
• nb5 = nb5 + 1
• End If
• i = i + 1
•
Wend
• '---(3) Affichage des résultats ---
•
TextBox1.Text = CStr(nb0)
•
TextBox2.Text = CStr(nb1)
•
TextBox3.Text = CStr(nb2)
•
TextBox4.Text = CStr(nb3)
•
TextBox5.Text = CStr(nb4)
•
TextBox6.Text = CStr(nb5)
•
End Sub
Chapitre 13
1. Comparaison de trois suites récurrentes
Soit trois fonctions qui permettent de calculer la racine d’ordre 5 d’un nombre a,
c’est-à-dire a1/5 :
Fonction n° 1 : f(x) = (2 ¥ x + a / (x ^ 4)) / 3
Fonction n° 2 : f(x) = (3 ¥ x + a / (x ^ 4)) / 4
Fonction n° 3 : f(x) = (4 ¥ x + a / (x ^ 4)) / 5
Ces trois fonctions définissent une limite L qui vaut a1/5. Leurs coefficients de conver-
gence valent respectivement 2/3, ¼ et 0, indiquant ainsi que la fonction n° 3 est celle
dont la vitesse de convergence vers le résultat est la plus grande.
Voici le texte du programme formulé avec la variable U pour la fonction n° 1, la variable
V pour la fonction n° 2 et la variable W pour la fonction n° 3.
•
Sub suite_rac5()
•
Dim i As Integer
•
Dim U As Double, V As Double, W As Double, a As Double
•
Dim c As Range
•
Set c = Range("B1")
•
a = InputBox("valeur de a :")
•
U = InputBox("valeur initiale de U :")
•
V = U
•
W = U
•
For i = 0 To 99
• U = (2 * U + (a / (U ^ 4))) / 3
• V = (3 * V + (a / (V ^ 4))) / 4
• W = (4 * W + (a / (W ^ 4))) / 5
• c.Offset(i, 0).Value = U 'affichage colonne B
• c.Offset(i, 1).Value = V 'affichage colonne C
• c.Offset(i, 2).Value = W 'affichage colonne D
•
Next i
•
End Sub
Si l’on donne à la variable a la valeur 243 qui vaut en fait 35 (3 à la puissance 5),
on vérifie ainsi à quelle vitesse on obtient la valeur 3 comme résultat. Lorsque l’on
donne 3,2 comme valeur initiale et que l’on affiche les résultats avec 15 décimales,
on obtient cette valeur 3 à la soixante-dix-septième itération avec la fonction n° 1, à
la vingt-deuxième itération avec la fonction n° 2 et à la quatrième itération avec la
dernière fonction. C’est bien cette fonction qui permet d’obtenir le programme le
plus performant.
Le mémento présente la syntaxe des types, des déclarations de variables, des instruc-
tions, des opérateurs, des fonctions et des procédures VBA.
Cette présentation utilise les symboles suivants :
• […] : terme optionnel.
• (…) : termes semblables non formulés.
Types
Voici les différents types de variables disponibles en VBA :
• Nombres entiers : Byte, Integer, Long, LongLong, LongPtr.
• Nombres décimaux : Single, Double, Decimal, Currency.
• Valeurs booléennes : Boolean.
• Chaînes de caractères : String.
• Dates : Date.
• Union de tous les types : Variant.
Affectation
Voici quelques exemples de syntaxes de l’instruction d’affectation :
x = 4, z = x + y, u = f(t)
Entrée d’information
L’instruction InputBox assure le tranfert d’information du clavier à la mémoire
centrale. Elle s’écrit par exemple de la façon suivante :
•
x=InputBox("donne la valeur de x : ")
Sortie d’information
L’instruction MsgBox assure le transfert d’information de la mémoire centrale à l’écran.
Elle s’écrit par exemple de la façon suivante :
•
MsgBox "Le résultat vaut : " & res
Instruction conditionnelle
L’instruction conditionnelle permet de construire une alternative en testant si la
condition est vraie ou non.
Syntaxes de l’instruction If…Then…Else…End If :
Forme standard Formes restreintes
•
If Condition Then •
If Condition Then
• Instruction n°1a • Instruction n°1a
• Instruction n°1b • Instruction n°1b
• (…) • (…)
•
Else •
End If
• Instruction n°2a •
• Instruction n°2b •
If Condition Then Instruction
• (…)
•
End If
Instruction itérative
Deux cas sont à distinguer selon que le nombre de répétitions est connu a priori ou
bien qu’il dépend du contexte.
•
For var = val_début To val_fin [step p]
• Instruction n°1
• Instruction n°2
• (…)
•
Next var
Opérateurs
Il existe quatre familles d’opérateurs :
• Les opérateurs numériques : +, –, *, /.
^ : élévation à la puissance.
\ : division entière. Exemple : 23\3 donne 7.
Mod : reste de la division entière. Exemple : 23 Mod 3 donne 2.
• Les opérateurs de comparaison : <, <=, >, >=, =, <>.
• Les opérateurs logiques : And, Or, Not, Xor, Eqv.
• L’opérateur de concaténation : &.
Fonctions
Les fonctions effectuent des traitements informatiques et fournissent des résultats.
Syntaxe :
•
Function fexemple([ByVal ou ByRef] x As …, …) As …
•
Dim … 'déclaration des variables locales
•
(…)
•
Instruction n°1
•
Instruction n°2
•
(…)
•
fexemple = … 'valeur de retour
•
End Function
Procédures
Les fonctions effectuent des traitements informatiques et agissent directement sur
l’environnement d’exécution, sans fournir de résultat.
Syntaxe :
•
Sub proced1() 'sans paramètres
•
ou Sub proced2([ByVal ou ByRef] x As …,…) 'avec paramètres
•
Dim … 'déclaration des variables locales
• (…)
•
Instruction n°1
•
Instruction n°2
• (…)
•
End Sub
ByVal et ByRef
Deux modes de transmission sont possibles lors de l’appel d’une fonction ou d’une
procédure :
• ByVal : le mode de transmission se fait par valeur, la valeur du paramètre d’appel
est transmise par recopie à l’argument correspondant de la fonction ou de la
procédure. Exemple : etude(ByVal x As Integer, ByVal y As Integer).
• ByRef : le mode de transmission se fait par référence, l’adresse du paramètre
d’appel est transmise à l’argument correspondant de la fonction ou de la procédure.
Exemple : etude(ByRef x As Integer, ByRef y As Integer).
Par défaut, les arguments des fonctions et des procédures sont déclarés ByRef. Exemple :
etude(x As Integer, y As Integer).
Fonctions prédéfinies
Voici quelques exemples de fonctions prédéfinies du langage VBA :
• Mathématiques : Abs(x), Sqr(x), Cos(x), Sin(x), Tan(x), Exp(x), Log(x), Int(x),
Fix(x), Round(x,nb)…
• Chaînes de caractères : Len(ch) , InStr(ch,ch2) , Mid(ch,d,n) , Mid(ch,d) ,
Left(ch,n), Right(ch,n), Replace(ch,ch1,ch2), Trim(ch), Ltrim(ch), Rtrim(ch),
Lcase(ch), Ucase(ch)…
• Conversion des données : Asc(ch), CInt(ch), CDbl(ch), CLng(ch), Chr(n), CStr(n)…
Nombres aléatoires
Les nombres aléatoires sont calculés de la façon suivante :
• Randomize : réinitialise le processus aléatoire.
• Rnd() : donne un nombre aléatoire décimal tel que 0 <= Rnd() <1.
• Int(b – a + 1) * Rnd() + a) : donne des nombres entiers aléatoires compris
entre a et b, bornes comprises.
Exemple : Int(6 * Rnd() + 1) : donne des nombres entiers compris entre 1 et 6
(tirage d’un dé).
Les applications Excel mettent en jeu de nombreux objets qui sont définis selon un
modèle. Les classeurs, les feuilles de calcul et les cellules peuvent être représentés par
des variables objets. Il en est de même pour les objets de contrôle et les formulaires.
Voici une présentation synthétique de ces variables et de leurs propriétés.
ou bien :
•
Set plage = Workbooks("Exemple.xls").Worksheets("Stock").Range("B1:C5")
Deuxième exemple :
• Set p = Range("B1:B5") affecte à la variable p l’adresse de la plage B1:B5.
• p.Cells(i) désigne la cellule de la ième ligne relative à la plage B1:B5 (une seule
colonne).
Troisième exemple :
• Dim c as Range déclare la variable c comme une variable de type Range.
• Set c= Range("C3") affecte à la variable c l’adresse de la cellule C3.
• c.Offset(i, j) désigne la cellule obtenue par le déplacement i,j à partir de la
cellule C3.
• c.Offset(0, 0) désigne la cellule C3 car Offset(i, j) commence à 0, 0.
• c.Offset(1, 0) désigne la cellule C4.
• c.Offset(2, 1) désigne la cellule D5.
• c.Offset(–1, 1) désigne la cellule D2.
Objets de contrôle
Les objets de contrôle jouent le rôle d’interface entre l’utilisateur et les applications
Excel. Ils peuvent faire partie d’objets formulaires. Leurs caractéristiques principales
sont les suivantes :
• Types : Label, TextBox, ListBox, ComboBox, CommandButton, CheckBox, OptionButton,
ScrollBar…
• Propriétés : Name, Caption…
• Méthodes : selon les types.
• Événements : Click, DblClick…
Objets formulaires
Les formulaires sont des objets d’interfaces entre l’utilisateur et l’application. Leurs
caractéristiques principales sont les suivantes :
• Types : UserForm
• Propriétés : Name, Caption…
• Méthodes : Show, Hide, Load, Unload…
• Événements : Initialize, Activate, Desactivate, Click, DblClick…
L’éditeur proposé par Microsoft, appelé VBE (Visual Basic Editor), est indispensable
pour éditer et exécuter tous les programmes VBA, et pour créer les formulaire avec
tous leurs composants (boutons, zones de texte…). En revanche, il est possible de
créer des boutons de commande directement sur les feuilles de calcul sans utiliser
l’éditeur VBE.
Niveaux de sécurité
Il faut ensuite définir le niveau de sécurité des programmes en procédant de la façon
suivante :
• Cliquer sur le bouton « Sécurité des macros » de l’onglet Développeur, puis choisir
le niveau qui convient parmi les quatre niveaux proposés.
• La deuxième option, « Désactiver les macros avec notification », peut être retenue.
Le code associé
À chaque bouton doit être associé le code d’une procédure VBA. Il convient d’écrire
le texte au sein du squelette fourni par la page d’édition Feuil1(Code) :
•
Sub Btn_Calcul_Click()
• Code à écrire
•
End Sub
Modifications
Si des modifications sont à introduire dans la définition de l’objet bouton, il convient
de procéder de la façon suivante :
• Réactiver si nécessaire le Mode Création, puis cliquer sur « Propriétés » ou sur
« Visualiser le code » de l’onglet Développeur.
• Ou bien cliquer du bouton droit sur l’image du bouton, puis sélectionner
« Propriétés » ou « Visualiser le code ».