Professional Documents
Culture Documents
• Nous avons vu :
Excel 2000 et VBA – Définition : Un algorithme est une suite finie
d’instructions qui, étant donné des paramètres typés,
calcule une solution d’un problème donné
VB et VBA pour Excel : – Variables Nom
Conclusion, révisions et extensions – Constantes
Valeur
– Opérateurs, fonctions
– Expressions
Philippe Pasquier
– Une instruction : l’affectation
– Une méthode de programmation utilisant tout
ça : la programmation événementielle
– Un environnement de programmation (Visual
Studio 6)
IFT-20403-A Basic et Visual Basic 2 Philippe Pasquier, Octobre 2003
IFT-20403-A Basic et Visual Basic 3 Philippe Pasquier, Octobre 2003 IFT-20403-A Basic et Visual Basic 4 Philippe Pasquier, Octobre 2003
Les tableaux et VBA Objets Range comme tableaux de cellules
Sub tablo2() Sub Range1()
'déclaration des variables 'déclaration des variables locales
Dim mytab(1 To 5) As Integer Dim plagelocale As Range
Dim i As Integer 'initialisation
Set plagelocale = Worksheets(2).Range("A6:A16")
'initialisation du tableau 'accès aux éléments du Range comme à ceux d'un tableau
For i = 1 To 5
plagelocale(1).Value = 3
mytab(i) = i * i
plagelocale(2).Value = 4
Next i
plagelocale(3) = 8 'déconseillé
'corps de la procédure plagelocale(4) = 5
Worksheets(1).Range("A2").Value = "Moyenne : " 'indique le nombre d'éléments de l'objet Range manipulé
Worksheets("feuil1").Range("B2") = plagelocale(5) = plag.Count
Application.WorksheetFunction.Average(mytab)
End Sub End Sub
IFT-20403-A Basic et Visual Basic 5 Philippe Pasquier, Octobre 2003 IFT-20403-A Basic et Visual Basic 6 Philippe Pasquier, Octobre 2003
IFT-20403-A Basic et Visual Basic 7 Philippe Pasquier, Octobre 2003 IFT-20403-A Basic et Visual Basic 8 Philippe Pasquier, Octobre 2003
Notion de structure de contrôle Procédures et fonctions
Exemples d’utilisation de l’itération :
• Procédures :
i=exp2
– Sommes : i=exp1
– Une procédure est un ensemble d'instructions
résulat = 0 ‘élément neutre pour l’addition
qui participent à une même tâche.
For i=exp1 To exp2 [Public/Private][Static] Sub nom([liste_arguments])
résultat=résultat + exp(i) déclarations
Next i instructions
End Sub
i=exp2
– Produits : i=exp1 • Fonctions :
résulat = 1 ‘élément neutre pour la multiplication [Public/Private]Function Nom([liste_arguments])As type
For i=exp1 To exp2 déclarations
résultat = résultat * exp(i) instructions
Next i Nom = exp_du_bon_type
End Sub
IFT-20403-A Basic et Visual Basic 9 Philippe Pasquier, Octobre 2003 IFT-20403-A Basic et Visual Basic 10 Philippe Pasquier, Octobre 2003
IFT-20403-A Basic et Visual Basic 13 Philippe Pasquier, Octobre 2003 IFT-20403-A Basic et Visual Basic 14 Philippe Pasquier, Octobre 2003
IFT-20403-A Basic et Visual Basic 17 Philippe Pasquier, Octobre 2003 IFT-20403-A Basic et Visual Basic 18 Philippe Pasquier, Octobre 2003
Utiliser les procédures et fonctions VBA Utiliser les procédures et fonctions VBA
• Les fonctions VBA s’ajoutent aux fonctions
Excel pré-définies : • Il y a différentes manières de programmer une
– Exemple 1 : Fonction carré procédure ou fonction :
– Exemple 2 : Fonction MaPuiss – Lorsque rien ne le contre-indique, on peut utiliser les
– Exemple 3 : Fonction PrimeDeBase fonctions prédéfinies Excel :
• WorkSheetFunction
• Les procédures doivent être appelées de • .formula, .formulalocal, .formlaL1C1, …
manière spécifique : • Application.Evaluate
– Procédure = macro (on a vu pas mal de manières
d’appeler une macro au dernier cours : menu, • Directement dans la barre de formule
bouton de commande, bouton X, zone sensible – En écrivant le code détaillé du calcul lorsque l’on vous
d’élément graphique, …) indique de ne pas utiliser la classe WorkSheetFunction
– Exemple : exercice actuariel de Base • Exemples : sommeavecWorksheetFunction(),
• Procédures et fonctions peuvent être appelées sommeAvecFormula(), SommeCommeFonction,
à partir du code VBA, comme en VB SommeSansFormulaSansWorksheet()
IFT-20403-A Basic et Visual Basic 19 Philippe Pasquier, Octobre 2003 IFT-20403-A Basic et Visual Basic 20 Philippe Pasquier, Octobre 2003
Modèle Objet d’Excel - Extrait La programmation événementielle VBA
Application (Excel)
• Cela fonctionne comme en VB classique,
Workbooks (collection) Workbook (classeur) sauf que l’on peut utiliser les
Charts (graphique) évènements liés aux objets Excel
Worksheets (collection) Worksheet (feuille) • Un événement Excel déclenche la
procédure événementielle qui lui est
Range
associée, s’il y en a une.
Charts (graphique)
• Il faut sélectionner la fenêtre de code de
Styles l’élément auquel on souhaite associer le
Border traitement (Worksheet, Workbook, …)
WorkSheetFunction Pause….
puis déterminer l’événement à traiter
…
IFT-20403-A Basic et Visual Basic 21 Philippe Pasquier, Octobre 2003 IFT-20403-A Basic et Visual Basic 22 Philippe Pasquier, Octobre 2003
IFT-20403-A Basic et Visual Basic 23 Philippe Pasquier, Octobre 2003 IFT-20403-A Basic et Visual Basic 24 Philippe Pasquier, Octobre 2003
Événements de l’objet Workbook Événements de l’objet WorkSheet
• Activate : survient quand le classeur est • Activate : survient lorsque la feuille est activée
activé • Deactivate : survient lorsque la feuille est désactivée
• Deactivate : survient lorsque le classeur est • BeforeDoubleClic : survient lorsque l’utilisateur
désactivé double clic sur la feuille
• BeforeClose : avant la fermeture • BeforeRightClic : survient lorsque l’utilisateur fait un
clic droit dans la feuille
• BeforePrint : avant l’impression
• Calculate : survient après le recalcul de la feuille
• BeforeSave : avant la sauvegarde
• Change : survient lors de la modification d’une cellule
• NewSheet : création d’une nouvelle feuille de la feuille
• Open : ouverture du classeur • SelectionChange : changement de sélection sur la
• SheetSelectionChange : changement de feuille
sélection sur une des feuilles • …
• …
IFT-20403-A Basic et Visual Basic 25 Philippe Pasquier, Octobre 2003 IFT-20403-A Basic et Visual Basic 26 Philippe Pasquier, Octobre 2003
WorkSheetFunction …
IFT-20403-A Basic et Visual Basic 27 Philippe Pasquier, Octobre 2003 IFT-20403-A Basic et Visual Basic 28 Philippe Pasquier, Octobre 2003
Exécution et fermeture d’un formulaire Exécution et fermeture d’un formulaire
• Méthode Show, syntaxe : • Exemple :
– objetUserForm.Show Private Sub CmdAjouter_Click()
– Affiche l’objet formulaire spécifié Static i As Integer 'COMPTEUR STATIQUE initialisé à 0
• Instruction Load, syntaxe : i = i + 1 'incrémentation du compteur statique
– Load objetUserForm
Worksheets(3).Columns(1).Cells(i + 1).Value =
– Charge le formulaire sans l’afficher TxtNum.Value
• Méthode Hide, syntaxe : Worksheets(3).Columns(2).Cells(i + 1).Value =
– objetUserForm.Hide txtVal.Value
IFT-20403-A Basic et Visual Basic 29 Philippe Pasquier, Octobre 2003 IFT-20403-A Basic et Visual Basic 30 Philippe Pasquier, Octobre 2003
Extensions Extensions
IFT-20403-A Basic et Visual Basic 31 Philippe Pasquier, Octobre 2003 IFT-20403-A Basic et Visual Basic 32 Philippe Pasquier, Octobre 2003
Extensions Extensions - Internet
– Objet HyperLink permet d’insérrer des liens HTML
• Liens entre les applications : dans vos feuilles, …
– La technologie Automation ou – Requêtes sur Internet :
• Insérer un tableau provenant d’un site Internet
OLE[Object Link and Embedding] permet • Plages de données externes (bases de données Access ou
de manipuler les objets d’une application SQL, requêtes internet) : Objet QueryTable
à partir d’une autre – Export de fichiers internet :
• XML[Extended MarkUp Language ] : langage de description et
– Piloter Word, Access, Outlook avec VBA de représentation des données
ou piloter Word depuis Excel • HTML[Hyper Text MarkUp Language] : langage de
présentation des pages Web.
– Le protocole DDE[Dynamic Data • Méthode saveAs
Exchange] permet l’échange dynamique – Publication de pages Web : il est possible de créer et
de données entre applications Windows de publier (en statique ou dynamique) une page Web à
en mode Client Serveur partir d’un classeur, d’une feuille, d’une plage de
cellule, …
IFT-20403-A Basic et Visual Basic 33 Philippe Pasquier, Octobre 2003 IFT-20403-A Basic et Visual Basic 34 Philippe Pasquier, Octobre 2003