1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

114
1 INITIATION A LA PROGRAMMATION STRUCTUREE

Transcript of 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

Page 1: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

1

INITIATION A LA PROGRAMMATION

STRUCTUREE

Page 2: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

2

I. Introduction et définitions

Page 3: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

3

• Qu’est-ce qu’un programme ?

• Les règles de la programmation structurée

• Définitions

Initiation à la programmation structurée

Page 4: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

4

C ’est un ensemble de commandes

• écrites dans un langage de programmation,

• permettant de matérialiser un certain traitement, conformément à un cahier des charges.

• En programmation structurée son déroulement est séquentiel.

• Il peut contenir et utiliser des procédures et fonctions, qui sont elles-mêmes construites comme des programmes.

Qu’est-ce qu’un programme ?

Page 5: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

5

Elles concernent :

•la convivialité

•la modularité

•la lisibilité

•la programmation

Les quatre règles de la programmation structurée

Page 6: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

6

Pensez à soigner les interfaces destinés à l’utilisateur :

• ne posez pas de questions ambiguës

• aidez le, mais ne le sous-estimez pas

• informez le des possibilités contextuelles

• faites un effort de présentation des résultats

La convivialité

• donnez lui envie d’utiliser vos programmes

Page 7: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

7

On n ’écrit plus de gros programmes

Un programme doit être décomposé en petits modules, qu’on appelle des procédures ou fonctions :

• tous bien définis et individualisés,

• dont la longueur ne dépasse pas une page A4

Ceci facilite énormément la compréhension, la

maintenance, et l ’exécution du programme

La modularité

Page 8: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

8

Elle représente un effort initial indispensable à la mise au point puis à la maintenance des programmes

Il faut documenter le programme en ajoutant des commentaires judicieux pour en faciliter la compréhension rapide

La mise en page des instructions doit en faciliter leur compréhension en faisant ressortir visuellement leurs délimitations

La lisibilité des programmes

Page 9: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

9

On ne doit jamais personnaliser les programmes :

les noms de procédures, fonctions, variables, doivent évoquer sans ambiguïté leurs rôles respectifs, pour quiconque.

La lisibilité des programmes

Page 10: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

10

Exemple d ’un programme insupportable

Private Sub P1_AfterUpdate()If P1.Value <> "" Thenn = n + 1r = Val(P1.Value)If r = (nb1 * nb2) ThenA.ForeColor = 16711680A.Caption = "bravo"Else:e = e + 1A.ForeColor = 255A.Caption = "faux" & " : déja " & e & " erreurs"End IfEnd IfEnd Sub

Page 11: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

11

Le même programme : supportable

Private Sub Reponse_AfterUpdate() If reponse.Value <> "" Then nbfois = nbfois + 1 rep = Val(reponse.Value) If rep = (nb1 * nb2) Then bilan.ForeColor = 16711680 bilan.Caption = "bravo" Else: err = err + 1 bilan.ForeColor = 255 bilan.Caption = "faux" & " : déja " & err _

& " erreurs" End If End IfEnd Sub

Page 12: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

12

LA PROGRAMMATION OBJET

(POO)

Page 13: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

13

La Programmation Orientée Objet

Elle a été conçue pour pallier aux problèmes de

maintenance évolutive que pose la

programmation fonctionnelle descendante.

Nous n’aborderons en LO10 que quelques

notions de la POO, nécessaires à la

programmation en Visual Basic sous Excel.

Page 14: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

14

Contrairement à la programmation classique qui

sépare les données des programmes, la POO repose

sur des entités, nommées OBJETS, dans lesquelles

sont combinées données et code de programmation.

Les objets qui partagent les mêmes propriétés et les

mêmes méthodes sont regroupés dans une classe.

La Programmation Orientée Objet

Page 15: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

15

Le concept d ’OBJET

L’objectif de ce concept est le suivant :

Regrouper dans une entité unique, nommée OBJET :

• les données décrivant l’objet : ce sont ses propriétés

• et les procédures/fonctions permettant de manipuler l ’objet : ce sont ses méthodes

Page 16: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

16

Exemple d ’objet

En Visual-Basic il existe un type d’objet nommé CommandButton : quand on dessine un bouton de ce type on crée un objet.

Il a des propriétés :

un nom

une taille

un intitulé : par exemple « IMPRIMER »

une couleur

etc...

Page 17: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

17

Cet objet a comme méthode une procédure

correspondant à son rôle.

La procédure sera déclenchée lorsqu’un certain

événement se produira : par exemple un Click sur

ce bouton.

C’est le programmeur qui choisit l’événement à

surveiller et programme la méthode.

Exemple d ’objet

Page 18: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

18

Elle est composée en majeure partie d’objets que l’on peut manipuler conjointement de 2 façons :

• en définissant, modifiant, testant, ou mémorisant leurs propriétés

• en utilisant les méthodes de l’objet, ou en écrivant des procédures complémentaires constituées de lignes de code

