présentation rapide de vba
DESCRIPTION
Présentation rapide de VBA. 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. Caractéristique de VBA. - PowerPoint PPT PresentationTRANSCRIPT
1
Présentation rapide de VBA
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.
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.
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.
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.
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
7
Appel de Visual Basic Editor dans Excel
8
Faire apparaître le UserForm
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 :
10
Boîte à outils
Utiliser l’icône ou affichage/boîte à outils
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
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
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
14
Modification des propriétés d’un bouton
Dans Apparence :-Caption -> Calculer-Name -> CommandButtonCalculer
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
16
Inserer un bouton dans la feuille pour afficher Userform
17
Ajouter le code
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
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
20
Autre Exemple : avec excel
• Comment sélectionner une donnée à partir d’une liste et la recopier dans une ligne d’un tableau.
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
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
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
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
25
Exemple
Private Sub CommandButton1_Click()
MsgBox "attention aux entrées",0+64,"conversion"
End Sub
0
64
Ok
i
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
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
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.
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
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
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
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
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
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).
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.
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.
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
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.
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
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
41
Machine à calculer
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
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
44
TD : Création d’un agenda
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