• Aucun résultat trouvé

[PDF] Tutoriel d’utilisation de Visual Basic avec Microsoft Excel | Cours informatique

N/A
N/A
Protected

Academic year: 2021

Partager "[PDF] Tutoriel d’utilisation de Visual Basic avec Microsoft Excel | Cours informatique"

Copied!
58
0
0

Texte intégral

(1)

Unité Tableur et Bases de données

http://lagis-vi.univ-lille1.fr/~lo/ens/gi/#TBD

Tableur – Programmer en VBA

Olivier Losson

Master Génie Industriel : http://master-gi.univ-lille1.fr

(2)

Introduction

Comparaison avec d'autres langages Notations du cours et règles d'édition

1 – Types et variables

Types disponibles et conversion entre types Déclaration de variable, de constante

2 – Structures de contrôle (tests, boucles) 3 – Fonctions et procédures personnalisées

Principe, implémentation et appel Paramètres

4 – Tableaux

Déclaration et utilisation Tableaux dynamique

5 – Objets Excel

(3)

Le langage VBA

Remplace les macros-commandes (depuis Excel 5.0) Permet d'automatiser les tâches répétitives de manipuler tous les objets Excel de communiquer avec d'autres applications, d'accéder aux fichiers, … de développer des interfaces graphiques (UserForms) mais PAS de développer des applications indépendantes d'Excel

Comparaison avec d'autres langages

Similarités Structures de contrôle Fonctions intégrées ; fonction utilisateur et paramètres Spécificités Pas de pointeur Faiblement typé ; existence d'un type générique (Variant)

(4)

Notations et conventions de ce cours

Code source en police Courier

Rem. ne pas confondre l ( L min.) et 1 (un)

Mots-clés du langage (à recopier tels quels) en Courier gras

Autres mots (à remplacer par une valeur) en

Courier italique

Mots optionnels (=facultatifs) entre crochets

[option]

Rem. suite de mots optionnels

[option1 [,option2 [,option3 ... ]]]

Alternative entre plusieurs mots entre accolades

(5)

Commenter son code

Utilité : lisibilité, réutilisabilité, maintenance Syntaxe :

Rem Commentaire

ou

'Commentaire

Casse

Pas de différenciation majuscules/minuscules Mise en forme et coloration automatiques :

rem commentaire  

  

Rem commentaire

Conseil : tout écrire en minuscules

Instructions

(6)

Types principaux

Entiers : nb_personnes=3 : dist_terre_sol=147100000

Réels : temp_zero_k=-273.15 : masse_terre=6E+24

Opérateurs

(priorité décroissante)

Opérateur Signification Exemple

^ puissance 5 ^ 2 = 25

- négation -5 + 2 = -3

* / multiplication, division 5 / 2 = 2.5 \ division entière (quotient) 5 \ 2 = 2 Mod division modulo (reste) 5 Mod 2 = 1 + - addition, soustraction 5 – 2 = 3

& concaténation 5 & 2 = 52

(7)

Fonctions intégrées principales

Fonction Signification Exemple

valeur absolue arc-tangente (rad) cosinus, sinus (rad) Exp(1)=2.7182818 partie entière racine carré

Tan tangente Tan(3.14159265)=1

Abs Abs(-5.2)=5.2

Atn Atn(1)=0.785398

Cos, Sin Cos(3.14159265)=-1