La programmation Visual-Basic

Page 19: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

19

Conventions de lecture écriture des instructions

Dans une ligne de code on peut :

• définir une propriété

• ou mémoriser une propriété dans une variable

• ou faire exécuter une méthode ou une procédure

Mais on ne peut pas faire plusieurs de ces traitements à la fois sur la même ligne

Page 20: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

20

Page 21: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

21

Quelques propriétés très utilisées

CAPTION pour les objets Intitulé (Label), bouton de commande (CommandButton)

Désigne le texte qui apparaît dans le bouton à l’écran

TEXT pour les objets Zone de Texte (TextBox)

Désigne le texte affiché ou modifié par l’utilisateur

VALUE pour les objets barre de défilement (ScrollBar) , toupie (SpinButton), bouton d’option

Désigne la valeur choisie par l’utilisateur

Page 22: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

22

MAXLENGTH pour les objets Zone de Texte (TextBox)

Désigne le nombre maximum de caractères acceptés à la saisie

PASSWORDCHAR pour les objets Zone de Texte

Désigne le caractère qui sera affiché pour masquer à l’écran chaque caractère tapé au clavier par l’utilisateur

ENABLED pour les objets Zone de Texte , bouton de commande, etc.

Propriété booléenne, qui lorqu’elle vaut False, rend le bouton inutilisable par l’utilisateur

Quelques propriétés très utilisées

Page 23: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

23

Quelques propriétés très utilisées

BACKCOLOR couleur de fond

FONT Désigne la police à utiliser

CONTROLTIPTEXT

Contient le texte à afficher en info bulle

VISIBLE

propriété booléenne qui, lorsqu’elle vaut False, permet de rendre un bouton temporairement invisible

Page 24: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

24

Page 25: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

25

Affiche le code

Liste des propriétés

pro

pri

été

s

Affiche l ’objet Liste des méthodes

Exp

lora

teu

r d

e p

roje

t

Page 26: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

26

Dim nb1, nb2 As Integer

Private Sub UserForm_Initialize() Randomize nombre1.Caption = Int(Rnd * 8) + 2 nombre2.Caption = Int(Rnd * 8) + 2 nb1 = nombre1.Caption nb2 = nombre2.Caption

End Sub

Code du test des multiplications

Page 27: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

27

Code du test des multiplications

Private Sub validez_Click() If validez.Caption <> "FIN" Then Dim rep As Integer rep = Val(reponse.Value) If rep = (nb1 * nb2) Then MsgBox ("bravo") Else: MsgBox ("faux") End If validez.Caption = "FIN" reponse.Locked = True Else: End End IfEnd Sub

Page 28: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

28

L’événement CHANGE est détecté par Vba dès

qu’un caractère est saisi ( ou tapé) dans un objet de

type TextBox.

Par contre l’événement AFTERUPDATE laisse le

temps à l ’utilisateur de taper plusieurs dans la boite,

et détecte qu ’il a fini quand il appuie sur :

• la touche Entrée

• ou la touche Tab

• ou la souris

Quelques évènements très utilisés

Page 29: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

29

On a souvent besoin de faire faire à notre

programme un traitement d’initialisation de variables,

ou de plages de cellules d’une feuille d’Excel, qu’on

ne peut pas simplement réaliser en modifiant les

propriétés de certains objets.

• ce traitement sera programmé dans une procédure

qui sera TOUJOURS intitulée :

Private Sub Userform_Initialize()

quel que soit le nom du userform

Quelques évènements très utilisés

Page 30: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

30

L’événement Initialize:

• sera détecté automatiquement au démarrage du

programme

• la procédure Userform_Initialize() sera déclenchée

avant la première apparition du userform, et ne

fonctionnera qu ’une seule fois.

• on ne pourra pas déclencher cet événement en

cours de programme pour demander à ce que la

procédure associée soit à nouveau exécutée.

Quelques évènements très utilisés

Page 31: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

31

C’est une zone précise de la mémoire centrale, allouée temporairement à un programme pour gérer les valeurs successives d’une information.

Une variable est définie par :

• son nom

• et son type

Définition : qu’est-ce qu’une variable ?

Page 32: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

32

Définition : une variable

Un nom de variable doit :

commencer par une lettre

avoir moins de 255 caractères, et au moins 1

ne contenir que

des lettres

et des chiffres (facultatifs)

et traits de soulignement _ (facultatifs)

ne pas contenir d’espaces, ni aucun autre signe de ponctuation, ni aucun opérateur, ni aucun comparateur (+->=..)

former un mot différent d’un mot réservé du langage Basic, comme End ou Sub, etc.

Page 33: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

33

Une variable n’a toujours qu’une seule valeur à

un instant donné.

Une valeur ne peut être mémorisée dans une

variable que si leurs types respectifs sont

compatibles.

Exemple : un nombre entier peut-être mémorisé

dans une variable de type réel, mais il perdra sa

