1 présentation rapide de vba. 2 objectifs lobjectif est de découvrir comment modifier lergonomie...

45
1 Présentation rapide de VBA

Upload: pascaline-peltier

Post on 03-Apr-2015

116 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: 1 Présentation rapide de VBA. 2 Objectifs Lobjectif est de découvrir comment modifier lergonomie ou le fonctionnement dune application, voire de lenrichir

1

Présentation rapide de VBA

Page 2: 1 Présentation rapide de VBA. 2 Objectifs Lobjectif est de découvrir comment modifier lergonomie ou le fonctionnement dune application, voire de lenrichir

2

Objectifs

L’objectif est de découvrir comment modifier l’ergonomie ou le fonctionnement d’une application, voire de l’enrichir de nouvelles fonctionnalités.

Ce cours n’est qu’une introduction.

Page 3: 1 Présentation rapide de VBA. 2 Objectifs Lobjectif est de découvrir comment modifier lergonomie ou le fonctionnement dune application, voire de lenrichir

3

Caractéristique de VBA

• VBA est un outil de développement orienté objet.– Les objets sont les éléments de votre application VBA et de ses

documents. – Les objets Excel comprennent les cellules, les plages de cellules,

les graphiques, les feuilles…

• Définition : – Un objet est un élément nommé ayant des

• Propriétés : paramètres que vous vérifier et modifier.• Méthodes : actions que l’objet est capable d’effectuer.• Événements : choses qui arrivent à l’objet, auxquelles celui-ci

peut répondre automatiquement par une action.

Page 4: 1 Présentation rapide de VBA. 2 Objectifs Lobjectif est de découvrir comment modifier lergonomie ou le fonctionnement dune application, voire de lenrichir

4

Programmation par événements

• Dans un langage traditionnel, vous pourriez écrire une application pour faire une tasse de café.

1. Remplir une bouilloire d’eau

2. Allumez le gaz

3. Mettez du café

4. Attendre ébullition

5. Versez eau

• Dans VB vous formuler les choses comme suit

1. Présenter du café, une bouilloire, du lait et une tasse à l’utilisateur

2. Laisser l’utilisateur faire son café

Vous fournissez les codes pour gérer les événements. Ici l’ordre des événements est laissé à la discrétion de l’utilisateur.

Page 5: 1 Présentation rapide de VBA. 2 Objectifs Lobjectif est de découvrir comment modifier lergonomie ou le fonctionnement dune application, voire de lenrichir

5

Exemple d’utilisation du langage VB

• Créer une commande permettant d’enregistrer une selection de texte dans un fichier séparé. (N’existe pas comme fonction de base dans Word)

• Travail : – Copier le texte sélectionné dans le presse papier, créer un

nouveau document, coller le texte, puis enregistrer et fermer.

• Objectif :– Associer à un bouton de commande l’ensemble de ces étapes.

Page 6: 1 Présentation rapide de VBA. 2 Objectifs Lobjectif est de découvrir comment modifier lergonomie ou le fonctionnement dune application, voire de lenrichir

6

Exemple de code

Public Sub denis()Selection.Range.Copy'copie la selction dans le presse papier

Documents.Add'Crée un nouveau doc

Selection.Range.Paste' copie presse papier dans new doc

Dialogs(wdDialogFileSaveAs).Show' affiche boite de dialogue enregistrer sous

ActiveDocument.Close'ferme le new doc

End Sub

Page 7: 1 Présentation rapide de VBA. 2 Objectifs Lobjectif est de découvrir comment modifier lergonomie ou le fonctionnement dune application, voire de lenrichir

7

Appel de Visual Basic Editor dans Excel

Page 8: 1 Présentation rapide de VBA. 2 Objectifs Lobjectif est de découvrir comment modifier lergonomie ou le fonctionnement dune application, voire de lenrichir

8

Faire apparaître le UserForm

Page 9: 1 Présentation rapide de VBA. 2 Objectifs Lobjectif est de découvrir comment modifier lergonomie ou le fonctionnement dune application, voire de lenrichir

9

Faire apparaître la fenêtre de propriétés

Affichage/fenêtre de propriétés ou F4 ou icône

Bouton de droite :

Page 10: 1 Présentation rapide de VBA. 2 Objectifs Lobjectif est de découvrir comment modifier lergonomie ou le fonctionnement dune application, voire de lenrichir

10

Boîte à outils

Utiliser l’icône ou affichage/boîte à outils

Page 11: 1 Présentation rapide de VBA. 2 Objectifs Lobjectif est de découvrir comment modifier lergonomie ou le fonctionnement dune application, voire de lenrichir

