Vba et excel
Download
1 / 25

VBA et Excel - PowerPoint PPT Presentation


  • 123 Views
  • Uploaded on

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

PowerPoint Slideshow about ' VBA et Excel' - ewa


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

VBA et Excel

Par Fabrice Pasquier

Cours III


Rappels criture dans une cellule
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
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
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
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
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
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
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
Fonctions

  • Exemple:

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

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


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)

Conversion de type


Exemple de conversion
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
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 (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
Gestion des erreurs (3)

  • Exemple

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

Exemple


Identation des programmes

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

Identation des programmes

  • Non obligatoire

  • Rend lisible le programme

  • Identer après:

    • If

    • While, For

    • Function

    • Sub

    • Select Case


Commentaires
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
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
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
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
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




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

  • 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
Accès au système de fichiers (2) (3)

  • 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


Acc s au syst me de fichiers 3

Public Sub ecrirefichier() (3)

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