nature d ’entier.

Définition : une variable

Page 34: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

34

Une variable peut être renseignée :

• par une donnée utilisateur lors d’une

ACQUISITION

• ou directement par programme, suite à un

calcul, un test, une lecture dans un fichier,

un appel de procédure ou de fonction, lors

d ’une AFFECTATION

Définition : une variable

Page 35: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

35

La désignation du type de la variable permettra à

l’ordinateur :

• de dimensionner au mieux l’espace alloué en

mémoire centrale

• de filtrer des valeurs cohérentes

• de savoir quels procédés de codage et

décodage il doit appliquer

Définition : une variable

Page 36: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

36

Voici quelques types de variables courants :

•Boolean : vrai ou faux (true/false, 1/0)

•Date : de 1/1/100 à 31/12/9999

•Byte : entiers non signés de 0 à 255

•Integer : entiers signés de -32768 à +32767

•Currency : entiers de ± 1015

Définition : une variable

Page 37: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

37

•single : réels avec une précision de 7 décimales : de

±1.4 E-45 à ±3.04 E+38

•double : réels avec une précision de 15 décimales : de

±4.94 E-324 à ±1.79 E+308

•string : chaîne de caractères (65 535 octets maximum)

•string*10 : chaîne de 10 caractères

Définition : une variable

Page 38: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

38

Les déclarations de variables facilitent la

compréhension des programmes et participent à

leur optimisation : nous déclarerons donc

TOUTES les variables que nous utiliserons.

En Visual Basic on déclare généralement les

variables ainsi :

Dim NB,K,Mois As Integer

Dim Trouvé As Boolean

Définition : une variable

Page 39: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

39

Syntaxe d’écriture du code

Pour faire appel à une méthode sans paramètre

Objet. Méthode

Exemple : Saisie.SetFocus

Page 40: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

40

Pour faire appel à une méthode,ou une fonction paramétrée sans nommer les paramètres

Objet. Méthode (valeur,valeur,,valeur)Variable=Fonction(valeur,,,valeur)

on précise les valeurs des paramètres en fonction de leur position dans la liste des paramètres attendus.

Syntaxe d’écriture du code

Page 41: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

41

Exemple avec la fonction MSGBOX

X=MSGBOX (“c’est faux”,,”contrôle de validité”)

Syntaxe d’écriture du code

Page 42: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

42

Pour faire appel à une méthode paramétrée en nommant les paramètres

Objet. Méthode (nom_du_paramètre :=valeur, nom_du_paramètre :=valeur…) Variable=fonction (nom_du_paramètre :=valeur,etc)on précise les valeurs des paramètres sans ordre prédéfini, mais en les nommant.

Exemple avec la fonction MSGBOX

X=MSGBOX (title:=‘’contrôle de validité’’,prompt:=‘’c’est faux’’)

Syntaxe d’écriture du code

Page 43: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

43

Syntaxe d’écriture du code

Pour attribuer une valeur à une propriété

Objet.Propriété = valeur

Exemple : OK.Visible = true

Pour mémoriser la valeur d’une propriété dans une variable

Nom_de_variable = Objet.Propriété

Exemple : nom = Saisie.Value

Page 44: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

44

Syntaxe d’écriture du code

Pour écrire une ligne de code sur plusieurs lignes de l’éditeur :

il faut indiquer qu’il y a une suite en tapant en fin de ligne le caractère souligné _

Pour mettre des commentaires :commencer la ligne de code par une apostrophe

Page 45: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

45

L’instruction IF THEN …..ELSE

Syntaxe générale :

(ici allez toujours à la ligne)

IF a >0 THEN

instruction(s)

ELSE instruction(s)

END IF

Page 46: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

46

Différents cas de construction de IF THEN …..

IF b > 12 THEN

instruction 2

ELSEIF b<8 THEN

instruction 3

ELSE instruction 4

END IF

Page 47: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

47

IF a > 0 THEN

IF b > 12 THEN

instruction1

END IF

IF c > 8 THEN

instruction 2

ELSE

instruction 3

END IF

instruction 4

ELSE instruction 5

END IF

Différents cas de construction de IF THEN …..

Page 48: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

48

Nous allons étudier un programme qui permet de faire répéter plusieurs fois un même enchaînement de procédures et événements.

On ne peut pas matérialiser un traitement répétitif par une boucle classique ( Pour, Jusqu’à, ou Tant Que) lorsqu’un événement, déclenché par l’utilisateur, intervient au cours de ce traitement.

Dans ce programme on trouvera aussi des procédures qui ne dépendent pas directement d’un événement

Etude d’un programme « répétitif »

Page 49: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

49

Dim nb1, nb2, err, nbfois As Integer

Private Sub UserForm_Initialize() Randomize err = 0 Genere nbfois = 0End Sub

Sub Genere() nombre1.Caption = Int(Rnd * 8) + 2 nombre2.Caption = Int(Rnd * 8) + 2 nb1 = nombre1.Caption nb2 = nombre2.Caption End Sub