11

Le UserForm

Cette fenêtre présente les feuilles, les modules et tous les éléments qui constituent le projet

Cette fenêtre présente les feuilles, les modules et tous les éléments qui constituent le projet

Cette fenêtre donne accès aux propriétés d’un contrôle (taille, couleur, …).

Cette fenêtre donne accès aux propriétés d’un contrôle (taille, couleur, …).

Voici la boîte standard des composants prêts à être utilisés dans une feuille._ Option button_ TextBox_ Frame_ Label_ Command Button_ …

Voici la boîte standard des composants prêts à être utilisés dans une feuille._ Option button_ TextBox_ Frame_ Label_ Command Button_ …

La réalisation de la partie graphique d’un projet

La réalisation de la partie graphique d’un projet

Pour lancer l’exécutionPour lancer l’exécution

Page 12: 1 Présentation rapide de VBA. 2 Objectifs Lobjectif est de découvrir comment modifier lergonomie ou le fonctionnement dune application, voire de lenrichir

12

Création d’un convertisseur Dollar Euro

Travail à réaliser :

1. Créer l’interface

2. Associer aux boutons des actions en fonction des événements

Travail à réaliser :

1. Créer l’interface

2. Associer aux boutons des actions en fonction des événements

Page 13: 1 Présentation rapide de VBA. 2 Objectifs Lobjectif est de découvrir comment modifier lergonomie ou le fonctionnement dune application, voire de lenrichir

13

1 création de l’interface

Ajouter des contrôle à la UserForm

Vous pouvez modifier directement les propriétés de La Userform : Ex : Apparence/Caption = Convertion dollar Euro

Page 14: 1 Présentation rapide de VBA. 2 Objectifs Lobjectif est de découvrir comment modifier lergonomie ou le fonctionnement dune application, voire de lenrichir

14

Modification des propriétés d’un bouton

Dans Apparence :-Caption -> Calculer-Name -> CommandButtonCalculer

Page 15: 1 Présentation rapide de VBA. 2 Objectifs Lobjectif est de découvrir comment modifier lergonomie ou le fonctionnement dune application, voire de lenrichir

15

2 Création du code

Public Function DollarToEuro(valeur%) As Integer DollarToEuro = valeur %* 0.9End Function

Private Sub CommandButtonQuitter_Click() EndEnd Sub

quitter

Private Sub CommandButtonCalculer_Click() LbEuro.Caption = DollarToEuro(TxtDollard.Text)End Sub

Calculer

Aller dans : Affichage/code ou bouton/droite ou F7

Page 16: 1 Présentation rapide de VBA. 2 Objectifs Lobjectif est de découvrir comment modifier lergonomie ou le fonctionnement dune application, voire de lenrichir

16

Inserer un bouton dans la feuille pour afficher Userform

Page 17: 1 Présentation rapide de VBA. 2 Objectifs Lobjectif est de découvrir comment modifier lergonomie ou le fonctionnement dune application, voire de lenrichir

17

Ajouter le code

Page 18: 1 Présentation rapide de VBA. 2 Objectifs Lobjectif est de découvrir comment modifier lergonomie ou le fonctionnement dune application, voire de lenrichir

18

Autre exemple : Copier d’une liste à l’autre

Clear : La liste2 est vidée de son contenu

Init : Initialise la liste1 avec 20 éléments : Copie les données sélectionnées dans la liste1

Page 19: 1 Présentation rapide de VBA. 2 Objectifs Lobjectif est de découvrir comment modifier lergonomie ou le fonctionnement dune application, voire de lenrichir

19

Code

Private Sub CmdCopie_Click() ListBox2.Clear For i% = 0 To (ListBox1.ListCount - 1) If (ListBox1.Selected(i%) = True) Then ListBox2.AddItem ListBox1.List(i%) End If Next i%End Sub

>

Private Sub Cmdinit_Click() ListBox1.Clear For i% = 1 To 20 ListBox1.AddItem Trim$(Str(i%)) + "-donnée" Next i%End Sub

Init

Page 20: 1 Présentation rapide de VBA. 2 Objectifs Lobjectif est de découvrir comment modifier lergonomie ou le fonctionnement dune application, voire de lenrichir

20

Autre Exemple : avec excel

• Comment sélectionner une donnée à partir d’une liste et la recopier dans une ligne d’un tableau.

Page 21: 1 Présentation rapide de VBA. 2 Objectifs Lobjectif est de découvrir comment modifier lergonomie ou le fonctionnement dune application, voire de lenrichir

21

Autre Exemple : avec Excel

