Porte des variables VBA - PowerPoint PPT Presentation

1 / 30
About This Presentation
Title:

Porte des variables VBA

Description:

Port e des variables et des constantes. VBA et Excel. Manipulation de cellules. Manipulation ... Que doit-on changer pour l'utiliser avec des tableaux de taille 7 ? ... – PowerPoint PPT presentation

Number of Views:202
Avg rating:3.0/5.0
Slides: 31
Provided by: maab
Category:
Tags: vba | agit | des | porte | variables

less

Transcript and Presenter's Notes

Title: Porte des variables VBA


1
Portée des variablesVBA Excel
2
Rappel
  • Nous avons vu
  • Fonctions récursives
  • Procédures récursives

3
Plan
  • Nous allons voir
  • Généralisation des programmes
  • Portée des variables et des constantes
  • VBA et Excel
  • Manipulation de cellules
  • Manipulation de plages

4
Problème
  • Algorithme ex1
  • Variable i entier
  • Variable T Tableau6 dentiers
  • Début
  • Pour i 1 à 6
  • Lire(T(i))
  • Fin Pour
  • i ?6
  • Tant que i ? 1 Faire
  • Ecrire (T(i))
  • i ? i-1
  • FinTantQue
  • Fin
  • Que fait cet algorithme ?
  • Que doit-on changer pour lutiliser avec des
    tableaux de taille 7 ?

5
Solution
  • Il faut remplacer le 6 par 7 partout
  • Algorithme ex1
  • Variable i entier
  • Variable T Tableau7 dentiers
  • Début
  • Pour i 1 à 7
  • Lire(T(i))
  • Fin Pour
  • i ? 7
  • Tant que i ? 1 Faire
  • Ecrire (T(i))
  • i ? i-1
  • FinTantQue
  • Fin

Cest facile quand il sagit dun petit
algorithme
6
Meilleure solution
  • Utiliser une constante pour fixer la taille
  • Algorithme ex1
  • Const n 7
  • Variable i entier
  • Variable T Tableaun dentiers
  • Début
  • Pour i 1 à n
  • Lire(T(i))
  • Fin Pour
  • i ? n
  • Tant que i ? 1 Faire
  • Ecrire (T(i))
  • i? i-1
  • FinTantQue
  • Fin

Pour changer de taille, il suffit ensuite de
changer la valeur de la constante n une seule fois
7
Constantes en VB
  • Sub ex1()
  • Const n 7
  • Dim i, T(n) as Integer
  • For i 1 to n
  • T(i)InputBox( ? )
  • Next
  • i n
  • While i gt 1
  • MsgBox(T(i))
  • i i-1
  • Wend
  • EndSub

8
Autre problème
  • On veut afficher lindice de la valeur maximale
    se trouvant dans le tableau saisi avec ex1
  • On pourrait penser à la solution suivante
  • Sub ex2()
  • Dim M as Integer
  • M 1
  • For i 2 to n
  • If T(M) lt T(i) Then
  • M i
  • EndIf
  • Next
  • MsgBox(M)
  • End Sub

9
Le problème (suite)
  • Cette solution ne va pas marcher car ex2() ne
    connaît pas
  • La constante n
  • Le tableau T
  • La variable i

Sub ex2() Dim M as Integer M 1 For i 2 to
n If T(M) lt T(i) Then M i EndIf Next Ms
gBox(M) End Sub
10
Portée des variables et des constantes Locale
ou globale
  • Toute variable déclarée au sein dun programme
    nest visible quau sein de ce même programme
    (Variable locale)
  • La même remarque est valable pour les constantes
    (Constante locale)
  • Pour quune variable ou constante soit globale,
    il faut la déclarer en dehors de tout programme

11
Solution
  • Const n 7
  • Dim i, T(n) as Integer
  • sub ex1()
  • For i 1 to n
  • T(i)InputBox( ? )
  • Next
  • i n
  • While i gt 1
  • MsgBox(T(i))
  • i i-1
  • Wend
  • End sub
  • sub ex2()
  • End Sub

n est une constante globale T et i sont des
variables globales
12
Portée des variables Exo

Sub ex1() Dim i As Integer i 3 End
Sub Sub ex2() MsgBox (i) End Sub
On exécute ex1 puis ex2, que va afficher ex2 ?
13
Portée des variables Exo
  • Dim i as integer
  • Sub ex1()
  • i 3
  • End Sub
  • Sub ex2()
  • Dim i as integer
  • i 5
  • End Sub
  • Sub ex3()
  • MsgBox(i)
  • EndSub

On exécute ex1, puis ex2, puis ex3. Que va
afficher ex3 ?
14
Conclusion sur la portée
  • Quand lexécution dun programme rencontre une
    variable
  • Le système regarde si la variable est définie
    localement
  • Auquel cas, il utilise la version locale
  • Sinon, il regarde si la variable est définie
    dune manière globale
  • Auquel cas, il utilise la version globale
  • Sinon, cest à dire la variable nest déclarée
    nulle part et dans ce cas VB a deux solutions
  • Option Explicit dans ce cas, il déclare une
    erreur
  • Sinon, il essaye de créer instantanément la
    variable en linitialisant à 0

15
Autre problème
  • Notre programme ex1() qui saisit les éléments
    dun tableau à n cases nest applicable que sur
    le tableau T
  • Sub ex1()
  • For i 1 to n
  • T(i)InputBox( ? )
  • Next
  • i n
  • While i gt 1
  • MsgBox(T(i))
  • i i-1
  • Wend
  • EndSub

