Informatique de gestion – IO MER L3 – Pierre SOURNAC Informatique de Gestion part III – the macro rises L3 – IO MER
2 Informatique de gestion – IO MER L3 – Pierre SOURNAC Récapitulatif des cours précedents : Syntaxe : Sub / Commentaires / déclaration de variables Les Structures : If – Then : ok For – Next : 4 lignes contenant le numéro de la ligne Do – loop : idem sur colonne B (while) puis sur D et E (until) For Each – Next : coloriage Concepts pour la programmation avancée Sub for1() Dim i As Integer i = 1 For i = 1 To 4 Range("A" & i) = i Next i End Sub Sub loop1() Dim i As Integer i = 1 Do Range("B" & i) = i i = i + 1 Loop While i <= 4 End Sub Sub loop2() Dim i As Integer i = 1 Do Range("D" & i & ":E" & i) = i i = i + 1 Loop Until i = 5 'For Each Cell In Range("D1:E" & i) ' Cell.Interior.ColorIndex = i ' i = i + 1 'Next End Sub
3 Informatique de gestion – IO MER L3 – Pierre SOURNAC Les fonctions 1)Fonctions : Un autre type de macros existe. Les fonctions, elles permettent de créer de nouvelles fonctions Excel que l’on pourra utiliser ensuite en plus de celles existantes (comme Somme, Min, Max, …) La fonction se termine lorsqu’on lui donne une valeur Démo : Réaliser les fonctions suivantes : Eranc : prend comme valeur une somme en Francs et la convertie en Euro Carré : donne le carré d’une valeur Il est possible dans une fonction de ne mettre aucun argument, ou plusieurs. tester : Function TVA(prix) TVA = prix * End Function Function euro(franc) euro = franc * End Function Function carre(toto) toto = toto * toto End Function Function Pi() Pi = End Function Function evolution2(val1, val2) evolution2 = ((val2 - val1) / val1) * 100 End Function Sub calcul() Range("A5") = carre(evolution2(Range("A1").Value, Range("B2").Value)) End Sub
4 Informatique de gestion – IO MER L3 – Pierre SOURNAC Les Tableaux Un tableau est une variable permettant de stocker plusieurs valeurs Déclaration : Dim MonTableau(dimension) [As Type] »taille d’un tableau = nombre d’éléments du tableau. »Les éléments d’un tableau sont indexés de 0 à dimension–1. MonTableau(i) désigne le ième élément du tableau, i devant être compris entre 0 et dimension–1. Exemples : »Dim TabInt(10) As Integer ‘tableau de 10 entiers »TabInt(0)=12 ‘accès au premier élément du tableau »TabInt(9)=36 ‘accès au dernier élément du tableau La fonction Array renvoie une variable de type Variant contenant un tableau La fonction Ubound renvoie la valeur max des index du tableau »UBound(ListeJours) renvoie 6 Mise en application : Ecrire une macro permettant de vérifier que la chaîne de caractères saisie (inputbox) est bien un jour de la semaine. Dim ListeJours As Variant ListeJours = Array("Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi", "Dimanche") Sub verificationJour() Dim ListeJours As Variant jour = InputBox("saisir un jour :") ListeJours = Array("Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi", "Dimanche") j = 0 For i = 0 To UBound(ListeJours) 'MsgBox ListeJours(i) If ListeJours(i) = jour Then j = 1 End If Next i If j > 0 Then MsgBox "c'est ok" Else MsgBox "KO" End If 'p = Application.Match(jour, ListeJours, 0) ' 'If IsError(p) Then 'MsgBox "KO" 'Else 'MsgBox "OK" 'End If End Sub
5 Informatique de gestion – IO MER L3 – Pierre SOURNAC Déboguer L'exécution pas à pas : 1 ière question : le programme passe-t-il bien sur les lignes d'instructions que nous avons écrites, et le fait-il au bon moment ? une exécution pas à pas. L'exécution ira de ligne en ligne (Touche F8) Le point d'arrêt : Soupçon de souci dans la procédure n°28 ? le point d'arrêt, judicieusement posé d'un clic de souris dans la marge, juste avant l'endroit où les ennuis arrivent. On lance une exécution normale, qui s'interrompt au point d'arrêt. Et à partir de là, on peut y aller au pas à pas. La souris : En exécution pas à pas il suffit d'amener la souris au-dessus d'une variable, ou d'une expression, pour qu'apparaisse dans un petit cadre jaune, la valeur de cette variable ou de cette expression.