• Comment sélectionner une donnée à partir d’une liste et la recopier dans une ligne d’un tableau.

Private Sub CommandButton1_Click()ComboBox1.ClearFor i% = 1 To 10

ComboBox1.AddItem (Str(i%) + " data")Next i

End Sub

Private Sub CommandButton2_Click() Dim ind As Integer ind = ComboBox1.ListIndex Range("A" & ind + 1) = ComboBox1.List(ind)End Sub

Page 22: 1 Présentation rapide de VBA. 2 Objectifs Lobjectif est de découvrir comment modifier lergonomie ou le fonctionnement dune application, voire de lenrichir

22

Création de message d’avertissement

• Nous avons le choix entre procédure MsgBox et la fonction MsgBox• Msg utilise trois arguments :

1. La chaîne à afficher

2. Les boutons et les icônes

3. L’intitulé de la boîte d’affichage

1

2

3Exemple

Page 23: 1 Présentation rapide de VBA. 2 Objectifs Lobjectif est de découvrir comment modifier lergonomie ou le fonctionnement dune application, voire de lenrichir

23

Liste des constantes boutons

Nom VB Bouton aff Utilisé pour Valeur

VbOnly Ok Procédure 0

VbOnlycancel Ok, Annuler Fonction 1

VbAbortRetryIgnore Abandon,répéter, ignorer

Fonction 2

vbYesNoCancel Oui,Non, Annuler Fonction 3

VbYesNO Oui, non Fonction 4

VbRetryCancel Répéter,Annuler Fonction 5

Page 24: 1 Présentation rapide de VBA. 2 Objectifs Lobjectif est de découvrir comment modifier lergonomie ou le fonctionnement dune application, voire de lenrichir

24

Liste des constantes icônes

NomVB Icônes affichées Valeur

VbCritical Icône d’alerte 16

VbQuestion ? 32

VbExclamation ! 48

VbInformation Icône information 64

Page 25: 1 Présentation rapide de VBA. 2 Objectifs Lobjectif est de découvrir comment modifier lergonomie ou le fonctionnement dune application, voire de lenrichir

25

Exemple

Private Sub CommandButton1_Click()

MsgBox "attention aux entrées",0+64,"conversion"

End Sub

0

64

Ok

i

Page 26: 1 Présentation rapide de VBA. 2 Objectifs Lobjectif est de découvrir comment modifier lergonomie ou le fonctionnement dune application, voire de lenrichir

26

Valeur retournée

Nom VB Valeur Description

VbOK 1 OK

VbCancel 2 Annuler

VcAbort 3 Abandonner

VbRetry 4 Réessayer

VbIgnore 5 Ignorer

VbYes 6 Oui

VbNo 7 Non

Page 27: 1 Présentation rapide de VBA. 2 Objectifs Lobjectif est de découvrir comment modifier lergonomie ou le fonctionnement dune application, voire de lenrichir

27

Autre Exemple

Private Sub CommandButton1_Click()

Dim retour As Integer

retour = MsgBox("Etes-vous sûr de vouloir quitter?", 4 + 32 + vbDefaultButton2, "Fermeture")

If retour = 6 Then

End

End If

End Sub

Page 28: 1 Présentation rapide de VBA. 2 Objectifs Lobjectif est de découvrir comment modifier lergonomie ou le fonctionnement dune application, voire de lenrichir

28

Référence à des cellules et des plages

• Une des tâches courantes dans l'utilisation de Visual Basic consiste à spécifier une cellule ou une plage de cellules, puis d'y effectuer des actions comme saisir une formule ou modifier le format.

• Il existe une instruction permettant à la fois d'identifier la plage et de modifier une propriété ou d'appliquer une méthode.

• Un objet Range de Visual Basic peut être soit une seule cellule soit une plage de cellules.

Page 29: 1 Présentation rapide de VBA. 2 Objectifs Lobjectif est de découvrir comment modifier lergonomie ou le fonctionnement dune application, voire de lenrichir

29

Comment référencer des cellules ?

Référence Signification

Range("A1") Cellule A1

Range("A1:B5") Cellules A1 à B5

Range("C5:D9,G9:H16") Sélection multi-zones

Range("A:A") Colonne A

Range("1:1") Ligne 1

Range("A:C") Colonnes A à C

Range("1:5") Lignes 1 à 5

Range("1:1,3:3,8:8") Lignes 1, 3 et 8

Range("A:A,C:C,F:F") Colonnes A, C et F

Page 30: 1 Présentation rapide de VBA. 2 Objectifs Lobjectif est de découvrir comment modifier lergonomie ou le fonctionnement dune application, voire de lenrichir

