Portée des variables VBA & Excel

Slides:



Advertisements
Présentations similaires
Un environnement de développement éducatif
Advertisements

La Méthode de Simplexe Standardisation
Microsoft Excel LibreOffice Calc
Introduction a L’algorithme
Tris.
Chapitre annexe. Récursivité
Algorithmique (suite)
Fonctions & procédures
Eléments visuels. 2009/2010L3-Eco - Université de Bordeaux2 Les feuilles La feuille : cest le cadre dans lequel tous les autres éléments (visuels) dune.
GEF 243B Programmation informatique appliquée Types dérivés, structures et tableaux §
3- Déclaration et accès aux objets
Applications sur les algorithmes récurrents avec Les Matrices
VBA Les tableaux correction du TD du mardi 11 mars 2008 correction du TD du mardi 11 mars 2008.
Exercices Algorithmiques
C.
1 Révisions. 2 Tableaux non contraints Déclaration du type : type Tvecteur = tableau ( intervalle dentiers) de entiers type Tvecteur is array (integer.
TP 8 : parcours de liste et cas pratique
L ’événement CHANGE est détecté par Vba dès qu ’un caractère est saisi ( ou tapé) dans l ’objet TextBox. Par contre l ’événement AFTERUPDATE laisse le.
Introduction à la programmation (420-PK2-SL) cours 15 Gestion des applications Technologie de linformation (LEA.BW)
MATLAB Initiation à Matlab.
Les sous-programmes Chapitre n° 5: Objectifs : Activité:
Initiation à la programmation et algorithmique cours 3
Par Clément en vacances sur la Côte d’Azur Le 17 décembre 2011
Les requêtes La Requête est une méthode pour afficher les enregistrements qui répondent à des conditions spécifiques. La requête est donc un filtre.
Par Fabrice Pasquier Cours III
Cours 7 - Les pointeurs, l'allocation dynamique, les listes chaînées
Récursivité.
Plan À faire Retour sur les exercices Gestion d’erreur
Par Fabrice Pasquier Cours IV
Initiation à la programmation
OCaml – Les arbres L3 MI.
II. Chaînage, SDD séquentielles
Les algorithmes: complexité et notation asymptotique
F Copyright © Oracle Corporation, Tous droits réservés. Créer des programmes avec Procedure Builder.
Master 1 Sciences du Sport et du Mouvement Humain
Les pointeurs Enormément utilisé en C/C++ ! Pourquoi? A quoi ça sert?
Racines carrées 1) Racine carrée d’un nombre positif
Les pointeurs Modes d’adressage de variables. Définition d’un pointeur. Opérateurs de base. Opérations élémentaires. Pointeurs et tableaux. Pointeurs et.
Une nouvelle structure de données : les tableaux
Les Fonctions. Définir une fonction Sections de code indépendantes que lon peut appeler à nimporte quel moment et dans nimporte quel ordre. Bout de code.
Introduction à la programmation I Fonctions Structures de contrôle Structures de données (arrays simples et indexés) Variables locales et globales.
Points importants de la semaine Les tableaux. Rappel : les tableaux Quest-ce quun tableau ? Réponse : Un tableau est une série déléments de même type.
Points importants de la semaine Les constantes. Les boucles. Les opérateurs relationnels Les opérateurs logiques.
Points importants de la semaine Les enregistrements.
Courbes de Bézier.
I&G- chapitre 11-La logique Logarithmique -Mme Roulaud
LIFI-Java 2004 Séance du Jeudi 9 sept. Cours 1. La notion de langage Décrire une tâche à effectuer –programme Écrire à un haut niveau –facile pour lutilisateur.
COURS DE PROGRAMMATION ORIENTEE OBJET :
Excel (Partie 2).
Introduction à l’algèbre
Parcours d'une séquence de longueur fixe
Université Ibn Zohr Faculté des Sciences Economiques et Sociales Notes de cours VBA E. Belahmidi 2007/2008.
Tableaux, chaînes VBA et Excel
Création et présentation d’un tableau avec Word 2007
LES PILES ET FILES.
Les Pointeurs et les Tableaux Statiques et Tableaux Dynamiques
Informatique de gestion – IO MER L3 – Pierre SOURNAC Informatique de Gestion part III – the macro rises L3 – IO MER
Algorithmes de tri et de recherche
Programmation linéaire en nombres entiers
Macros Visual Basic sur Excel
Cours LCS N°4 Présenté par Mr: LALLALI
Informatique de Gestion part I – Macro begins
Informatique de Gestion part II – the dark macro
1 Cours 6 Définitions de nouvelles procédures Transmissions de données/résultats Déclarations globales/locales Visibilités Interface/implementation.
Résolution du Problème
Une proposition de résolution du pb1 AEP PACD VB Pb11.
Une aide pour débutant éclairé
QCM VBA.
Algorithmique Tableaux de données
Initiation aux bases de données et à la programmation événementielle
Transcription de la présentation:

