UE2 - M22 Licence acoustique 03/10/2017 UE2 - M22 Licence acoustique Le langage VBA Pour EXCEL Formation EAE – Année universitaire 2009-2010
chiffres EXCEL Format d’affichage Contenu des cellules décimal Financier Date heure Contenu des cellules nombre Chaînes formules repérage des cellules Absolu $B$6 Relatif B6 (L6C2 R6C2) Mixte $B6 B$6 Par nom mesure3
Variables calculées EXCEL Recalcul des formules automatique manuel Outils > options > onglet calcul Formule de calcul associée à la cellule
EXCEL graphiques Choix important de type De courbes
mise en forme conditionnelle EXCEL mise en forme conditionnelle
Un bouton pour lancer le traitement :: Exemple 1 APPLICATION On veut rechercher le maximum dans une série de 3 chiffres 1ère méthode : saisir les valeurs DIRECTEMENT dans la feuille Un bouton pour lancer le traitement :: Quand on clique sur le bouton, la procédure de traitement nommée rechmax() est exécutée Le traitement est écrit dans la fenêtre de code (ALT F11)
Exemple 1 Sub rechmax() On déclare les variables Dim val1 As Byte, val2 As Byte, val3 As Byte Dim max val1 = Cells(1, 1).Value val2 = Cells(2, 1).Value val3 = Cells(3, 1).Value If (val1 > val2) Then If val1 > val3 Then max = val1 Else max = val3 End If If max2 > val3 Then max = val2 Cells(5, 1).Value = max End Sub On déclare les variables On vient lire les valeurs dans les cellules On traite l'algorithme de l'éxo 1 du TD1 On écrit le résultat dans la cellule ligne 5,colonne 1 (A5)
Exemple 2 Les données sont saisies dans une fenêtre La fenêtre est ouverte en cliquant sur le bouton INTERFACE GRAPHIQUE OBJET fenêtre OBJET zone de texte OBJETS boutons OBJETS numériques On donne des noms aux objets txtA,txtB et txtC pour les zones de saisie des 3 chiffres cmdCalcul,cmdQuitter pour les 2 boutons lblResultat pour l'affichage du résultat
Exemple 2 Private Sub cmdCalcul_Click() Dim val1 As Byte, val2 As Byte, val3 As Byte Dim max val1 = txtA.Value val2 = txtB.Value val3 = txtC.Value If (val1 > val2) Then If val1 > val3 Then max = val1 Else max = val3 End If If max2 > val3 Then max = val2 lblResultat.Caption = "le max=" & max End Sub On vient lire les valeurs écrites dans les zones de texte On écrit le résultat dans la zone de texte lblresultat
Exemple 2 APPLICATION Les données sont saisies dans une fenêtre La fenêtre est ouverte en cliquant sur le bouton INTERFACE GRAPHIQUE OBJET fenêtre OBJET zone de texte OBJETS boutons OBJETS numériques
Types et valeurs Type Taille (octets) Plage byte 1 0 à 255 boolean 2 true ou false integer 2 -32768 à +32767 Long 4 -2 147 483 648 à 2 147 483 647 single 4 nombre réel double 8 nombre réel string 10 octets + longueur de la chaîne Variant 16 Pour s'obliger à déclarer les variables, on écrira : Option explicit en début de programme
exemples de variables Variables GLOBALES (visibles partout !!!) ' Déclaration de variables globales - visibles dans tout le programme Dim rayon As Single ' Déclaration de réel Dim i As Integer, j as Integer 'Déclaration d'entier Dim t As String * 1 ' Déclaration de caractère Dim octet ' Déclaration d'un octet Dim c ' long Sub test() Dim d As Byte Dim e As Integer rayon = 10.14 i = 2 j = 3 t = "A" 't=65 Code Ascii de A octet = 129 ' On peut aller au dessus de +127 End Sub Variables GLOBALES (visibles partout !!!) Variables LOCALES (visibles uniquement dans la fonction !!!)
tableau Un tableau est une association des variables de même type SRAM Dim machin(4) as integer 2 octets (int) Machin(0) $0100 Machin(1) $0102 Machin(2) $0104 Machin(3) $0106 L'indice de départ est 0 par défaut On peut modifier cette configuration avec le paramètre Option Base
tableau Dim t As Variant Dim t2(3) As String t2(0) = "bonjour" t2(1) = "ca" t2(2) = " va?" t = Array(10, 20, 30)
Les procédures Sub nom_de_la_proc() instructions End Sub Routines sans paramètre d'entrée et de sortie Sub nom_de_la_proc() instructions End Sub Sub affiche() Dim msg As String msg = "bonjour !!" MsgBox msg End Sub ' pour utiliser la procédure affiche Routines avec paramètres d'entrée et sans paramètre de sortie Sub nom_de_la_proc(types nom_des_paramètres) instructions End Sub Sub affiche(msg As String) MsgBox msg End Sub ' pour utiliser la procédure msg = "bonjour !!" affiche (msg)
Les fonctions Function nom_de_la_fct() as instruction 1 instructions Routines sans paramètres d'entrée et un paramètre de sortie Function nom_de_la_fct() as instruction 1 instructions nom_de_la_fct=resultat End function Function affiche() As String Dim msg As String msg = "bonjour, ca va?" affiche = msg End Function ' pour utiliser la fonction MsgBox affiche Routines avec paramètres d'entrée et un paramètre de sortie Function nom_de_la_fct(types nom_des_param) as instruction 1; … instruction n; return valeur; End function Function somme(a As Byte, b As Byte) As Integer somme = a + b End Function ' pour utiliser la fonction Calcul=somme(10,20)
Les opérateurs LOGIQUE If (a and b) …... c=a and b Ces opérateurs sont utilisés pour les tests conditionnels. Le résultat est true ou false. If (a and b) …... c=a and b c=1 si a<>0 et b<>0 ET logique OU logique c=a or b c=1 si a ou b sont non nuls NON logique If (not a) …. Le test est VRAI si a est FAUX (a=0) COMPARAISON
Boucles POUR TANT QUE y=1*4 x=3 y=4*3 x=2 y=12*2 x=1 y=24*1 x=0 Pour indice Allant de valeur1 à valeur2 faire Actions Fin pour Dim x As Byte for x = 0 to 10 … next TANT QUE y=1*4 x=3 x=4 : y=1 ' calcule la factorielle de x while (x>0) y=y*x : x=x-1 End while Tant que condition faire Actions Fin Tant que y=4*3 x=2 y=12*2 x=1 y=24*1 x=0 Do instructions Loop while (test) Do instructions Loop until (test) Si test VRAI on continue la boucle Si test VRAI on sort de la boucle
Test simple SI SELON CAS Si condition vraie Alors Actions 1 Sinon Fin si for x = 1 to 10 if ( not ( x mod 2 )) msgbox x & " est pair" else msgbox x & " est impair" End if next SELON CAS Selon expression E Cas valeur1 Actions 1 Cas valeur2 Actions B … Cas valeurN Actions N Cas sinon Action Défaut Fin Selon N=8 ' Initialise la variable. Select Case N ' Évalue N Case 1 To 5 ' N est compris entre 1 et 5 inclus. Debug.Print "Entre 1 et 5" Case 6, 7, 8 ' N est compris entre 6 et 8. Debug.Print "Entre 6 et 8" Case 9 To 10 ' N entre 9 ou 10. Debug.Print "Supérieur à 8" Case Else ' Autres valeurs. Debug.Print "Non compris entre 1 et 10" End Select
Les structures Dans un tableau, tous les constituants sont du même type. Ce n'est pas le cas des structures, qui sont des variables composées de plusieurs variables de types différents. Chaque champ n'est plus désigné par un numéro comme dans un tableau, mais par un identificateur.
Les structures Type fiche nom As String * 20 Nom de la structure /* Structure globale dans la mémoire VIVE*/ Type fiche nom As String * 20 prenom As String * 20 age As Byte End Type Nom de la structure Dim etudiant as fiche Etudiant.nom=« toto » Etudiant.prenom=« titi » Etudiant.age=50 Dim etud(20) as fiche etud(0).nom="AIMAR" etud(0).prenom="Jean" etud(0).age=10