Exp, Log exponentielle, log népérien Fix, Int Fix(8.4)=Int(8.4)=8 Fix(-8.4)=-8 Int(-8.4)=-9 Rnd nombre aléatoire  [0,1[ Rnd*2  1.411095 Sgn signe  {-1,0,1} Sgn(-8.4)=-1 Sqr Sqr(2)=1.414213

Nombres (2)

(8)

Description

Ensemble de caractères (de 0 à 65 400) Chaîne constante

Entourée de guillemets doubles ("...")

Ne pas confondre avec une variable chaîne :

"message"  message (variable chaîne, ex. "bla bla")

Remarque : peut inclure

Lettres et chiffres  ("Lettres", "007") Espaces et caractères de ponctuation (" , ") Guillemets doubles : "Il dit ""Bonjour"" " Caractères spéciaux non imprimables Fin de ligne : vbCrLf  Retour arrière : vbBack Tabulation : vbTab

Chaînes (1)

(9)

Affichage

Dans une boîte de message

MsgBox ("Bonjour")

Dans la fenêtre Exécution

Debug.Print "Bonjour"

Rem. Debug omissible dans fenêtre d'exécution

Saisie

Dans une boîte de saisie

réponse = InputBox ("Écrivez-moi un mot")

Concaténation

Mise bout à bout de 2 chaînes (constantes ou variables) Opérateur  &

nom = "Toto"

print "Bonjour " & nom

Mise en cascade possible :

(10)

Fonctions intégrées principales

partie gauche partie droite sous-partie quelconque recherche de sous-chaîne code ASCII d'un caractère caractère associé à un code conversion en minuscules conversion en majuscules

Len longeur (nb. caractères) Len("tête")=4

Left Left("tête",3)="têt"

Right Right("tête",2)="te"

Mid Mid("tête",2,1)="ê"

Instr Instr("tête","e")=4Instr("tête","T")=0

Asc Asc("A")=65

Chr Chr(65)="A"

LCase LCase("TêTe")="tête"

UCase UCase("TêTe")="TÊTE"

(11)

Description

Variable à 2 valeurs possibles

True (Vrai) False (Faux)

Opérateurs

(priorité décroissante)

Exercice :

si A=True et B=False, que valent

Opérateur Signification Exemple

Or

Not non logique Not True = Faux

And et logique True And False = Faux

ou logique True Or False = Vrai Xor ou exclusif True Xor True = Faux

A. BA. B A.B A  B

(12)

Date/heure constante

Entourée de dièses (#...#)

Attention au format (France : #JJ/MM/AAAA [HH:MM:SS]#)

Opérations Addition/soustraction date_naiss = #31/03/1990# print date_naiss-1  30/03/1990 print date_naiss+1  01/04/1990 Conversion en nombre : nombre de jours écoulés depuis le 30 décembre 1899 print date_naiss*2  65926

Fonctions intégrées principales

Date et heure

Fonction Signification Exemple Résultat

Date date système courante Date 07/07/2015

(13)

Type Suf. Description Valeurs possibles Taille

Boolean booléen True/False 2 octets

Byte octet 0..255 1 octet

Integer % entier -32768..32767 2 octets

Long & entier long -2E9..+2E9 4 octets

Single !  réel simple ±3.4E38..±1.4E-45 4 octets

Double # réel double ±1.8E308..±4.9E-324 8 octets

Date date/heure 8 octets

String $ chaîne 0..65400 caractères Len(ch)

Object objet Excel 4 octets

Variant tout type toutes valeurs 16 octets

1/1/0100..31/12/9999 00:00:00..23:59:59

Workbook, Range, 

(14)

Automatique

Ex.

print nb & "*" & mult & "=" nb*mult

print "Aujourd'hui, nous sommes le " & Date()

Fonctions spécialisées

Utilité : réduire la taille mémoire Conversions En booléen : CBool  -  Ex. CBool(10)True En entiers : CByte, CInt, CLng Ex. CInt(10.5)10 : CInt(True)-1 En date : CDate (partie entièredate, partie décimaleheure) Ex. CDate(32963.25)31/03/1990 06:00:00 En réels : CSng, CDbl En chaîne : CStr

(15)

Initialisation

Informations sur le type

Connaître le type : fonction 

VarType()

temp = 38.2:Debug.Print VarType(temp)

Tester le type

Fonctions IsType (Ex. IsDate()IsNumeric(), ...) 

Types Exemple Initialisation

Booléen Numérique 0 Date Date 00:00:00 Chaîne String "" Variant Variant Objet Boolean False

Byte, Long, Double, 

Empty

Workbook, Range,  Nothing

(16)

Implicite

Mot inconnu  nouvelle variable (type donné par la valeur)

Ex. temp=38.2

variable type 

Double

Explicite 

Option Explicit

 dans section (Déclarations)

Avec 

Dim

 et 

As

Dim nomVar As type Dim ch As String

Avec Dim et suffixe accolé

Dim nomVarSuffixe Dim ch$

En cascade

Dim nomVar1 As type1, nomVar2 As type2,…

Rem.: que déclare   Dim v1, v2 As Double ?

(17)

Description

Association Nom  Valeur

Ex.

vbKeyA  65 vbDouble  5

vbCrLf  Chr(13)&Chr(10) vbGreen  65280

Déclaration de constante personnalisée

Const nomConst [As type] = valeur

Ex.

Const cZeroK As Single = -273.15

Utilisation : comme les variables

Dans une expression

Debug.print "Zéro kelvin=" & cZeroK & "°C"

Comme paramètre d'une fonction

réponse=MsgBox("Êtes-vous sûr ?", vbYesNo) If (réponse=vbYes) Then ...

(18)

Description

Exécution d'instructions sous condition

Syntaxes

Forme la plus simple

If condition Then instruction

Le tout sur 1 seule ligne

Plusieurs instructions possibles en les séparant par ":"

Forme avec plusieurs instructions If condition Then

instructions EndIf instructions suivantes condition vraie ? instruction(s) instructions suivantes oui non

Tests (1)

(19)

Syntaxes (suite)

Forme avec alternative If condition Then

instructions1 Else

instructions2 EndIf instructions suivantes Remarques Les tests peuvent être imbriqués Ou utiliser 

If  Then  ElseIf  Then  Test « Selon » condition vraie ? instructions2 instructions suivantes oui non instructions1

Tests (2)

(20)

Sélection (ou « Test Selon »)

Description : exécution d'instructions sous condition avec plusieurs valeurs possibles

Syntaxe

Select Case expression Case valeurs1

instructions1 Case valeurs2

instructions2 ... [Case Else

instructionsN] End Select instructionsN instructions

valeurs1 autres cas

instructions1 instructions2 ... valeurs2 expression testée ...

Tests (3)

(21)

Description

Exécution répétitive d'instructions

Types de boucles

« While » : exécutée tant qu'une condition est vraie

S'arrête lorsque la condition devient fausse

« Until » : exécutée jusqu'à ce qu'une condition soit vraie

S'arrête lorsque la condition devient vraie

« For » : exécutée un nombre de fois donné (compteur)

Attention : risque de boucle infinie si

la condition d'une boucle « While » ne devient jamais fausse la condition d'une boucle « Until » ne devient jamais vraie

 La condition doit être modifiée par les instructions de boucle

(22)

Boucle While

Exécution d'instructions

tant qu

'une condition est vraie

Syntaxes :

Do While condition Do

instructions

instructions

Loop Loop While condition

instructions suivantes instructions suivantes

condition vraie ? oui non condition vraie ? instructions oui

Boucles (2)

(23)

Boucle Until

Exécution d'instructions

jusqu'à ce qu

'une condition soit vraie

Syntaxes :

Do Until condition Do

instructions

instructions

Loop Loop Until condition

instructions suivantes instructions suivantes

condition vraie ? instructions non oui condition vraie ? instructions non oui

Boucles (3)

(24)

Boucle For

Exécution d'instructions

un nombre de fois donné

(connu)

Syntaxes :

For cpt=init To fin

instructions

Next cpt

instructions suivantes

For cpt=init To fin Step pas

instructions Next cpt instructions suivantes cpt<fin ? instructions cpt=cpt+1 oui non cpt=init instructions cpt=cpt+pas

Boucles (4)

(25)

Boucle For Each (énumérateur)

Exécution d'instructions pour chaque élément d'un ensemble

Syntaxe

For Each élément In ensemble

instructions Next élément

Remarques

L'ensemble peut être un tableau ou une collection Les instructions sont exécutées autant de fois qu'il y a d'éléments La variable élément prend tour à tour la valeur de chaque élément

Exemple

For Each chiffre In Array(1,5,3)

Debug.Print chiffre

Next chiffre

(26)

Description

Ensemble d'instructions réalisant une tâche précise et retournant un résultat

Utilité : 

Modularité (découpage d'un problème en sous-problème) Réutilisabilité (appel en plusieurs endroits)

Distinguer :

L'implantation (entête+corps) = la fonction elle-même L'appel de la fonction

Lien avec une fonction en mathématiques

Calcule un résultat à partir de paramètres (ou arguments)

Ex. y = sin(x)

(27)

Implantation

Syntaxe

Function

nomFonc

([params]) As

type

'commentaires

instructions

nomFonc

= résultat

End Function

Remarques

résultat doit avoir le type spécifié dans l'entête Le retour d'un résultat utilise le nom de la fonction 

entête

corps

(28)

Appel

Syntaxe

Function

nomFonc

([params]) As

type

End Function

Dim retour As

type

retour =

nomFonc

([valParams])

Remarques

retour  doit être du même type que la fonction (cf. entête)

Les valeurs des paramètres valParams transmises lors de l'appel  doivent correspondre (2 à 2) aux types déclarés dans l'entête pour ces 

implantation

appel

(29)

Description

Fonction qui ne retourne pas de résultat

Syntaxe

Implantation

Sub

nomProc

([params])

'commentaires

instructions

End Sub

Appel

Call

nomProc

([valParams])

entête

corps

(30)

Description

Donnée d'entrée de la fonction (ou la procédure)

Rem. Parfois aussi donnée de sortie

Syntaxe d'un paramètre

[ByVal|ByRef] nomParam [As type]

Remarques

Passage par défaut : par référence (ByRef) Type par défaut : Variant

Si plusieurs paramètres : les séparer par une virgule

Question : quels sont les types et passages pour

ByVal param1, param2 As String

(31)

Passages de paramètres

Passage par référence (ou: par adresse) (

ByRef

)

L'adresse mémoire de la variable est transmise à la fonction La fonction travaille directement sur la variable

La variable originale ressort modifiée de la fonction

Passage par valeur (ou: par copie) (

ByVal

)

Une copie de la variable est créée et transmise à la fonction La fonction travaille sur cette copie de la variable La variable originale n'est pas modifiée par la fonction Remarques Grande majorité des cas = passage 

ByVal

ByRef

 utile si plusieurs résultats doivent être retournés

Paramètres (2)

(32)

Exemples

Sinus d'un angle exprimé en degrés

Entête

Function sinDeg(ByVal angle as Double) As Double Appel (ex.)

y = sinDeg(30)  0.5

Premier mot d'une phrase

Entête

Function prem(ByVal phrase as String) As String Appel (ex.)

Debug.Print prem("Bonjour à tous")  "Bonjour"

(33)

Exemples

n premiers mots d'une phrase

Function prems(ByVal phrase as String,

ByVal n as Long) As String Debug.Print prems("Bonjour à tous", 2)

 "Bonjour à"

Idem, en modifiant éventuellement n si incorrect

Function prems(ByVal phrase as String,

ByRef n as Long) As String

Sub test()

Dim nb As Long nb = 5

Debug.Print prems("Bonjour à tous", nb)

End Sub

 "Bonjour à tous"

et

nb=3

(34)

Paramètres nommés à l'appel

Description : appel d'une fonction en utilisant le nom de ses paramètres Utilité

Clarification du code

Spécification des paramètres dans un ordre quelconque Non-spécification des paramètres optionnels

Syntaxe

retour = nomFonc (nomParam1:=valParam1,

nomParam2:=valParam2, )

Exemple

MsgBox(prompt [,buttons] [,title] [,helpfile, context])

rep = MsgBox(title:="Titre", prompt:="Bonjour à tous")

(35)

Paramètre optionnel

Description : paramètre pouvant être omis à l'appel de la fonction Syntaxe d'un paramètre optionnel

Optional [ByVal|ByRef] nomParam [As type] [=valDéf]

Remarques

Les paramètres suivants doivent aussi être optionnels ; les paramètres optionnels  se placent donc en fin de liste

Préciser systématiquement une valeur par défaut

Exemple

Function concat(ByVal ch1 As String, ByVal ch2 As String, Optional ByVal sep As String="-") As String

(36)

Description

Ensemble d'éléments de même type, dans lequel les éléments sont repérés par leur indice (ou numéro d'index)

Utilité

Stockage aisé d'un grand nombre d'éléments

   Ex. ensemble de notes, de points de l'espace 3D, ...

Traitements systématiques sur ces éléments

   Ex. parcours avec une boucle For

valeurs 5,5 12,5 9,0 0,0 10,0 14,0 11,5 ... indices 0 1 2 3 4 5 6 ...

(37)

Nombre de dimensions

1D (vecteur) 2D (matrice)

= tableau de tableaux

n-D (hypervolume)

Taille(s)

(dans chaque dimension)

indice max. ou

indices min. et max.

éventuellement modifiable valeurs 5,5 12,5 9,0 0,0 ... indices 0 1 2 3 ... indices de colonnes 0 1 2 3 in di ce s  de  li gn es 0 0 255 0 … 1 0 0 255 … 2 0 255 255 … 3 255 255 255 … 4 0 127 0 … ... ... ... ... ...

(38)

Syntaxe

Vecteur

En donnant l'indice maximal et le type des éléments :

Dim nomTab(indMax) [As type]

En donnant explicitement les indices minimal et maximal

Dim nomTab(indMin To indMax) [As type] Matrice

Dim nomTab(indMax1,indMax2) [As type] Dim nomTab(indMin1 To indMax1,

indMin2 To indMax2) [As type]

Remarque : possibilité d'utiliser la notation suffixée

Dim nomTabSuffixe(indMax)

Dim nomTabSuffixe(indMin To indMax)

Déclaration de tableaux (1)

(39)

Indices des éléments

Indice minimal

par défaut : 0

fixé à 1 avec Option Base 1 dans  section (Déclarations)

Nombre d'éléments : dépend des indices et d'Option Base

Retrouver les limites des indices

LBound(t) donne l'indice minimal, UBound(t) l'indice maximal

Préciser éventuellement la dimension : LBound(t,2)

Déclaration Option Base 0 Option Base 1

Nb élts LBound(t) UBound(t) Nb élts LBound(t) UBound(t)

4 0 3 3 1 3 2 2 3 2 2 3 12 0 2 6 1 2 18 0 2 15 0 2 Dim t(3) As  Dim t(2 To 3) As  Dim t(2,3) As  Dim t(0 To 2,5) As 

Déclaration de tableaux (2)

(40)

Tableau constant

Utiliser Array  Ex. tab = Array(5.5, 12.5, 9, 0, 10, 14, 11.5)

Lecture d'une valeur

d'un vecteur

nomTab(indice) nomTab(ind1, ind2)

Écriture d'une valeur

nomTab(indice) = valeur nomTab(ind1, ind2) = valeur Rem.: les indices doivent être compris dans les limites !

Parcours

d'un vecteur

For i=LBound(t) To UBound(t) For i=LBound(t,1) To UBound(t,1) | ... | For j=LBound(t,2) To UBound(t,2) Next i | | ...

Utilisation des tableaux

d'une matrice

(41)

Utilité : tableau dont la taille

est inconnue lors du codage

n'est déterminée que lors de l'exécution

Exemples

Stockage de valeurs numériques dans un tableau, avec un nombre de valeurs spécifié par l'utilisateur

Dim nbVal As Integer

nbVal = InputBox("Nb de valeurs :") Dim tabVal(nbVal)

Fonction retournant le tableau des mots contenus dans une phrase paramètre

(42)

Syntaxe

Déclaration d'un tableau sans spécifier sa taille Dim nomVar() [As type]

Redimensionnement dynamique (en fonction des besoins) ReDim [Preserve] nomVar(indMax) [As type] Remarques

Plusieurs redimensionnements successifs possibles Taille réduite  éléments supplémentaires perdus

Le type des éléments n'est en général pas modifié (As type  omis)

Preserve

conserve les valeurs existantes

ne modifie pas le nombre de dimensions

ne permet de redimensionner que la dernière dimension

(43)

Exemple

Stockage de valeurs numériques dans un tableau, avec un nombre de valeurs spécifié par l'utilisateur

Dim i As Integer

Dim nbVal As Integer Dim tabVal() As Double

nbVal = InputBox("Nb de valeurs :")

ReDim tabVal(1 To nbVal) 'Toujours des Double

For i = 1 To nbVal

tabVal(i) = InputBox("Valeur :") Next i

(44)

Objet

Description : entité (concrète ou abstraite) définie par

ses caractéristiques (propriétés = « variables ») son comportement (méthodes = « fonctions »)

Les objets ayant des caractéristiques communes et même comportement forment une classe (« type »)

Exemples Objets concrets Chaise { nb pieds, couleur, matériau, déplacer(), empiler() } Ordinateur { fréquence µP, prix, démarrer(), arrêter() } Objets abstraits Nombre complexe { Re, Im, abs(), conj() } Fenêtre graphique { position, taille, déplacer(), fermer() }

(45)

Description

Composant d'une application Office Organisation hiérarchique

Exemples

Classe Description Classe Description Application Application

Classeur ouvert Document Document texte ouvert Feuille de calcul

Range Plage de cellules Range Ensemble de caractères contigus

Excel Word

Logiciel Excel Logiciel Word Workbook

Worksheet

(46)

Workbook

Classeur (ouvert dans Excel)

Collection Workbooks = ensemble des classeurs ouverts

Cas particulier : ActiveWorkbook = classeur actif

Worksheet

Feuille de calcul (d'un classeur)

Collection Worksheets = ensemble des feuilles d'un classeur

Cas particulier : ActiveSheet = feuille active

Range

Plage de cellules (d'une feuille de calcul)

Rem. Éventuellement réduite à une seule cellule

Cas particuliers

ActiveCell = cellule active

(47)

Description

Caractéristique d'un objet

Accès par notation pointée : Objet.Propriété

Exemples

Nom du classeur actif : ActiveWorkbook.Name

Nom complet du classeur actif : ActiveWorkbook.FullName

Sauvegarde du classeur actif effectuée ? : ActiveWorkbook.Saved

Nombre de classeurs ouverts : Workbooks.Count

Nombre de feuilles du classeur actif : Worksheets.Count

Nom de la feuille active : ActiveSheet.Name

Adresse de la cellule active : ActiveCell.Address Valeur de la cellule active : ActiveCell.Value

Nombre de cellules sélectionnées : Selection.Count

(48)

Lecture dans une variable

Si la propriété est une valeur simple (chaîne, nombre, ...)

nomVar = Objet.Propriété

Si la propriété est elle-même un objet Set nomVar = Objet.Propriété

Écriture (modification de la propriété)

Objet.Propriété = valeur

Attention : impossible si la propriété est en lecture seule

Exemples

nomClasseur$ = ActiveWorkbook.Name

Set cellulesNonVides = ActiveSheet.UsedRange ActiveCell.Value = Date()

ActiveCell.Address = "$A$2" est impossible

(49)

Description

Action applicable sur (ou réalisable par) un objet

Accès par notation pointée : Objet.Méthode[(params)]

Exemples

Sauvegarde du classeur actif : ActiveWorkbook.Save Fermeture du classeur actif : ActiveWorkbook.Close

Fermeture du classeur actif en enregistrant les modifications :

ActiveWorkbook.Close(True)

Ouverture d'un classeur : Workbooks.Open("Toto.xls") Suppression de la feuille active : ActiveSheet.Delete

Effacement de la cellule active (valeur) : ActiveCell.ClearContents

Suppression de la cellule active avec décalage vers la gauche :

ActiveCell.Delete(xlShiftToLeft)

(50)

Description

Ensembles d'objets (items) de même classe

La classe définit (en général) le nom de la collection

   Ex. : 

Workbooks

Worksheets

CommandBars

, ...

Chaque item porte un nom (clé) et un numéro

Accès à un item

Par son nom Ex. : Worksheets("Feuil1")

Par son numéro Ex. : Worksheets(2)

Propriétés

Nombre d'items dans la collection : propriété Count

Ex. : 

Worksheets.Count

(51)

En parcourant la hiérarchie

Syntaxe

Application.Objet1.Objet2. 

Exemples

Set classeurActif = Application.ActiveWorkbook ? Application.ActiveWorkbook.Worksheets(3).Name

? Application.ActiveWorkbook.Worksheets(Application .ActiveWorkbook.Worksheets.Count).Name

En utilisant une propriété globale (accessible directement). Ex. :

ActiveWorkbook pour Application.ActiveWorkbook

Worksheets pour Application.ActiveWorkbook.Worksheets ActiveSheet pour Application.ActiveWorkbook.ActiveSheet ActiveCell pour Application.ActiveWindow.ActiveCell

Selection pour Application.ActiveWindow.Selection

(52)

Définition

Description : plage de cellule(s) d'une feuille de calcul

Pas forcément sélectionnées, ni valuées, ni contiguës Éventuellement réduite à une seule cellule Exemples ActiveCell Selection

Range (1)

(53)

Création et parcours : l'essentiel

Création

Propriétés particulières

Propriétés globales     : ActiveCell, Selection Propriété d'objet Worksheet : feuille.UsedRange

Propriété (globale) 

Range

 de la feuille active

En utilisant l'adresse (absolue/relative) : Range(adresse) En utilisant un nom de plage défini      : Range(nom)

Parcours (ex.)

Dim plage As Range, cellule As Range Set plage = Selection

For Each cellule in plage

Debug.print cellule.Value Next cellule

(54)

Création à partir d'autres plages

Comment obtenir ... une seule cellule d'une plage plage.Cells(numLig,numCol) ou plage.Cells(numCell) une sous-plage en ligne ou en colonne plage.Rows(numLig) ou plage.Columns(numCol) une plage spécifiée par décalage plage.Offset(numLig,numCol) une plage union de plusieurs autres plages Union(plage1,plage2,) la plage entourant une autre plage plage.CurrentRegion numLig=2 numCol=2 numCell=6 numLig=2 numCol=2 numLig=1 numCol=2 A A A A A A A A

Range (3)

(55)

Propriétés principales

par ordre d'importance décroissante

Propriété Description Type

Value 1 cellule unique Valeur de la cellule Dépend du contenu L+E Plusieurs cellules Valeur des cellules Variant (tableau)

Address 1/+ cellules Adresse Excel String L Count 1/+ cellules Nombre de cellules Long L Formula 1 cellule unique Formule de la cellule String L+E

Plusieurs cellules Formules des cellules Variant (tableau)

Row, Column 1/+ cellules n° première ligne, colonne Long L Font 1 cellule unique Attributs de police Font L... Interior 1 cellule unique Intérieur (fond, etc.) Interior L... Height, Width 1/+ cellules Hauteur, Largeur Double L+E Next, Previous 1 cellule unique Cellule suivante, préc. L...

Type

de plage Lect/écr.

Range (1 cellule)

(56)

Méthodes principales

par ordre d'importance décroissante

Méthode [(params)] Type de plage Description

Select 1/+ cellules Sélectionne les cellules ClearContents 1/+ cellules Efface les formules

Clear 1/+ cellules Efface tout (formules, format, ...)

Activate 1 cellule unique Activation d'une cellule de la sélection

1/+ cellules Supprime les cellules en décalant les voisines 1/+ cellules Insère des cellules en décalant les voisines 1/+ cellules Copie ou Coupe les cellules 1/+ cellules Retourne des cellules spéciales (Range) 1/+ cellules Recherche une information 1/+ cellules Remplace une chaîne par une autre Sort 1/+ cellules Trie les valeurs (selon une colonne, ...) Delete(décalage) Insert(décalage) Copy, Cut SpecialCells(type) Find(quoi) Replace(quoi,par)

Range (5)

(57)

Exemples et exercices

Exemples Sélectionner la cellule B2 (de la feuille active) Range("B2").Select Effacer la plage utilisée dans la feuille active ActiveSheet.UsedRange.Clear Activer la dernière cellule de la sélection Selection.Cells(Selection.Count).Activate

Écrire et tester les procédures

ajusterSél() qui étend (ou restreint) la sélection à la plage de cellules non  vides dans laquelle elle est incluse (ou qu'elle inclut) échange() qui permute les valeurs des cellules sélectionnées si elles sont au  nombre de 2 selectLigne() qui sélectionne les lignes complètes de la plage sélectionnée  (utiliser la propriété EntireRow)

Range (6)

(58)

Cours en ligne

http://www.excelabo.net/ http://excel.developpez.com/cours/?page=prog http://www.commentcamarche.net/contents/1374-macros-comment-les-creer http://www.info-3000.com/vbvba/ Pratique/exemples http://excel.developpez.com/sources/ http://cherbe.free.fr/index.php http://perso.fundp.ac.be/~jmlamber/vba/Notes.html http://patrice.rabiller.pagesperso-orange.fr/Visual%20Basic%20Excel/indexVB.htm

Avancé

http://spreadsheetpage.com/index.php/tips https://huit.re/zcURxCzW (Excelabo)

Références

Documents relatifs

The fracture surfaces (identical for the upper and lower plies) and the corresponding load - crosshead displacement curves obtained for the post- impact tensile simulations on

CAEI experiments were performed on a 400 kN Schenck com- pression device at a 0.01 mm/min imposed speed ( Fig. 7 ) and the tests were done on damaged specimens (from edge impact

16 shows, as the overlap length in the presented 1D-beam model increases, the maximal adhesive shear stress of the third adhesive layer increases above

Les niveaux proto-aurignaciens et aurignaciens qui ont fait l’objet des fouilles sont associés aux dépôts de ruissellement et aux éboulis de la partie supérieure du remplissage.

We will focus on the effect of the initial powder mass, as well as on the rotational speed of the stirrer while emptying the mixer on both the hold-up weight of a “pure” bulk

Les états mentaux réfèrent à la qualité de la capacité d’un individu à élaborer mentalement et à s’ouvrir à son expérience subjective dans l’ici et maintenant. Les divers

Paluma traz grande preocupação à sustentabilidade dessa cultura, uma vez que o nematóide compromete as funções do sistema radicular (absorção e translocação), além da

[r]