Vous êtes sur la page 1sur 4

TP1 : Introduction VBA - Excel

1. Les macros
Exercice 1. Lenregistreur de macros
Dans Excel, crer un tableau (4 lignes et 3 colonnes) et remplissez-le de quelques valeurs. Slectionnez-le. Enregistrer une macro pour reproduire la mise en forme du tableau prcdent, de telle sorte que les cellules aient un fond en couleur, avec une police en italique. Crer un nouveau tableau et utilisez la macro prcdente pour reproduire automatiquement la mise en forme. Ouvrez lditeur VBE pour observer le code gnr automatiquement. Modifier lune des proprits (par exemple remplacer Italique par Gras ). Excuter nouveau la macro sur les tableaux et vrifier que la modification est prise en compte.

Exercice 2. Macros personnalises


Dans VBE, crer un nouveau module, renommez-le en ModuleTP1. Dans ce module, crire une macro appele saisirNote, qui demande lutilisateur de saisir une note comprise entre 0 et 20, jusqu ce que la note rentre soit correcte. Public Sub SaisieNote() Do Note = InputBox("Tapez une note") Loop Until IsNumeric(Note) And Note>=0 And Note<=20 End Sub

2. Les fonctions
Exercice 3. Utilisation des fonctions prdfinies
Dans Excel, crer un tableau de 2 colonnes et 4 lignes dentiers positifs. Crer une troisime colonne pour laquelle chaque ligne vaut x puissance y, o x est la valeur de la cellule de la premire colonne, et y de la deuxime colonne. Pour cela, vous utilisez la fonction Puissance prdfinie. Modifier la valeur de certaines notes. Que constatez-vous ?

Exercice 4. Manipulation de valeurs numriques


Dans VBE, dfinir une fonction niveau qui prend une note en paramtres et retourne le niveau correspondant, tel que A corresponde une note entre 15 et 20, B entre 10 et 15, C entre 5 et 10, et D entre 0 et 5. Dans Excel, crer un tableau tel que la premire colonne soit compose de notes entre 0 et 20 sur quelques lignes et que la seconde colonne soit le niveau calcul correspondant. Function niveau(note As Double) As String Dim rep If note >= 0 And note < 5 Then niveau = "D" ElseIf note >= 5 And note < 10 Then niveau = "C"

ElseIf note >= 10 And note < 15 Then niveau = "B" ElseIf note >= 15 And note <= 20 Then niveau = "A" Else rep = MsgBox("note=" & note, vbDefaultButton1) niveau = "erreur" End If End Function

Exercice 5. Manipulation de chanes de caractres


Ecrire une fonction chiffreCar qui prend en paramtre un caractre et qui retourne la position du caractre dans lalphabet. Exemple : chiffreCar( e ) = 5 Ecrire une fonction, chiffrage, qui prend en paramtre une chane de caractres et qui la transforme en une autre chane de caractres telle que chaque caractre soit remplac par sa position dans lalphabet. Les valeurs infrieures 10 seront prcdes de 0 pour qu chaque caractre correspondent exactement deux chiffres. Par exemple : chiffrage( hello )= 0805111115 Function chiffreCar(car As String) As String Dim res As Integer car = Trim(car) ' mise en minuscule res = Asc(car) - 96 'le code ascii de a = 97 If res < 10 Then chiffreCar = "0" & CStr(res) Else chiffreCar = CStr(res) End If End Function Function chiffrage(s As String) As String chiffrage = "" Dim car As String Dim i As Integer For i = 1 To Len(s) car = Mid(s, i, 1) ' extraction du ime caractre chiffrage = chiffrage & chiffreCar(car) Next End Function Sub test_chiffrage() chiffreCar ("a") chiffrage ("ab") End Sub

Exercice 6. Manipulation de tableaux et boucles


Dfinir une fonction tailleTab qui prend en paramtre un tableau dentiers et retourne sa taille. Function tailleTab(t() As Integer) As Integer tailleTab = UBound(t) - LBound(t) End Function Dfinir une fonction minTab qui prend en paramtre en tableau dentier et retourne lindice de la valeur minimale (le premier sil y en a plusieurs). Function minTab(t() As Integer) As Integer Dim i As Integer Dim val_m As Integer Dim ind_m As Integer ind_m = 1 val_m = t(1) For i = 1 To tailleTab(t) If t(i) < val_m Then val_m = t(i) ind_m = i End If Next minTab = ind_m End Function Dfinir une constante TAILLE_MAX et initialisez-la 10. Const TAILLE_MAX As Integer = 7 Dfinir une fonction tabAlea qui retourne un tableau de taille TAILLE_MAX et le remplit de valeurs alatoires comprises entre 0 et 100. Function tabAlea() As Integer() Dim t(TAILLE_MAX) As Integer Dim i For i = 1 To TAILLE_MAX t(i) = Int((TAILLE_MAX * Rnd) + 1) Next tabAlea = t() End Function

Exercice 7. Fonctions rcursives


Soit la suite (Un) n >0 avec : U1 = 2 Un = 3 * Un-1 + 2 Ecrire une fonction rcursive suite qui prend un entier n en paramtre puis retourne la valeur de Un

Function suite(n As Integer) As Double 'n doit tre > 0 If n = 1 Then suite = 2 Else suite = suite(n - 1) * 3 + 2 End If End Function En utilisant la suite prcdente, crire une fonction rcursive somme_suite(n) qui prend un entier n en paramtre puis retourne la somme des n premiers termes de la suite (Un) Function somme_suite(n As Integer) As Integer If n = 1 Then somme_suite = suite(1) Else somme_suite = suite(n) + somme_suite(n - 1) End If End Function Sub test_somme_suite() MsgBox (somme_suite(1)) MsgBox (somme_suite(2)) End Sub