30

Exemple

• La procédure Sub suivante montre comment affecter le style gras à la plage A1:D5 et lui affecter le texte « coucou »

Sub FormatRange() Workbooks("Book1").Sheets("Sheet1").

Range("A1:D5").Font.Bold = True

Workbooks("Book1").Sheets("Sheet1").

Range("A1:D5").Value= "Coucou"

End Sub

Page 31: 1 Présentation rapide de VBA. 2 Objectifs Lobjectif est de découvrir comment modifier lergonomie ou le fonctionnement dune application, voire de lenrichir

31

Référence à des cellules par le numéro d'index

• Vous pouvez utiliser la propriété Cells pour faire référence à une seule cellule à l'aide des numéros d'index de ligne et de colonne. Cette propriété renvoie un objet Range qui représente une seule cellule.

• La propriété Cells est efficace pour effectuer des boucles sur une plage de cellules car vous pouvez substituer des variables aux numéros d'index

Page 32: 1 Présentation rapide de VBA. 2 Objectifs Lobjectif est de découvrir comment modifier lergonomie ou le fonctionnement dune application, voire de lenrichir

32

Exemple

Sub EnterValue()

Worksheets("Feuil1").Cells(6, 1).Value = 10

End Sub

Sub CycleThrough()

Dim counter As Integer

For counter = 1 To 20 Worksheets("feuil1").Cells(counter, 3).Value = counter

Next counter

End Sub

Page 33: 1 Présentation rapide de VBA. 2 Objectifs Lobjectif est de découvrir comment modifier lergonomie ou le fonctionnement dune application, voire de lenrichir

33

Référence à des cellules à l'aide d'un objet Range

• Si vous affectez une variable objet à un objet Range, vous pouvez aisément manipuler la plage en utilisant le nom de la variable.

• La procédure suivante montre comment créer la variable objet maPlage puis l'affecter à la plage A1:D5 de la feuille Sheet1 du classeur actif.

• Les instructions suivantes modifient les propriétés de la plage en remplaçant l'objet Range par le nom de la variable.

Sub Random()

Dim myRange As Range

Set myRange = Worksheets("Sheet1").Range("A1:D5")

myRange.Formula = "=RAND()"

myRange.Font.Bold = True

End Sub

Page 34: 1 Présentation rapide de VBA. 2 Objectifs Lobjectif est de découvrir comment modifier lergonomie ou le fonctionnement dune application, voire de lenrichir

34

Syntaxe VisualBasic

Range("C23").Select

ActiveCell.FormulaR1C1 = "=RC[-2]+RC[-1]"

ActiveCell.FormulaR1C1 = "=RC[-5]+R23C2"

RiCj Référence absolueR[+-i]C[+-j] Par rapport à la cellule sélectionnée à droite (+)

ou à gauche (-) de i case(s) et en bas(+) ou en haut (-) de j case(s).

Page 35: 1 Présentation rapide de VBA. 2 Objectifs Lobjectif est de découvrir comment modifier lergonomie ou le fonctionnement dune application, voire de lenrichir

35

Exemple

Sub ref()

'

' ref Macro

' Macro enregistrée par DUPONT

'

Range("D23").Select

ActiveCell.FormulaR1C1 = "=R23C23+ R[-2]C"

Selection.AutoFill Destination:=Range("D23:D28"), Type:=xlFillDefault

End Sub

AutoFill exécute une recopie incrémentée sur les cellules de la plageSpécifiée. Destination   Objet Range obligatoire. Les cellules à remplir. La destination doit inclure la plage source.Type   Argument de type Variant facultatif. Spécifie le type de recopie incrémentée.

Page 36: 1 Présentation rapide de VBA. 2 Objectifs Lobjectif est de découvrir comment modifier lergonomie ou le fonctionnement dune application, voire de lenrichir

36

Sélection et activation de cellules

• Lorsque vous utilisez Microsoft Excel, vous sélectionnez généralement une ou plusieurs cellules puis exécutez une action telle que la mise en forme des cellules ou l'affectation d'une valeur à ces cellules.

• Avec Visual Basic, il n'est en général pas nécessaire de sélectionner les cellules avant de les modifier.

Page 37: 1 Présentation rapide de VBA. 2 Objectifs Lobjectif est de découvrir comment modifier lergonomie ou le fonctionnement dune application, voire de lenrichir

37

Exemple

• Si vous voulez entrer une formule dans la cellule D6 avec Visual Basic, il est inutile de sélectionner cette cellule.

