vba et excel

25
VBA et Excel Par Fabrice Pasquier Cours III

Upload: ewa

Post on 19-Jan-2016

157 views

Category:

Documents


12 download

DESCRIPTION

VBA et Excel. Par Fabrice Pasquier Cours III. Rappels: é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 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: VBA et Excel

VBA et Excel

Par Fabrice Pasquier

Cours III

Page 2: VBA et Excel

Rappels: é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

Page 3: VBA et Excel

Rappels: 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 =…

Page 4: VBA et Excel

Mé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

Page 5: VBA et Excel

Exemples 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

Page 6: VBA et Excel

Inté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

Page 7: VBA et Excel

Génération automatique de code

Bonne idée pour le formatage des cellules Outils -> Macro -> 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é

Page 8: VBA et Excel

Fonctions (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")

Page 9: VBA et Excel

Fonctions

Exemple:Public Sub prog1()

Dim v1 As Integerv1 = somme(3, 5, 7)MsgBox v1

End Sub

Public Function somme (op1 As Integer, op2 As Integer, op2 As Integer) As Integersomme = op1 + op2 + op3

End Function

Page 10: VBA et Excel

Conversion de type

Utilisation d'une variable dans un autre context

Une variable définie comme String contient un nombre -> 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)

Page 11: VBA et Excel

Exemple 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

Page 12: VBA et Excel

Gestion des erreurs (1)

En cas d'erreur soupçonnée, on peut préparer Visual Basic à entreprendre une action

2 types de gestion:1. On Error Resume Next

– Permet de sauter la ligne qui crée le problème

2. 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

Page 13: VBA et Excel

Gestion 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

Page 14: VBA et Excel

Gestion des erreurs (3)

ExemplePublic Sub prog1()

Dim v1 As Integer, v2 As IntegerOn Error Goto gesterr1v1 = InputBox("Enter votre âge:")v2 = v1 + 15On Error Goto 0

Exit Subgesterr1:

MsgBox "L'âge n'est pas correct.", vbCritical + vbOKOnlyEnd Sub

Exemple

Page 15: VBA et Excel

Identation des programmes

Public Sub prog1()Dim i As Integer, j As IntegerFor i = 0 To 9

For j = 0 To 10MsgBox i

Next jNext i

End Sub

Non obligatoire Rend lisible le programme Identer après:

– If– While, For– Function– Sub– Select Case

Page 16: VBA et Excel

Commentaires

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, …..

Page 17: VBA et Excel

Utilisation 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

Page 18: VBA et Excel

Dé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)

Page 19: VBA et Excel

Dé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

Page 20: VBA et Excel

Dé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

Page 21: VBA et Excel

Démarrage d'un programme à l'ouverture du fichier Excel (2)

Double-clique

Page 22: VBA et Excel

Démarrage d'un programme à l'ouverture du fichier Excel (3)

Page 23: VBA et Excel

Accè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

Page 24: VBA et Excel

Accès au système de fichiers (2)

Syntaxe pour la lecture d'un 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

Fermeture du fichier

Lecture d'une ligne du fichier

Détection de la fin du fichier

No du fichierEn lecture

Page 25: VBA et Excel

Accès au système de fichiers (3)

Syntaxe pour l'écriture d'un fichier:

Public Sub ecrirefichier()

Dim liste As Integerliste = 0Open "cible.txt" For Output As #1Do While liste < 100

liste = liste + 1Print #1, liste

LoopClose #1

End Sub

En écriture

Ecrit une ligne dans le fichier