Code du programme

Page 50: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

50

Sub AfficheBilan() Dim rep As Integer rep = Val(reponse.Value) If rep = (nb1 * nb2) Then MsgBox "Bien" Else: MsgBox "faux" err = err + 1 End IfEnd Sub

ATTENTION :AfficheBilan et Genere sont des procédures qui sont déclenchées par d’autres procédures et non pas par des événements

Code du programme

Page 51: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

51

Sub validez_Click() nbfois = nbfois + 1 If nbfois < 4 Then AfficheBilan If nbfois = 3 Then validez.Caption = "FIN" MsgBox "vous avez fait " & err & " erreurs" reponse.Locked = True Else: reponse.SetFocus Genere reponse.Value = "" End If Else End End IfEnd Sub

Code du programme

Page 52: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

52

Les boites de dialogue MSGBOX

Pour afficher simplement un message et le bouton OK :

MSGBOX ’’ vous avez fait’’  & erreurs & ’’erreurs ’’

Page 53: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

53

Pour afficher un texte et les boutons OK et ANNULER :

Les boites de dialogue MSGBOX

Choix = MSGBOX ’’erreur d’écriture ’’,1, ’’vérification LO10’’

Page 54: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

54

Les boites de dialogue MSGBOX

Syntaxe :

Variable pour la réponse = MSGBOX (’’ texte ’’ ,1, ’’titre ’’)

Le 2° paramètre, qui vaut ici 1, provoque l’apparition des deux boutons OK et ANNULER

Le 3° paramètre apparaîtra en titre en haut de la boîte de dialogue

La variable de la réponse contiendra :1 si l’utilisateur a cliqué sur OK, ou 2 s’il a cliqué sur ANNULER.

On doit ensuite tester cette variable pour continuer le traitement selon le choix de l’utilisateur

Page 55: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

55

Autres valeurs possibles du 2° paramètre de MSGBOX :

2 : pour afficher les boutons

Abandonner, Répéter et Ignorer

3 : pour afficher les boutons Oui, Non, et Annuler

4 : pour afficher les boutons Oui et Non

5 : pour afficher les boutons Répéter et Annuler

Les boites de dialogue MSGBOX

Page 56: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

56

Valeurs possibles de la réponse en fonction du choix de l’utilisateur dans MSGBOX

1 s’il a cliqué sur OK

3 s’il a cliqué sur Abandonner

4 s’il a cliqué sur Répéter

2 s’il a cliqué sur Annuler

5 s’il a cliqué sur Ignorer

6 s’il a cliqué sur Oui

7 s’il a cliqué sur Non

Les boites de dialogue MSGBOX

Page 57: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

57

Pour inviter l’utilisateur à saisir une valeur, sans passer par un objet du userform, on peut utiliser la fonction InputBox.

Exemple d’utilisation : la fenêtre s’incruste temporairement sur le userform, comme pour MsgBox

La fonction INPUTBOX

Page 58: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

58

CodeJoueur = InputBox(" Entrez un nombre entre 2 et 9 ", " saisie du code joueur ",2)

Le 1° paramètre précise la consigneLe 2° paramètre précise le titre de la boiteLe 3° paramètre propose une valeur de réponse

La fonction INPUTBOX

Page 59: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

59

La variable résultat , de type chaîne de caractères, nommée CodeJoueur dans l’exemple précédent, contiendra la valeur entrée par l’utilisateur (ou la valeur proposée par défaut), si celui-ci sélectionne OK ou appuie sur la touche ENTRÉE.

Si l’utilisateur choisit Annuler, une chaîne de longueur nulle est renvoyée.

La fonction INPUTBOX

Page 60: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

60

C’est une expression logique qui sera évaluée par l’ordinateur, et qui vaudra l’une ou l’autre des valeurs logiques VRAI ou FAUX.

Elle sera construite à l’aide de

• variables

• valeurs

• expression mathématiques

• comparateurs (= > < etc)

• opérateurs booléens ET NOT OU

Définition : une expression booléenne

Page 61: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

61

Il est indispensable de savoir que :

NOT (a ET b) = NOT a OU NOT b

NOT (a OU b) = NOT a ET NOT b

en l’absence de parenthèses

ET est prioritaire par rapport à OU

NOT est prioritaire par rapport à ET

Les opérateurs booléens

Page 62: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

62

Liste des opérateurs par priorité décroissante, en l’absence de parenthèses

puissance

multiplication, division réelle

division entière

reste de la division entière (MOD)

addition soustraction

= > < >= <= <>

NOT

ET

OU

Les opérateurs booléens

Page 63: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

63

Traductions booléennes du texte suivant :

Je n’ai pas d’ordinateur mais ma voiture est belle

Avec des variables de type numérique

Nb_ordinateur = 0 et nb_belle_voiture=1

Exemples d’expressions booléennes

