• Aucun résultat trouvé

Cours VBA les concepts de base de la programmation pdf

N/A
N/A
Protected

Academic year: 2021

Partager "Cours VBA les concepts de base de la programmation pdf"

Copied!
50
0
0

Texte intégral

(1)

Visual Basic pour Applications

Les concepts de base de la programmation, 2`eme partie Romain Tavenard K´evin Huguenin Christophe Avenel Romain.Tavenard@irisa.fr Kevin.Huguenin@gmail.com Christophe.Avenel@irisa.fr 18 Septembre 2008

(2)

Plan

1 Quelques rappels

Que signifie ”programmer” ? Variables / constantes Tableaux Tests conditionnels 2 La programmation Tests conditionnels Boucles R´ecursivit´e Bonnes pratiques

3 Transcription en Visual Basic (VB)

Tests conditionnels Boucles

(3)

Plan

1 Quelques rappels

Que signifie ”programmer” ?

Variables / constantes Tableaux Tests conditionnels 2 La programmation Tests conditionnels Boucles R´ecursivit´e Bonnes pratiques

3 Transcription en Visual Basic (VB)

Tests conditionnels Boucles

(4)

Quelques rappels Que signifie ”programmer” ?

Que signifie ”programmer” ?

Cela consiste `a :

1 comprendre les actions `a ex´ecuter et les d´ecisions `a prendre ; 2 d´ecomposer une action en instructions ´el´ementaires ;

3 traduire ces instructions ´el´ementaires en langage compr´ehensible par

(5)

Plan

1 Quelques rappels

Que signifie ”programmer” ?

Variables / constantes Tableaux Tests conditionnels 2 La programmation Tests conditionnels Boucles R´ecursivit´e Bonnes pratiques

3 Transcription en Visual Basic (VB)

Tests conditionnels Boucles

(6)

Quelques rappels Variables / constantes

Variables / Constantes

• D´eclaration • Types de donn´ees • Affectation • Op´erations

(7)

Plan

1 Quelques rappels

Que signifie ”programmer” ? Variables / constantes Tableaux Tests conditionnels 2 La programmation Tests conditionnels Boucles R´ecursivit´e Bonnes pratiques

3 Transcription en Visual Basic (VB)

Tests conditionnels Boucles

(8)

Quelques rappels Tableaux

Tableaux

• Tableaux de taille constante (tableaux statiques)

Dim intTableau (10) as Integer intTableau(10) = 5

• Tableaux de taille variable (tableaux dynamiques)

Dim intTableau () as Integer Redim intTableau (10)

Redim Preserve intTableau (10)

• Attention aux indices en VBA : • `a la d´eclaration ;

(9)

Plan

1 Quelques rappels

Que signifie ”programmer” ? Variables / constantes Tableaux Tests conditionnels 2 La programmation Tests conditionnels Boucles R´ecursivit´e Bonnes pratiques

3 Transcription en Visual Basic (VB)

Tests conditionnels Boucles

(10)

Quelques rappels Tests conditionnels

Test ”Si. . .Alors”

• En pseudo-code : si condition alors instruction1 [...] instructionN fin si • En VB : If condition Then instruction1 [...] instructionN End If

(11)

Test ”Si. . .Alors. . .Sinon” # 1

• En pseudo-code : si condition alors instruction1 [...] instructionN sinon instructionAlternative1 [...] instructionAlternativeN fin si

(12)

Quelques rappels Tests conditionnels

Test ”Si. . .Alors. . .Sinon” # 2

• En VB : If condition Then instruction1 [...] instructionN Else instructionAlternative1 [...] instructionAlternativeN End If

(13)

Plan

1 Quelques rappels

Que signifie ”programmer” ? Variables / constantes Tableaux Tests conditionnels 2 La programmation Tests conditionnels Boucles R´ecursivit´e Bonnes pratiques

3 Transcription en Visual Basic (VB)

Tests conditionnels Boucles

(14)

La programmation Tests conditionnels

Combinaison de conditions

Une condition, telle que (intAge > 20) est un bool´een !

On peut alors combiner les conditions `a l’aide des op´erateurs Ou, Et ou Non.

(15)

Exemples de combinaison de conditions

• Tester si la variable intAge est comprise entre les valeurs 12 et 25

incluses :

si ( ( intAge >= 12 ) et ( intAge <= 25 ) ) alors [...]

fin si

• Tester si la variable intAge est comprise en dehors de l’intervalle

[12,25] :

si ( ( intAge < 12 ) ou ( intAge > 25 ) ) alors [...]

(16)

La programmation Tests conditionnels

Utilisation de ”cas”

Utile si l’on veut tester toutes les valeurs possibles d’une variable. selection nomDeLaVariable cas valeur1: listeInstructions1 fin cas cas valeur2: listeInstructions2 fin cas [...] defaut: listeInstructionsParDefaut fin selection

