Plan À faire Retour sur les exercices Gestion d’erreur Dialogues et formulaires Boîtes de dialogue intégrées Saisie de plusieurs valeurs Barre de progression Objets et événements Excel Conseils de programmation Données externes Access Règles à suivre Laboratoire
Retour sur les exercices Un bon programme… Fait toujours ce qui est prévu. Ne fait jamais ce qui n'est pas prévu. Est facile à utiliser. Est facile (peu coûteux) à modifier. Boucle de recherche: plage et test de fin Pourquoi ne pas typer les paramètres de fonction
Retour sur les exercices Une macro Excel qui crée un tableau VBA contenant une matrice symétrique de nombres aléatoires entre 1 et 100, puis en copie le contenu dans une plage Excel
Impôts Programmer trois fonctions fnImpotProv(montant), fnImpotFed(montant) et fnImpot(montant) qui calculent l’impôt:
Récapitulation Variables ou objets Déclarations Programme ou fonction Avantages Inconvénients Programme ou fonction Instructions d’assignation Instructions de contrôle Branchement Boucle Compteur Accumulateur Sortie de boucle Collections D’objets De variables Indexage
Gestion d’erreur Les erreurs qu’on prévoit Les erreurs imprévues ON ERROR GOTO …
Dialogues et formulaires Boîtes de dialogue: MsgBox InputBox Feuilles et cellules Excel Entrée Sortie Imprimante
Obtenir plusieurs paramètres Un InputBox par paramètre Un seul InputBox et module d’analyse de chaîne Formulaire simple Formulaires Propriétés: Name Caption ShowModal Enabled Ordre de tabulation Textbox.value (type?) Où mettre le code? Procédure événementielle Voir S05 Formulaires
Barre de progression Technique 1: le formulaire Voir S05 barre progression Technique 1: le formulaire Technique 2: la barre d’état
Objets et événements Excel
Générateur de nombres aléatoires Rôle de Randomize Où l’utiliser Distribution uniforme entre 0 et 1: n = Rnd Distribution uniforme entre min et max: n=((Max - Min + 1) * Rnd + Min)
Nombres aléatoires selon une loi Normale(0,1) Function fnRandN() 'Auteur Pierre Bouvier, modifiée par Michel Berthiaume ‘Retourner des nombres aléatoires selon une loi N(0,1) 'Algorithme de Box-Muller Const Pi As Double = 3,1415926535897932 fnRandN = Cos(2 * Pi * Rnd()) * Sqr(-2 * Log(Rnd())) End Function
Poisson: Function fnRandPoisson(lambda) 'Auteur: antoine.jacquier@essec.fr, modifiée par Michel Berthiaume 'Retourner un nombre aléatoire utilisant la distribution de Poisson Dim N As Long Dim dTemp As Double If Not IsNumeric(lambda) Then fnRandPoisson = "#Erreur paramètre invalide#" Exit Function End If dTemp = Rnd() N = 1 Do While (dTemp > Exp(-lambda)) N = N + 1 dTemp = dTemp * Rnd() Loop fnRandPoisson = N - 1 End Function
Exponentielle: Function fnRandExponentielle(lambda) 'Auteur: antoine.jacquier@essec.fr, modifiée par Michel Berthiaume 'Retourner un nombre aléatoire utilisant la distribution exponentielle If Not IsNumeric(lambda) Then fnRandExponentielle = "#Erreur paramètre invalide#" Exit Function End If fnRandExponentielle = -Log(Rnd()) / lambda End Function
Gamma: Public Function fnRandGamma(alpha, beta) 'Auteur: antoine.jacquier@essec.fr 'Retourner un nombre aléatoire utilisant la distribution Gamme 'Utilise la fonction Excel LOI.GAMMA.INVERSE(probabilité;alpha;bêta) If Not IsNumeric(alpha) Or _ Not IsNumeric(beta) Then fnRandGamma = "#Erreur paramètre invalide#" Exit Function End If fnRandGamma = WorksheetFunction.GammaInv(Rnd(), alpha, beta) End Function
Importer des données Access Pourquoi les données seraient en Access? Copier/coller Programme d’importation Importation sélective Voir S05 Importation access.xls
Conseils de programmation Voir S05 VBA Règles à adopter
Laboratoire Programmes non terminés