Avec des variables de type booléen

not ordinateur et belle_voiture

Page 64: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

64

Négation de l’expression suivante

Je n’ai pas d’ordinateur mais ma voiture est belle

Avec des variables de type numérique

Nb_ordinateur <> 0 ou not (nb_belle_voiture=1 )

Exemples d’expressions booléennes

Avec des variables de type booléen

ordinateur ou not belle_voiture

Page 65: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

65

Pour comparer des chaînes de caractères l’ordinateur compare les codes Ascii des

caractères de même rang

espace , chiffres, majuscules, minuscules

Les chaînes de caractères

Ce sont des variables, ou des valeurs constantes qui contiennent du texte, et/ou des chiffres, en code Ascii (American Code for Information Interchange)

Page 66: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

66

Si nom1= "Dupont"  , nom2= "Durand"

nom3= "DUPONT" ,  nom4= "dupont"

Les comparaisons suivantes sont toutes fausses :

Nom1 > nom2

Nom1 >= nom2

Nom1 = nom3

Nom1 < nom3

Nom1 > nom4

Les chaînes de caractères

Page 67: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

67

Les chaînes de caractères

La fonction LEN indique le nombre de caractères contenus dans la variable :

LONG = LEN(Saisie.Value)

La fonction LCASE transforme tous les caractères de la variable en minuscules :

prénom=LCASE (prénom)

La fonction UCASE transforme tous les caractères de la variable en majuscules :

nom=UCASE (nom)

Page 68: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

68

Les chaînes de caractères

La fonction Left recopie des caractères à partir

du premier caractère.

Exemple :

soit NomComplet = ’’DUPONT Jean’’

La commande :

NomDeFamille = Left (Nomcomplet, 6)

permettra de mettre ’’DUPONT ’’ dans la

variable NomDeFamille

Page 69: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

69

La fonction Right recopie des caractères à partir du dernier caractère.

Exemple :

soit NomComplet = ’’DUPONT Jean’’

la commande :

Prénom = Right (Nomcomplet, 4)

permettra de mettre ’’Jean’’ dans la

variable Prénom

Les chaînes de caractères

Page 70: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

70

Les chaînes de caractères

La fonction Mid permet de recopier

• un certain nombre de caractères (3° paramètre),

• d’une variable Chaîne de caractères (1° paramètre),

• à partir du n° caractère (2° paramètre)

Exemple :

NomComplet = ’’DUPONT Jean’’

la commande :

Prénom = Mid(NomComplet,8,4)

permet d’obtenir ’’Jean’’ dans la variable Prénom

Page 71: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

71

La fonction InStr permet de savoir si une sous-chaîne se trouve dans une chaîne, et à partir de quel endroit (attention aux minuscules, majuscules)

NomComplet = ’’DUPONT JEAN’’

Position = InStr(NomComplet,’’ON’’) Position vaudra 4

Position = InStr(NomComplet,’’on’’) Position vaudra 0

Position = InStr(NomComplet,’’N’’) Position vaudra 5 et c’est tout

Position = InStr(NomComplet,’’I’’) Position vaudra 0

Les chaînes de caractères

Page 72: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

72

Les chaînes de caractères

Pour remplacer une sous-chaîne, par une autre sous-chaîne, dans une chaîne, on utilise la méthode Replace

Dans la commande suivante :

trouvé = formule.Replace(’’x’’,’’RCM’’)

trouvé est une variable booléenne qui vaudra Vrai si on a trouvé, au moins une fois, la lettre ’’x’’, à remplacer par la chaîne ’’RCM’’, dans la variable formule

Page 73: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

73

Les chaînes de caractères

trouvé = formule.Replace(’’x’’,’’RCM’’)

dans cette commande nous n’avons pas précisé s’il fallait différencier ‘ x ’ et ‘ X ’ donc par défaut ils ne sont pas différenciés, et tous les ‘ x ’ et ‘ X ’ sont remplacés.

Si on ne veut faire remplacer que les ‘x’ minuscules, il faut préciser le 5° paramètre de Replace et le mettre à False

trouvé = formule.Replace(’’x’’,’’RCM’’, , , False)

Page 74: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

74

Les chaînes de caractères

Exercice :

soit NomComplet = ’’DUPONT JEAN’’

Que trouvera-t-on dans la variable X

après la commande :

X=Mid(NomComplet,1, InStr(NomComplet ,’’ ’’) -1) ?

Page 75: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

75

pour désigner en Visual-Basic une cellule d’Excel

Range( ’’A1 ’’) = 12

Set x =Range( ’’A1 ’’)

x.cells = 12

Range( ’’A1 ’’) .Name = ’’age ’’

Range( ’’age ’’ ) = 12

Page 76: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

76

pour mettre en Visual-Basic une formule dans une cellule

• Range( ’’B1 ’’) =   ’’= sin(RC[-1] ) ’’

le R vient du mot Row (niveau de ligne)