• Renvoyez simplement l'objet Range puis affectez votre formule à la propriété Formula.

Sub EnterFormula()

Worksheets("Sheet1").Range("D6").Formula="=SUM(D2:D5)"

End Sub

Page 38: 1 Présentation rapide de VBA. 2 Objectifs Lobjectif est de découvrir comment modifier lergonomie ou le fonctionnement dune application, voire de lenrichir

38

Utilisation de la méthode Select

• La méthode Select active des feuilles et des objets dans des feuilles. • La propriété Selection renvoie un objet qui représente la sélection en

cours dans la feuille active du classeur actif. Avant d'utiliser la propriété Selection, vous devez activer un classeur, activer ou sélectionner une feuille, puis sélectionner une plage (ou un autre objet) à l'aide de la méthode Select.

• L'enregistreur de macro crée souvent des macros utilisant la méthode Select et la propriété Selection.

Page 39: 1 Présentation rapide de VBA. 2 Objectifs Lobjectif est de découvrir comment modifier lergonomie ou le fonctionnement dune application, voire de lenrichir

39

Exemple

Sub Macro1() Sheets("Sheet1").Select Range("A1").SelectActiveCell.FormulaR1C1 = "Name" Range("B1").Select ActiveCell.FormulaR1C1 = "Address" Range("A1:B1").Select Selection.Font.Bold = True

End Sub

Procedure équivalente : Sub Labels()

With Worksheets("Sheet1") .Range("A1") = "Name" .Range("B1") = "Address" .Range("A1:B1").Font.Bold = True

End With End Sub

Page 40: 1 Présentation rapide de VBA. 2 Objectifs Lobjectif est de découvrir comment modifier lergonomie ou le fonctionnement dune application, voire de lenrichir

40

Sélection de cellules sur la feuille de calcul active

• Si vous utilisez la méthode Select pour sélectionner des cellules, n'oubliez pas que Select ne fonctionne que sur la feuille de calcul active.

• Si vous lancez votre procédure Sub à partir du module, la méthode Select échoue à moins que votre procédure n'active la feuille de calcul avant d'utiliser la méthode Select sur une plage de cellules.

Sub CopyRow() Worksheets("Sheet1").Rows(1).Copy Worksheets("Sheet2").Select Worksheets("Sheet2").Rows(1).Select Worksheets("Sheet2").Paste

End Sub

Page 41: 1 Présentation rapide de VBA. 2 Objectifs Lobjectif est de découvrir comment modifier lergonomie ou le fonctionnement dune application, voire de lenrichir

41

Machine à calculer

Page 42: 1 Présentation rapide de VBA. 2 Objectifs Lobjectif est de découvrir comment modifier lergonomie ou le fonctionnement dune application, voire de lenrichir

42

Dim va As Integer

Dim vb As Integer

Private Sub CommandButton1_Click()

TextBox1.Text = TextBox1.Text & 1

End Sub

Private Sub CommandButton2_Click()

TextBox1.Text = TextBox1.Text & 2

End Sub

Page 43: 1 Présentation rapide de VBA. 2 Objectifs Lobjectif est de découvrir comment modifier lergonomie ou le fonctionnement dune application, voire de lenrichir

43

code

Private Sub CommandButton3_Click()TextBox1.Text = TextBox1.Text & 6End SubPrivate Sub CommandButton4_Click()va = TextBox1.TextTextBox1.Text = ""End SubPrivate Sub CommandButton5_Click()vb = TextBox1.Textva = va * vbTextBox1.Text = vaEnd SubPrivate Sub CommandButton6_Click()va = 0vb = 0TextBox1.Text = ""End Sub

Page 44: 1 Présentation rapide de VBA. 2 Objectifs Lobjectif est de découvrir comment modifier lergonomie ou le fonctionnement dune application, voire de lenrichir

44

TD : Création d’un agenda

Page 45: 1 Présentation rapide de VBA. 2 Objectifs Lobjectif est de découvrir comment modifier lergonomie ou le fonctionnement dune application, voire de lenrichir

45

code

Private Sub Calendar_Click()

UserForm1.Label1.Caption = Calendar.Value

Label3.Caption = Calendar.Value

End Sub

Private Sub CommandButton1_Click()

If CommandButton1.Caption = "CalVisible" Then

Calendar.Visible = True

CommandButton2.Visible = True

CommandButton1.Caption = "CalInvisible"

Else

Calendar.Visible = False

CommandButton2.Visible = False

CommandButton1.Caption = "CalVisible"

End If

End Sub

Private Sub CommandButton2_Click()

UserForm1.Show

End Sub