Portée des variables VBA & Excel

Rappel Nous avons vu Fonctions récursives Procédures récursives

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

Problème Que fait cet algorithme ? Algorithme ex1 Variable i : entier Variable T: Tableau[6] d’entiers 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 l’utiliser avec des tableaux de taille 7 ?

Solution C’est facile quand il s’agit d’un petit algorithme Il faut remplacer le 6 par 7 partout Algorithme ex1 Variable i : entier Variable T: Tableau[7] d’entiers 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 C’est facile quand il s’agit d’un petit algorithme

Meilleure solution Utiliser une constante pour fixer la taille Algorithme ex1 Const n = 7 Variable i : entier Variable T: Tableau[n] d’entiers 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

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 >= 1 MsgBox(T(i)) i = i-1 Wend EndSub

Autre problème On veut afficher l’indice 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) < T(i) Then M = i EndIf Next MsgBox(M) End Sub

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) < T(i) Then M = i EndIf Next MsgBox(M) End Sub

Portée des variables et des constantes : Locale ou globale Toute variable déclarée au sein d’un programme n’est visible qu’au sein de ce même programme (Variable locale) La même remarque est valable pour les constantes (Constante locale) Pour qu’une variable ou constante soit globale, il faut la déclarer en dehors de tout programme

Solution n est une constante globale Const n = 7 Dim i, T(n) as Integer sub ex1() For i = 1 to n T(i)=InputBox(« ? ») Next i = n While i >= 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

Portée des variables : Exo Sub ex1() Dim i As Integer i = 3 End Sub Sub ex2() MsgBox (i) On exécute ex1 puis ex2, que va afficher ex2 ?

Portée des variables : Exo Dim i as integer Sub ex1() i = 3 End Sub Sub ex2() i = 5 Sub ex3() MsgBox(i) EndSub On exécute ex1, puis ex2, puis ex3. Que va afficher ex3 ?

Conclusion sur la portée Quand l’exécution d’un 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 d’une manière globale Auquel cas, il utilise la version globale Sinon, c’est à dire la variable n’est 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 l’initialisant à 0

Autre problème Notre programme ex1() qui saisit les éléments d’un tableau à n cases n’est applicable que sur le tableau T Sub ex1() For i = 1 to n T(i)=InputBox(« ? ») Next i = n While i >= 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

Solution Pour faire en sorte que ex1() soit directement utilisable avec n’importe 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 >= 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.

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

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)

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

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

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

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

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 i=1 to 3 For j = 1 to 3 For j = 1 to 3 sheets(3).cells(i,j).value=1 with sheets(3).cells(i,j) sheets(3).cells(i,j).Interior.colorIndex=3 .Value=1 Next .Interior.ColorIndex =3 Next End With End Sub Next Next EndSub

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)

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

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 A1:C3 C’est donc A2

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

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

Conclusion du cours A retenir : Algorithmique = première étape de la programmation Une fois qu’on a trouvé l’algorithme, il est facile de passer au programme Pour l’examen : Rédaction d’algorithmes Connaissances de la syntaxe VB Connaissances des notions vues pour Excel Fonctions ( Si, RechercheV, …) Listes Tableaux croisés dynamiques Adressage relatif, absolu, mixte

Merci et bonne réussite aux examens 