et le C vient de Column

Dans la cellule B1 on aura le sinus de la valeur située dans la cellule A1 ( même ligne et colonne précédente par rapport à B1)

Page 77: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

77

pour désigner en Visual-Basic une plage de cellules

Range( ’’A1:B10 ’’) = 12

la valeur 12 est recopiée dans toutes les cellules de la plage  ’’A1:B10 ’’

attention : ceci ne permet pas la recopie automatique d’une formule

Page 78: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

78

Range( ’’prénoms ’’) =  ’’sophie ’’

la valeur  ’’sophie ’’ est recopiée dans toutes les cellules de la plage  ’ ’prénoms’ ’

Avec la propriété Name, on nomme une plage de cellules.

Le nom est ensuite visible dans la liste des cellules nommées du classeur Excel.

Range (’’C2:D10 ’’).Name = ’’prénoms ’’

pour désigner en Visual-Basic une plage de cellules

Page 79: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

79

PR  =  ’’sophie ’’ impossible

la valeur  ’’sophie ’’ n’est pas recopiée dans toutes les cellules de la plage référencée par PR

set PR = Range (’’C2:D10 ’’)

La variable PR n ’est pas visible dans la liste des cellules nommées de la feuille Excel.

Elle permet de faire référence à l’objet Range choisi.

pour désigner en Visual-Basic une plage de cellules

PR.cells  =  ’’sophie ’’ correctla valeur  ’’sophie ’’ est recopiée dans toutes les

cellules de la plage référencée par PR

Page 80: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

80

PR.Cells(5,2) désigne la cellule de la 5° ligne , 2° colonne de la plage référencée par PR (c’est la cellule D6 de la feuille)

set PR = Range (’’C2:D10 ’’)

pour désigner en Visual-Basic une plage de cellules

PR.Cells(10) désigne la même cellule (les cellules sont implicitement numérotées dans PR : ligne par ligne)

Page 81: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

81

• set PR = Range (’’C2:D10 ’’)

pour désigner en Visual-Basic une plage de cellules

PR.Columns(2) désigne toutes les cellules de la 2° colonne de la plage référencée par PR (ce sont les cellules D2 à D10 de la feuille)

La commande PR.Columns(2) = ’’oui ’’

remplit toutes les cellules de la 2° colonne de PR avec  ’’oui ’’

Page 82: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

82

• set PR = Range (’ ’C2:D10 ’’)

pour désigner en Visual-Basic une plage de cellules

PR.Rows(7) désigne toutes les cellules de la 7° ligne de la plage référencée par PR (ce sont les cellules C8 et D8 de la feuille)

La commande PR.Rows(7) = 0

remplit toutes les cellules de la 7° colonne de PR avec  0

Page 83: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

83

PR.Rows.Count indique le nombre total de lignes de la plage PR

• set PR = Range (’ ’C2:D10 ’ ’)

pour désigner en Visual-Basic une plage de cellules

PR.Cells.Count indique le nombre total de cellules de la plage PR

PR.Columns.Count indique le nombre total de colonnes de la plage PR

Range(’ ’A1 ’ ’ ) = PR.Cells.Count ??

Page 84: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

84

PR.Cells(PR.Cells.Count) désigne la dernière cellule de la plage référencée par PR (c ’est la cellule D10 de la feuille)

• set PR = Range (’ ’C2:D10 ’ ’)

pour désigner en Visual-Basic une plage de cellules

PR.Cells(9,2) et

PR.Cells(18) et

PR.Cells(PR.Rows.Count,PR.Columns.Count) désignent aussi la même cellule, D10 de la feuille d ’Excel

Page 85: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

85

Ce sont des structures de contrôle qui déterminent un choix quant à la répétition des traitements qu’elles contrôlent.

Ce choix dépend de l’évaluation d’une expression booléenne, ou de la valeur du compteur éventuellement associé à cette boucle.

Les boucles

Synonymes : boucle, répétitive

Page 86: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

86

En programmation structurée, une boucle doit toujours

être exécutée un nombre entier de fois : zéro, une ou

plusieurs fois.

Son exécution se terminera toujours en fin de boucle.

Il est interdit d’interrompre prématurément le

traitement de la répétitive (par un Goto, ou autre

déstabilisateur comme Exit ...)

Les boucles

Page 87: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

87

On ne mettra donc dans une boucle que

des instructions qui devront toujours

toutes

être exécutées

le même nombre de fois.

Les boucles

Page 88: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

88

Il existe trois boucles différentes, dans presque tous les langages évolués :

la boucle POUR

la boucle JUSQU ’A

la boucle TANT QUE

Les boucles

Page 89: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

89

On l’utilisera chaque fois qu’on sera certain de toujours pouvoir déterminer, avant d’y entrer, le nombre entier exact de fois qu’elle va être effectivement exécutée.

L ’évolution de la valeur du compteur est

automatique

Il est interdit de la modifier en cours d’exécution