(17)

Exemple de cas

Tester le mois stock´e dans la variable intMois : selection intMois cas 1: strSaison = "Hiver" fin cas [...] cas 12: strSaison = "Automne-Hiver" fin cas defaut: strSaison = "" fin selection

(18)

La programmation Boucles

Plan

1 Quelques rappels

Que signifie ”programmer” ? Variables / constantes Tableaux Tests conditionnels 2 La programmation Tests conditionnels Boucles R´ecursivit´e Bonnes pratiques

3 Transcription en Visual Basic (VB)

Tests conditionnels Boucles

(19)

Principe des boucles

But de la programmation : automatisation de tˆaches. Exemple : remplir les cases vides d’un tableau Excel.

⇒ On souhaite appliquer une mˆeme suite d’instructions `a chaque case du tableau.

(20)

La programmation Boucles

Boucle ”tant que”

Une boucle ”tant que” (boucle while) est d´efinie par :

(21)

Exemple de boucle ”tant que”

capital = 1000

tant que capital < 2000 capital = capital * 1.25 fin tant que

(22)

La programmation Boucles

Boucle ”pour”

Une boucle ”pour” (boucle for) est d´efinie par :

• un indice de boucle ;

• une valeur initiale pour cet indice ; • une valeur finale pour cet indice ; • un pas.

(23)

Exemple de boucle ”pour”

pour i parcourant les indices du tableau t si t(i) = "" alors

t(i) = 0 fin si fin pour

(24)

La programmation R´ecursivit´e

Plan

1 Quelques rappels

Que signifie ”programmer” ? Variables / constantes Tableaux Tests conditionnels 2 La programmation Tests conditionnels Boucles R´ecursivit´e Bonnes pratiques

3 Transcription en Visual Basic (VB)

Tests conditionnels Boucles

(25)

Notion de proc´edure

Une proc´edure c’est :

• un ensemble d’instructions ;

(26)

La programmation R´ecursivit´e

Exemple d’appel de proc´edure

procedure afficheSomme (Entier a, Entier b) afficher (a+b)

fin procedure procedure Main ()

afficheSomme(12, 14) fin procedure

(27)

Notion de fonction

Une fonction c’est :

• un ensemble d’instructions ;

• qui peut prendre une ou plusieurs valeur(s) en param`etre ; • et qui peut retourner une valeur.

(28)

La programmation R´ecursivit´e

Exemple d’appel de fonction

fonction calculeSomme (Entier a, Entier b) retourner (a+b)

fin fonction procedure Main ()

somme = calculeSomme(12, 14) fin procedure

(29)

Principe de r´ecursivit´e

Un appel de fonction est dit r´ecursif si la fonction qu’on appelle est celle depuis laquelle l’appel est effectu´e.

⇒ int´erˆet : calcul de suites de la forme u

(30)

La programmation R´ecursivit´e

Exemple du principe de r´ecursivit´e

Calcul de factorielle :

fonction factorielle (Entier a) si a = 1 alors retourner 1 sinon retourner a * factorielle ( a - 1 ) fin si fin fonction procedure Main () afficher factorielle (5) fin procedure

(31)

Plan

1 Quelques rappels

Que signifie ”programmer” ? Variables / constantes Tableaux Tests conditionnels 2 La programmation Tests conditionnels Boucles R´ecursivit´e Bonnes pratiques

3 Transcription en Visual Basic (VB)

Tests conditionnels Boucles

(32)

La programmation Bonnes pratiques

Rappel des bonnes pratiques d´ej`a ´enonc´ees

Voici la premi`ere liste de bonnes pratiques ´enonc´ee la semaine derni`ere :

• utiliser des noms de variables explicites ; • utiliser, lorsque c’est adapt´e, des constantes ; • commenter son code.

(33)

Un peu plus de bonnes pratiques

Nouys pouvons y ajouter deux nouvelles bonnes pratiques li´ees `a ce que nous avons appris :

• indenter son code ;

(34)

La programmation Bonnes pratiques

Indentation du code