Si on doit saisir un autre tableau T, on ne peut
pas utiliser ce programme sauf si on le modifie
16
Solution
  • Pour faire en sorte que ex1() soit directement
    utilisable avec nimporte quel tableau, il faut
    mettre le tableau comme paramètre
  • Sub ex1(T() as Integer, n as integer)
  • For i 1 to n
  • T(i)InputBox( ? )
  • Next
  • i n
  • While i gt 1
  • MsgBox(T(i))
  • i i-1
  • Wend
  • EndSub

Dorénavant, je peux faire Call ex1(T) Call
ex1(T) Call ex1(M) Si T, T, M sont des
variables de type tableau à une dimension.
17
Remarques
  • Soient les déclarations suivantes
  • Dim n as integer
  • Dim T(7) as integer
  • Dim T1(n) as integer
  • Dim T2(5) as integer
  • Dim T3(10) as Integer
  • Call ex1(T, 7) et Call ex1(T1, n) vont remplir
    les tableaux T et T1
  • Call ex1(T2, 5) va engendrer une erreur car on
    dépasse la taille du tableau T2
  • Call ex1(T3, 10) ne va remplir que les 7
    premières cases

18
VBA et Excel Cellules
  • A partir des programmes VBA, on peut accéder aux
    cellules des feuilles de calcul
  • Le mot réservé Cells désigne une cellule
  • Une feuille de calcul peut être vue comme une
    matrice
  • Cells(i , j) désigne alors la cellule se
    trouvant à
  • Ligne i et colonne j
  • Une feuille de calcul peut être vue comme un
    vecteur
  • Cells(i) désigne la cellule se trouvant à la ième
    position en parcourant les lignes
  • de gauche à droite et
  • Haut en bas
  • Une ligne contient 256 colonnes ?A2 Cells(257)

19
Les cellules
  • Chaque cellule possède plusieurs propriétés
  • Valeur
  • Couleur de la valeur
  • Couleur du contour
  • Cells(i , j).Value désigne la valeur de la
    cellule se trouvant à la ième ligne et jème
    colonne

20
Les cellules
  • Sub ex1()
  • Dim i, j as integer
  • For i 1 to 3
  • For j 1 to 3
  • Cells(i,j).value ij
  • Next
  • Next
  • MsgBox( Cells(2, 3).Value)
  • MsgBox( Cells(3).Value)
  • End Sub

21
Les feuilles
  • Les cellules modifiées par le programme précédent
    sont celles de la feuille à laquelle il est
    associé

Ce programme est associé à Feuil1
22
Les feuilles
  • Le mot réservé Sheets désigne une feuille de
    calcul
  • Sheets(i) désigne la ième feuille
  • Sheets(3).Cells(1,2) désigne la cellule se
    trouvant à la ligne 1 et colonne 2 de la feuille
    3.
  • Sheets("Feuil3").Cells(1,2) désigne la même
    cellule
  • On peut donc faire référence aux feuilles soit
  • Par leur numéro
  • Par leur nom

23
La commande With
  • Pour ne pas avoir à retaper plusieurs fois la
    même chose, on peut utiliser la commande with
  • Sub ex1() Sub ex1()
  • Dim i,j as integer Dim i, j as Integer
  • For i 1 to 3 For i1 to 3
  • For j 1 to 3 For j 1
    to 3
  • sheets(3).cells(i,j).value1 with
    sheets(3).cells(i,j)
  • sheets(3).cells(i,j).Interior.colorIndex3 .Va
    lue1
  • Next .Interior.ColorIndex 3
  • Next End With
  • End Sub Next
  • Next
  • EndSub

24
Fonction Utile IsEmpty
  • Cette fonction prend comme paramètre une cellule
    et retourne True ou False selon que la cellule
    est vide ou non.
  • Syntaxe IsEmpty(cellule)

25
Petit exo
  • Que fait la partie de programme suivante ?
  • i 1
  • While IsEmpty(cells(i,1)) False
  • If cells(i,1).value lt0 Then
  • cells(i,1).value 0
  • End If
  • i i 1
  • Wend

26
Plages de valeurs
  • Les plages de valeurs sont introduites avec la
    clause Range
  • Exemple Range("A1 C3") désigne la plage de
    cellules se trouvant entre A1 et C3
  • Range ("A1 C3").cells(4) désigne la quatrième
    cellule dans la plage A1C3
  • Cest donc A2

27
Plages et feuilles
  • Tout comme les cellules, les plages sont
    associées à des feuilles.
  • Sheets(1).Range("A1B3").cells(2)
  • Désigne la 2ème cellule de la plage A1B3 de la
    première feuille.

28
VBA et Excel
  • En licence, vous verrez plus de choses sur la
    manipulation des fichiers Excel avec VBA

29
Conclusion du cours
  • A retenir
  • Algorithmique première étape de la
    programmation
  • Une fois quon a trouvé lalgorithme, il est
    facile de passer au programme
  • Pour lexamen
  • Rédaction dalgorithmes
  • Connaissances de la syntaxe VB
  • Connaissances des notions vues pour Excel
  • Fonctions ( Si, RechercheV, )
  • Listes
  • Tableaux croisés dynamiques
  • Adressage relatif, absolu, mixte

30
Merci et bonne réussite aux examens
  • ?
Write a Comment
User Comments (0)
About PowerShow.com