de la boucle

La boucle POUR

Il est interdit de modifier, en cours d’exécution de la boucle, la valeur finale du compteur, initialement

prévue

Page 90: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

90

Exemple : calcul de la somme des 20 premiers nombres entiers strictement positifs

Somme =0

For i=1 to 20

Somme=somme + i

Next i

La boucle POUR

Page 91: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

91

On l’utilisera chaque fois :

• qu’on ne pourra pas utiliser correctement la

boucle POUR,

• et qu’on sera certain qu’il faudra toujours

l ’exécuter au moins une fois.

La condition d’arrêt sera évaluée après chaque

tour de boucle.

La boucle s’arrêtera lorsque la condition d’arrêt

sera vraie.

La boucle JUSQU’A

Page 92: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

92

Exemple : calcul de la somme des 20 premiers nombres entiers strictement positifs

Somme =0

i=0

DO

i=i+1

Somme=somme + i

Loop until i=20

La boucle JUSQU’A

Somme =0

i=1

DO

Somme=somme + i

i=i+1

Loop until i=21

Page 93: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

93

On l’utilisera chaque fois :

• qu’on ne pourra pas utiliser correctement la

boucle POUR,

• et qu’on ne sera pas certain qu’il faudra toujours

l’exécuter au moins une fois.

La condition d ’autorisation de passage sera

évaluée avant chaque tour de boucle.

On n’entrera dans la boucle que si la condition de

passage sera vraie.

La boucle TANT QUE

Page 94: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

94

Exemple : calcul de la somme des 20 premiers nombres entiers strictement positifs

Somme =0

i=0

DO WHILE i<20

i=i+1

Somme=somme + i

Loop

La boucle TANT QUE

Somme =0

i=1

DO WHILE <21

Somme=somme + i

i=i+1

Loop

Page 95: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

95

Private Sub UserForm_Initialize()

Dim i As Integer

For i = 1 To Range("noms").Cells.Count

Range("noms").Cells(i).Interior.ColorIndex = 3

Next i

End Sub

Exemple de boucle

Page 96: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

96

Private Sub UserForm_Initialize()

Dim i As Integer

i = 1

Do

Range("noms").Cells(i).Interior.ColorIndex = 3

Loop Until i = Range("noms").Cells.Count

End Sub

Exemple de boucle

Page 97: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

97

Private Sub UserForm_Initialize()

Dim i As Integer

i = 1

Do

Range("noms").Cells(i).Interior.ColorIndex = 3

i = i + 1

Loop Until i = Range("noms").Cells.Count

End Sub

Exemple de boucle

Page 98: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

98

Private Sub UserForm_Initialize()

Dim i As Integer

i = 1

Do While i < > Range("noms").Cells.Count

i = i + 1

Range("noms").Cells(i).Interior.ColorIndex = 3

Loop

End Sub

Exemple de boucle

Page 99: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

99

Private Sub Choix_AfterUpdate()

Dim L as string*1

L = UCase(Choix.Text)

If L < > "O" or L < > "N " Then

MsgBox ("erreur ")

Else

Range("corrigé!G2") = L

End If

End Sub

Exemple de IF

Page 100: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

100

Une collection est un objet contenant plusieurs autres objets, généralement, de même type. Dans Excel, par exemple, l'objet Workbooks contient tous les objets de la collection Workbook.

Les éléments d'une collection peuvent être identifiés par un numéro d’ordre ou par leur nom.

Workbooks(1) identifie le premier objet du Workbook ouvert.

Workbooks("TD impots ") désigne le classeur nommé TD impots

L’objet Workbooks

Page 101: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

101

De même Worksheets est un objet particulier de la collection Worksheet .Worksheets(1) identifie la premiere feuille du Workbook ouvert.

Worksheets("sondage") désigne la feuille nommée sondage

L’objet Worksheets

Page 102: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

102

Pour créer depuis Visual-Basic une nouvelle feuille de calcul dans la classeur courant, et l'insérer par défaut avant la feuille active, on utilise la méthode Add. Worksheets.Add

Pour ajouter une nouvelle feuille de calcul après la dernière feuille du classeur actif on ajoute la méthode Move, en précisant la valeur de son paramètre after

Worksheets.Add.Move after := Worksheets ( Worksheets .Count)

L’objet Worksheets

Page 103: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

103

Pour créer et nommer une feuille de calcul dans le classeur actif

ActiveWorkbook.Worksheets.Add.Name = " planning "  

Pour créer et nommer et pouvoir faire référence cette feuille de calcul par un nom de variable

Set plan= Worksheets.Addplan.Name =    " planning "

L’objet Worksheets

Page 104: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

104

Pour sélectionner une cellule, ou une plage de cellules en vue de leur appliquer un traitement (commun), on utilise la méthode Select.

Ceci correspond à la sélection que l’on fait à la souris sous Excel.

Range("A1:B3").Select

Sélections et traitements

Page 105: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

105