Indenter son code c’est le d´ecaler d’un ”cran” vers la droite `a chaque :

• entr´ee dans une boucle ;

• entr´ee dans une fonction/proc´edure ; • entr´ee dans un test conditionnel.

(35)

Exemple d’indentation du code

fonction nettoyerTableau (tableau t)

pour i parcourant les indices du tableau t si t(i) == "" alors t(i) = 0 fin si fin pour retourner t fin fonction

(36)

La programmation Bonnes pratiques

Organisation au sein des fonctions et proc´edures

Pour mieux se rep´erer au sein des fonctions (respectivement proc´edures), il est pr´ef´erable de d´efinir les variables et constantes utilis´ees en d´ebut de fonction (respectivement proc´edure).

(37)

Plan

1 Quelques rappels

Que signifie ”programmer” ? Variables / constantes Tableaux Tests conditionnels 2 La programmation Tests conditionnels Boucles R´ecursivit´e Bonnes pratiques

3 Transcription en Visual Basic (VB)

Tests conditionnels

Boucles R´ecursivit´e

(38)

Transcription en Visual Basic (VB) Tests conditionnels

If. . .Then. . .End If

If ( ( intAge >= 12 ) And ( intAge <= 25 ) ) Then doubleReducSNCF = 0.5

(39)

If. . .Then. . .Else. . .End If

If ( ( intAge >= 12 ) And ( intAge <= 25 ) ) Then doubleReducSNCF = 0.5

Else

doubleReducSNCF = 0 End If

(40)

Transcription en Visual Basic (VB) Tests conditionnels

If. . .Then. . .Else If. . .Else. . .End If

If ( ( intAge >= 12 ) And ( intAge <= 25 ) ) Then doubleReducSNCF = 0.5

Else If ( intAge >= 60 ) Then doubleReducSNCF = 0.25 Else

doubleReducSNCF = 0 End If

(41)

Select Case

Select Case intMois Case 1: strSaison = "Hiver" [...] Case 12: strSaison = "Automne-Hiver" Case Else: strSaison = "" End Select

(42)

Transcription en Visual Basic (VB) Boucles

Plan

1 Quelques rappels

Que signifie ”programmer” ? Variables / constantes Tableaux Tests conditionnels 2 La programmation Tests conditionnels Boucles R´ecursivit´e Bonnes pratiques

3 Transcription en Visual Basic (VB)

Tests conditionnels

(43)

Boucle for

Dim t (10) As Integer

For i=LBound(t) to UBound(t) t(i) = t(i) * 2

(44)

Transcription en Visual Basic (VB) Boucles

Boucle while

capital = 1000 Do While capital < 2000 capital = capital * 1.25 Loop

(45)

Plan

1 Quelques rappels

Que signifie ”programmer” ? Variables / constantes Tableaux Tests conditionnels 2 La programmation Tests conditionnels Boucles R´ecursivit´e Bonnes pratiques

3 Transcription en Visual Basic (VB)

Tests conditionnels Boucles

(46)

Transcription en Visual Basic (VB) R´ecursivit´e

D´eclaration et appel de proc´edure

Sub afficheSomme (a As Integer, b As Integer) Call MsgBox ( Prompt:=a+b, Buttons:=vbOKOnly, _

Title:="afficheSomme") End Sub Sub Main () Call afficheSomme(a:=12, b:=14) End Sub Sub Main () afficheSomme 12, 14 End Sub

(47)

D´eclaration et appel de fonction

Function calculeSomme(a As Integer, b As Integer) _ As Integer calculeSomme = a + b End Function Sub Main () x = calculeSomme(a:=12,b:=14) End Sub

(48)

Transcription en Visual Basic (VB) R´ecursivit´e

Proc´edures / Fonctions – Pr´ecision

Deux fa¸cons possibles de passer un argument `a une fonction / proc´edure :

• par valeur : ByVal ;

(49)

Appels r´ecursifs

Function factorielle(a As Integer) As Integer If (a = 1) Then factorielle = 1 Else factorielle = a * factorielle(a - 1) End If End Function Sub Main() x = factorielle(a:=3) End Sub

(50)

O`u t´el´echarger ce cours ?

O`u t´el´echarger ce cours ?

`

A l’adresse suivante :

http ://www.irisa.fr/texmex/people/tavenard/ Rubrique ”Enseignement”

Références

Documents relatifs

Cette découverte est compatible avec la théorie de la dissonance cognitive de Leon Festinger qui avait repéré trois grandes façons de résoudre des contradictions entre deux

by an affine form whose behavior is controlled by the mean and the variance of the noise source. Then, noise source expressions are propagated throughout the system thanks to an

Three objectives were de- fined: (i) to clearly identify roughness parameters that allow raised grain to be objectively characterised on beech and oak wood surfaces finished with

Je profite de la publication de l’alphabet dual de cette même roche pour publier également l’avancement de cet alphabet non dual, bien que l’on ne puisse donner

Crédits photos : Joan Ferrer i Jané (photos -notées Ph- en fin d’article).. Au cours des cinq dernières années nous avons incorporé dans le corpus cinq nouvelles roches avec

D Tableau 1: Classification des différentes émotions positives 13 AVOIR AVOIR FAIT FAIRE ÊTRE ÊTRE AVEC Plaisir Satisfaction Enjoyment Joie Fun (Csilcszentmihalyi, 1990; (Podilchak,

The derivation of the image Jacobian for Method 1 is based on simple point features in 3D and distances to the projection of these points in 2D.. The velocity field is defined from

Artiste, théoricien de l'art, poète, Bill Reid a contribué à faire renaître la production plastique de la côte Nord-Ouest et à créer les conditions d'un marché