Vba et excel
Download
1 / 25

VBA et Excel - PowerPoint PPT Presentation


  • 110 Views
  • Uploaded on
  • Presentation posted in: General

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

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha

Download Presentation

VBA et Excel

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


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

    • Worksheets("classeur.xls").Range("A1").Value = 12


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


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


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


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


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é


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 Functionnom_fonct (variable As String) As Integer--- instructionsEnd Function

  • Appel:

    • a = nom_fonct ("salut")


Fonctions

  • Exemple:

Public Sub prog1()Dim v1 As Integerv1 = somme(3, 5, 7)MsgBox v1End Sub

PublicFunctionsomme (op1 As Integer, op2 As Integer, op2 As Integer) As Integersomme = op1 + op2 + op3EndFunction


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)

Conversion de type


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


Gestion 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


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


Gestion des erreurs (3)

  • Exemple

Public Sub prog1()Dim v1 As Integer, v2 As IntegerOn Error Goto gesterr1v1 = InputBox("Enter votre âge:")v2 = v1 + 15On Error Goto 0Exit Subgesterr1:MsgBox "L'âge n'est pas correct.", vbCritical + vbOKOnlyEnd Sub

Exemple


Public Sub prog1()Dim i As Integer, j As IntegerFor i = 0 To 9For j = 0 To 10MsgBox iNext jNext iEnd Sub

Identation des programmes

  • Non obligatoire

  • Rend lisible le programme

  • Identer après:

    • If

    • While, For

    • Function

    • Sub

    • Select Case


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


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


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)


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


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


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

Double-clique


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


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


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


Public Sub ecrirefichier()

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

End Sub

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

  • Syntaxe pour l'écriture d'un fichier:

En écriture

Ecrit une ligne dans le fichier


ad
  • Login