Pour changer de feuille active, ce qui correspond sous Excel, à cliquer sur son onglet (ça ne la sélectionne pas), on emploie la méthode Activate.

Worksheets("bilan").Activate

On fait de même pour passer sur un autre classeur ouvert, pour en faire le classeur actif.

Workbooks("TD VB1").Activate

Sélections et traitements

Page 106: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

106

Pour couper la plage A1:D10 de la feuille résultats et la placer dans le Presse-papiers.

Worksheets("résultats").Range("A1:D10").Cut

Pour copier-coller les cellules A1:D10 de la feuille calculs dans la feuille graphique, à partir de la cellule E5, on utilise un copy en précisant sa destination

Worksheets("calculs").Range("A1:D10").Copy _ destination:= Worksheets("graphique").Range("E5")

Couper, copier, coller

Page 107: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

107

Lorsqu’on veut pouvoir déclencher un programme sans aller dans l ’éditeur de Visual-Basic, on définit un bouton dans une barre d’outils, ou un bouton de commande sur une feuille, et on lui associe une macro telle que celle-ci :Private Sub démarre()‘ ouverture du classeur ( nécessaire si on a ‘  cliqué sur un bouton dans une barre d ’outils) Workbooks.Open("C:\Moi\MonJeu.xls")

‘ charge le userform sans l’afficherLoad UserFormJeu

‘ affiche le userformUserFormJeu.Show

End Sub

Perfectionnement

Page 108: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

108

Dans le menu Outils d’Excel choisissez :

•Personnaliser, •Onglet Barre d’outils : Nouvelle

(elle apparaît dans l’écran)•Onglet commandes : Catégories : choisir

Macros•Glisser le bouton jaune souriant dans la nouvelle barre d’outil•Cliquez sur le bouton “ modifier la sélection “ •Choisir “ modifier l’image du bouton ”•Choisir “ affecter une macro ” •Fermer

Pour créer une nouvelle barre d’outil, et un bouton

Page 109: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

109

Lorsque le projet nécessite plusieurs userforms, on les charge, on les affiche, et on peut les masquer temporairement, puis les décharger pour libérer de la place en mémoire centrale.

La méthode Hide sert à masquer un objet, ici de type userform, sans le décharger.

UserFormJeu.Hide

La méthode Unload sert à le décharger.UserFormJeu.Unload

Le userform de ces exemples se nomme UserFormJeu, et non pas seulement Jeu

Perfectionnement

Page 110: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

110

Pour désigner des plages multizones, c'est-à-dire, des plages composées d'au moins deux blocs de cellules contiguës, on utilise :

Union(plage1, plage2, ...).

Dim r1, r2, r1r2 As RangeWorksheets("résultats").ActivateSet r1 = Range("A1:B2")Set r2 = Range("C3:D4")Set r1r2 = Union(r1, r2)r1r2.Select

Cet exemple crée un objet unique correspondant à l'union des plages A1:B2 et C3:D4, puis sélectionne la nouvelle plage définie.

Perfectionnement

Page 111: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

111

On a souvent besoin de savoir quel est lecteur, et le répertoire actifs .La fonction CurDir renvoie le chemin d'accès courant.

Exemple Si le chemin d'accès courant sur le lecteur C: est

C:\LO10\Excelet si le chemin d'accès courant sur le lecteur D: est

D:\Stageet si C: est le lecteur courant, alors : Chemin1 = CurDir retournera " C:\LO10\Excel " Chemin2 = CurDir("C") retournera "C:\LO10\Excel". Chemin3= CurDir("D")' retournera "D:\stage".

Précisions sur les chemins

Page 112: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

112

Pour changer de lecteur courant on utilise ChDrive .

ChDrive "D" fait de "D" le lecteur courant.

L'instruction ChDir change le répertoire par défaut mais pas le lecteur par défaut.

Par exemple, si C est le lecteur par défaut, l'instruction ci-dessous change le répertoire par défaut sur le lecteur D, mais C reste le lecteur par défaut :

ChDir "D:\TMP"

Précisions sur les chemins

Page 113: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

113

Pour créer un nouveau répertoire ou dossier dans le répertoire courant, on utilise l'instruction MkDir , abrégé de Make Directory

Si le lecteur n'est pas indiqué dans le paramètre, le nouveau répertoire ou dossier est créé sur le lecteur courant.

MkDir "gestion"

Le fait de préciser le lecteur ne le rend pas actif par défaut

Si C: est le lecteur actif, après l’instruction suivante il le sera encore

MkDir "D:gestion"

Précisions sur les chemins

Page 114: 1 INITIATION A LA PROGRAMMATION STRUCTUREE. 2 I.Introduction et définitions.

114

Précisions sur les chemins

Si sur E: le répertoire courant est Td ,

MkDir "E:Excel" crée un répertoire Excel dans Td

MkDir "E:\Excel" crée un répertoire Excel de même niveau que L010 et Mt11