Title: VBA et Excel
1VBA et Excel
- Par Fabrice Pasquier
- Cours III
2Rappels écriture dans une cellule
- Plusieurs raccourcis possibles
- Sheets(1).Range("A1").Value 12
- Sheets("Feuil1").Range("A1").Value 12
- Range("A1").Value 12
- Worksheets(1). Range("A1").Value 12
- Worksheets("classeur.xls").Range("A1").Value 12
3Rappels lecture d'une une cellule
- Dim a As Integera Sheets(1).Range("A1").Value
- Cette syntaxe permet de prendre le contenu de la
cellule A1 de la 1ère feuille de calculs et la
stocker dans la variable a - Equivalence
- a Sheets("Feuil1").Range("A1").Value
- a
4Méthodes et propriétés
- Chaque objet (Range, Worksheet) possède une liste
de propriétés et de méthodes - Une propriété est plutôt passive
- Une méthode est active, comme une fonction
- Pour simplifier méthode fonction
5Exemples de méthodes et propriétés
- L'objet Range possède les méthodes suivantes
- Activate, AddComment, AdvancedFilter, ApplyNames,
, AutoFit, Clear, ClearContents, CheckSpelling,
- Les objets de la collection Sheets possède
- Delete, Select (méthodes)
- Visible, Creator, Count
6Intégration suite
- On peut maintenant faire des boucles afin de
compléter des cellules, ou pour les lire - En fonction de certaines valeurs, on effectue
telles ou telles opérations
7Génération automatique de code
- Bonne idée pour le formatage des cellules
- Outils -gt Macro -gt Nouvelle macro
- Spécifier le nom du programme (macro)
- Opérer des actions dans Excel
- Stopper l'enregisteur
- Se rendre dans l'éditeur VB pour modifier ou
adapter le code généré
8Fonctions (function) dans VB
- Dans un programme, cela peut-être utile de
séparer les actions essentielles - On crée des fonctions qui sont appelées par la
suite dans le programme principal - Syntaxe
- Public Function nom_fonct (variable As String) As
Integer --- instructionsEnd Function - Appel
- a nom_fonct ("salut")
9Fonctions
Public Sub prog1() Dim v1 As Integer v1
somme(3, 5, 7) MsgBox v1End Sub Public
Function somme (op1 As Integer, op2 As Integer,
op2 As Integer) As Integer somme op1 op2
op3End Function
10Conversion de type
- Utilisation d'une variable dans un autre context
- Une variable définie comme String contient un
nombre -gt Cint("expression") - Souvent implicite
- CBool(expression)
- CByte(expression)
- CCur(expression)
- CDate(expression)
- CDbl(expression)
- CDec(expression)
- CInt(expression)
- CLng(expression)
- CSng(expression)
- CStr(expression)
- CVar(expression)
11Exemple de conversion
Public Sub prog1() Dim special As String, age As
Integer, d As Date, val As Double special
"234" age CInt(special) d
CDate("12.04.2003") val CDbl("324.1245454")End
Sub
12Gestion des erreurs (1)
- En cas d'erreur soupçonnée, on peut préparer
Visual Basic à entreprendre une action - 2 types de gestion
- On Error Resume Next
- Permet de sauter la ligne qui crée le problème
- On Error Goto qqpart
- Permet de sauter à un endroit spécifique du
programme - On doit arrêter la détection des erreurs par
- On Error Goto 0
13Gestion des erreurs (2)
- Gestion des erreurs importantes quand
interraction avec utilisateur - A utiliser le moins possible
- Ralentit beaucoup le programme
- A insérer uniquement quand tout le reste
fonctionne
14Gestion des erreurs (3)
Public Sub prog1() Dim v1 As Integer, v2 As
Integer On Error Goto gesterr1 v1
InputBox("Enter votre âge") v2 v1 15 On
Error Goto 0Exit Subgesterr1 MsgBox "L'âge
n'est pas correct.", vbCritical vbOKOnly End
Sub
Exemple
15Identation des programmes
- Non obligatoire
- Rend lisible le programme
- Identer après
- If
- While, For
- Function
- Sub
- Select Case
16Commentaires
- Ajouter le plus de commentaires possibles dans un
programme - Si possible, petit commentaire à côté de chaque
variable déclarée - Commenter chaque nouvelle fonction
- 1 commentaire un moins toutes les 10 lignes
- Syntaxe
- Rem commentaire commentaire, ..
- ' commentaire commentaire, ..
17Utilisation de l'aide de MS Excel
- Toutes les fonctions sont bien documentées dans
l'aide Visual Basic pour Excel - Dans Office 97, s'assurer que l'aide est bien
installée. Pas fait pas défaut. Nécessite le CD
d'installation - On presse sur F1 en ayant sélectionner la
fonction qui pose problème
18Débogage
- En déhors des erreurs de syntaxe, il y a les
erreurs de programmation plus subtiles - Index de tableau
- Variables non initialisées
- Comment s'y prendre ?
- Utiliser le mode pas à pas (Touche F8)
- Mettre beaucoup de messages (MsgBox) dans le
programme, afin de bien vérifier le contenu des
variables - L'expérience est constructive
- Utiliser des points d'arrêt (Touche F9 pour
ajouter et enlever)
19Démarrage d'un programme après une touche
- Dans certain cas, il est utile s'associer des
programmes à des touches du clavier. - On appuie sur la touche 8 et un programme est
lancé. - Application.OnKey "1", "test2"
- Démarre le programme test2 lorsque la touche 1
est frappé - Application.OnKey "1", ""
- Ne fait rien lorsqu'on appuie sur la touche 1
- Application.OnKey "1"
- Rend à la touche sa fonction de base
20Démarrage d'un programme à l'ouverture du fichier
Excel (1)
- Dans certains cas, il est nécessaire de démarrer
un programme quand certaines actions se passent. - Ouverture du classeur Excel
- Changement de feuille de calculs
- Fermeture du classeur
21Démarrage d'un programme à l'ouverture du fichier
Excel (2)
Double-clique
22Démarrage d'un programme à l'ouverture du fichier
Excel (3)
23Accès au système de fichiers (1)
- Nous verrons
- Lecture et écriture de fichiers texte
- Autre possibilités (un peu compliqué !)
- Lecture et écriture de fichiers binaires
- En Visual Basic, on peut
- Créer des fichiers
- Compléter des fichiers
- Effacer des fichiers
- Lire des fichiers
- Créer et supprimer des répertoires
24Accès au système de fichiers (2)
- Syntaxe pour la lecture d'un fichier
En lecture
No du fichier
Dim TextLine as String Open "fichier.txt" For
Input As 1 Do While Not EOF(1) Line Input 1,
TextLine MsgBox TextLine Loop Close 1
Ouverture du fichier
Détection de la fin du fichier
Lecture d'une ligne du fichier
Fermeture du fichier
25Accès au système de fichiers (3)
- Syntaxe pour l'écriture d'un fichier
En écriture
Ecrit une ligne dans le fichier