exemple de creation d`une macro fonction

Transcription

exemple de creation d`une macro fonction
EXCEL VBA
EXEMPLE DE CREATION D'UNE MACRO FONCTION
EXEMPLE DE CREATION
D'UNE MACRO FONCTION
EXCEL propose un grand nombre de fonctions prédéfinies mais vous pouvez avoir besoin de calculs
spécifiques et répétitifs.
Les macro fonctions permettent d'enrichir le choix de fonctions déjà disponibles dans EXCEL.
Ces nouvelles fonctions seront disponibles dans le menu [SELECTION][COLLER UNE FONCTION]
comme n'importe quelle autre fonction d'origine d'EXCEL.
Par exemple, vous souhaitez calculer régulièrement la surface d'un rectangle. Vous pouvez créer une
fonction personnalisée qui réalisera ce calcul à partir d'arguments comme le font les fonctions
traditionnelles.
DÉFINITION DU PROBLÈME :
Pour reprendre l'exemple précédent, vous allez créer une fonction permettant de calculer la surface d'un
rectangle. La formule est la suivante :
Surface = Longueur * Largeur
SYNTAXE :
Toute macro aura à peu près la même structure :
•
•
•
•
une déclaration
un bloc d'arguments (il déclare les variables)
un calcul (il réalise le calcul de la fonction)
une ligne Fin (elle met fin à la macro)
Fonction surface(longueur; largeur)
Surface = longueur * largeur
Fin Fonction
* LA DECLARATION :
La ligne indiquera le mot clé : FONCTION suivi du nom de la fonction auquel seront accolées des
parenthéses contenant les arguments. Le Nom de la fonction permet une identification immédiate du
contenu de la macro.
Par exemple, si le titre est "Exponentiel", vous en déduirez qu'il s'agit de calculer une exponentielle.
* ARGUMENTS :
Il s'agit des variables qui vont réceptionner les valeurs passées à la fonction à partir de la feuille de
calcul. :
= SURFACE (nom de l'argument1;nom de l'argument2)
Dans notre exemple les arguments seront : LONGUEUR et LARGEUR
Les arguments doivent être séparés par un point virgule
* CALCUL :
Il s'agit du calcul effectué par la fonction. Dans notre exemple :
SURFACE=LONGUEUR*LARGEUR
A noter qu'il est important d'attribuer le resultat final des calculs a une variable portant le nom de la
fonction
* FIN FONCTION :
AFCI-NEWSOFT
Page 1
MÉTHODOLOGIE :
Une macro fonction doit se placer dans une feuille de macro. Pour ce premier exemple, vous allez utiliser
une feuille de macro normale.
Demandez donc une feuille de macro par :
[INSERTION][MACRO][MODULE][OK]
Cette nouvelle feuille porte le nom MODULEn
Placez vous au début de la nouvelle feuille
Tapez le nom de la fonction suivie d'une parenthése ouvrante
FONCTION SURFACE(
Déclarez les arguments séparés par un point virgule :
Sur la ligne suivante tapez le calcul qui doit se réaliser :
Terminez par un FIN FONCTION :
= Longueur ;Largeur)
= Surface=Longueur * Largeur
= FIN FONCTION
Votre macro est maintenant terminée.
UTILISATION DE LA MA CRO FONCTION :
Pour utiliser une macro fonction, revenez dans une feuille de calcul puis procédez comme suit :
- se placer sur la cellule devant recevoir le résultat de la fonction
- appeler le menu [SELECTION][COLLER UNE FONCTION] ou cliquez sur le bouton f(x)
n'oubliez pas de choisir "Personnalisées
- choisir SURFACE dans PERSONNALISEES- valider par OK
- renseigner les arguments en allant cliquer sur les cellules à prendre en compte (ici B2 et B3)
- valider par Entrée.
Par exemple, = SURFACE (10,50) renvoie 500 comme résultat.
2
EXCEL VBA
AFCI-NEWSOFT
EXEMPLE DE CREATION D'UNE MACRO FONCTION
Page 3
EXEMPLE DE CREATION
D'UNE MACRO
COMMANDES
UTILISER L'ENREGISTREUR DE MACROS
L'enregistreur de macro commandes est un outil très simple qui permet d'utiliser rapidement et
simplement les macro commandes.
Il s'agit de créer 2 graphiques d'après un tableau et de les imprimer ensuite
* Création du document principal
Vous allez créer le tableau suivant et l'enregistrer sous le nom "Ventes"
Les graphiques souhaités sont:
celui des pâtes et du riz pour les 4 trimestres,
celui du total pour les 4 trimestres.
Si vous ne souhaitez pas réaliser vos graphiques à chaque fois, vous pouvez automatiser l'opération sous
forme de macro commande.
L'enregistreur de macro mémorise l'ensemble de vos actions dans EXCEL de manière à les répéter à
n'importe quel moment. Pour cela, vous devez effectuer les
opérations suivantes :
Menu [Insertion][Macro][Enregistrer une macro]
La fenêtre ci contre apparait ð
Donnez le nom de la macro commande
Cliquez sur le bouton [Options] : la fenêtre s'agrandit
comme ci dessous
4
EXCEL VBA
EXEMPLE DE CREATION D'UNE MACRO COMMANDES
Définissez la touche raccourci Décidez du classeur à
utiliser puis - OK
Remarque :
A partir de maintenant, toute action sera
enregistrée même si celle-ci est erronée.
Dans le cas d'une erreur, il est préférable
d'annuler et de recommencer.
Effectuez toutes les manipulations nécessaires à la
création des graphiques et à leur impression
Lorsque le travail est terminé et imprimé :
Sélectionnez l'option [MACRO][ARRETER
L'ENREGISTREMENT] ou cliquez
Pour visualiser le résultat sélectionnez le nouveau module
' Mongraphique Macro
' Macro enregistrée le 22/02/1997 par J.L. Roger
''
Proc Mongraphique()
Plage("A2:C6").Sélectionner
FeuilleActive.ObjetsGraphique.Ajouter(189,6; 13,8; 178,8; 65,4). _
Sélectionner
Application.ModeCouperCopier = Faux
GraphiqueActif.AssistantGraphique Source:=Plage("A2:C6"); _
TypeGraphique:=xlHistogramme; Format:=6; TracéEn:=xlColonnes; _
EtiquettesCatégorie:=1; EtiquettesSérie:=1; PossèdeLégende:=1; _
Titre:="Ventes"; TitreCatégories:=""; TitreValeurs:=""; _
AutreTitre:=""
Sélection.Hauteur = 94,2
Fin Proc
Bien entendu le résultat sera plus ou moins long
selon les difficultés que vous aurez mis en
oeuvre.
L'enregistreur de macro peut être mis en oeuvre
à n'importe quel moment. Il devient intéressant de s'en servir lorsqu'on développe soit même une macro
et qu'une partie, fastidieuse, peut être enregistrée.
PROGRAMMER SES MACROS
Ecrire une macro correspond exactement à écrire un programme avec tous les problèmes que cela pose.
Avant de commencer l'écriture de la macro vous devez vous livrer à une analyse complète de vos
besoins.
Planifier sur le papier toutes les étapes du programme
Cerner les étapes qui doivent être enregistrées
Le langage de programmation est un langage qui comporte les même structures de programmation que
les autres langages. Ce sont principalement ces structures que nous allons étudier ici. Le langage de
programmation d'Excel est très verbeux, il doit comporter plus de 600 commandes, chaque commande
peut effectuer une action fondamentalement différente selon les paramètre qu'on y ajoutera.
Aussi nous vous conseillons de vous reporter à la documentation fournie avec le programme afin de
retrouver les commandes que vous souhaitez utiliser. Cette documentation de prés de 700 pages est à
peu prés illisible pour les non-initiés.
Le but du stage que vous venez de suivre est de vous ouvrir la compréhension de l'univers des macros; il
ne prétend pas faire de vous des virtuoses de la programmation, pour y arriver, il vous faudra de longues
heures de travail et beaucoup de "prises de tête".
AFCI-NEWSOFT
Page 5
BONNE CHANCE TOUT DE MEME
6
EXCEL VBA
LES STRUCTURES DE PROGRAMMATION
LES STRUCTURES DE
PROGRAMMATION
TRAITEMENTS CONDITIONNELS
Au cours d'un traitement la macro peut être appelée à effectuer une série de calcul plutôt qu'un autre
selon le contenu d'une cellule ou d'une variable.
Ex : Lors du calcul d'un bilan la macro peut, selon que le bilan est positif ou négatif, enchaîner sur le
calcul des impôts à payer ou sur celui des subventions à demander.
Vous avez déjà rencontré la fonction SI; dans les macros nous allons utiliser une structure presque
identique: SI condition
traitement 1
traitement 2
traitement 3
SINON
traitement 4
FIN.SI
L'exemple précédent montre que la différence avec la fonction SI() réside en la possibilité de faire
effectuer plusieurs traitements par le programme.
Imaginons l'exemple précité du calcul des impôts ou des
subventions. Le résultat de tous les comptes (entrées,
sorties) apparaît dans la cellule B5. Nous allons créer
une macro qui lorsqu'on la lancera fera tous les calculs.
Pour réaliser cette macro, nous introduirons 4 commandes supplémentaires
Plage("C1").Sélectionner
qui permet de sélectionner une autre cellule
CelluleActive.Décaler(1; 0).Sélectionner
Qui donne l'adresse décalée par rapport à une
adresse donnée
CELLULE.ACTIVE
Qui donne l'adresse de la cellule active
Ainsi : CelluleActive.Décaler(1; 0).Sélectionner sélectionne la cellule située sur la ligne suivante et
sur la colonne précédente en partant de la cellule active.
CelluleActive.Formule = valeur
Qui entre une formule de calcul ou un texte dans la cellule
sélectionnée
AFCI-NEWSOFT
Page 7
Après avoir réalisé le tableau précédent, ouvrez une feuille de macro et tapez ce qui suit :
Proc IMPOTS()
AffecteRéf lavar = Application.CelluleActive
Définit une variable
Si lavar > 0 Alors
Teste
CelluleActive.Décaler(1; -1).Sélectionner
CelluleActive.Formule = "Impots"
CelluleActive.Décaler(0; 1).Sélectionner
CelluleActive.Formule = "=L(-1)*33%"
CelluleActive.Décaler(1; -1).Sélectionner
CelluleActive.Formule = "Taxes"
CelluleActive.Décaler(0; 1).Sélectionner
CelluleActive.Formule = "=L(-2)*10%"
CelluleActive.Décaler(1; -1).Sélectionner
CelluleActive.Formule = "Bénéfice"
CelluleActive.Décaler(0; 1).Sélectionner
CelluleActive.Formule = "=l(-3)-(L(-2)+L(-1))"
Sinon
CelluleActive.Décaler(1; -1).Sélectionner
CelluleActive.Formule = "Subvention Etat"
CelluleActive.Décaler(0; 1).Sélectionner
CelluleActive.Formule = "=L(-1)*8%"
CelluleActive.Décaler(1; -1).Sélectionner
CelluleActive.Formule = "Subvention Mairie"
CelluleActive.Décaler(0; 1).Sélectionner
CelluleActive.Formule = "=l(-2)*2%"
CelluleActive.Décaler(1; -1).Sélectionner
CelluleActive.Formule = "Manque"
CelluleActive.Décaler(0; 1).Sélectionner
CelluleActive.Formule = "=L(-3)-(L(-2)+L(-1))"
Fin Si
Fin Proc
Pour créer un raccourci sélectionnez le menu OUTILS puis le bouton OPTION
Choisissez CTRL +Maj + I
Sélectionnez la feuille de calcul en cliquant sur l'onglet, cliquez sur B5 (cellule ou se trouve le résultat et
activez les touches
CTRL - ñ - I
Aussitôt la macro se
déroulent et selon que
votre résultat est positif
ou négatif vous verrez
apparaître ceci ou cela
8
EXCEL VBA
LES STRUCTURES DE PROGRAMMATION
BOUCLES
Les boucles servent à effectuer une action un certain nombre de fois
Deux structures de boucles existent:
et
POUR ó SUIVANT
TANT.QUE ó SUIVANT
La structure POUR ó SUIVANT va effectuer la tache un nombre de fois prévu à l'avance.
La structure TANT.QUE ó SUIVANT va effectuer la tache un nombre de fois dépendant d'une valeur
ou d'une condition ex : TANT.QUE COMPTEUR>10.
Bien entendu, dans ce genre de boucle, il faudra mettre à jour la valeur du compteur à chaque passage
dans la boucle.
COMMANDE POUR ó SUIVANT
Exemple de macro qui mettra en couleur les 8 cellules suivantes, une en jaune, une en cyan
La partie relative à la mise en couleur peut être enregistrée (attention, avant de commencer
l'enregistrement, prenez soin de vérifier que vous êtes bien en enregistrement relatif).
Résultat :
AFCI-NEWSOFT
Page 9
Il reste à ajouter
le nombre de
indiquer que la
L'ordre POUR
• Un nom de
• Une valeur de
• Un nombre de
Proc colorons()
Pour i = 1 à 3
Avec Sélection.Intérieur
.IndexCouleur = 6
.Motif = xlUni
.IndexCouleurMotif =
xlAutomatique
Fin Avec
CelluleActive.Décaler(1;
0).Sélectionner
Avec Sélection.Intérieur
.IndexCouleur = 26
.Motif = xlUni
.IndexCouleurMotif =
xlAutomatique
Fin Avec
CelluleActive.Décaler(1;
0).Sélectionner
Avec Sélection.Intérieur
.IndexCouleur = 3
.Motif = xlUni
.IndexCouleurMotif =
xlAutomatique
Fin Avec
CelluleActive.Décaler(1;
0).Sélectionner
Suivant
Fin Proc
une ligne au début de la macro pour indiquer
boucle; et une ligne à la fin de la macro pour
boucle se termine ici.
doit recevoir 3 paramètres
compteur ici : I
départ
fois à exécuter la boucle
10
EXCEL VBA
LES STRUCTURES DE PROGRAMMATION
TANT.QUE ó SUIVANT
Exemple de macro qui générera un échéancier au mois le mois à partir d'une date donnée et un nombre
de mois donné.
Cette macro permet d'introduire une nouvelle commande :
•
Boitesaisie(Message;Titre de la fenêtre; valeur par défaut).
Le paramètre "message" s'affichera dans la fenêtre de saisie activée par l'ordre entrée
Le paramétre "Titre de la fenêtre" s'affiche dans la barre de titre
Le paramétre "Valeur par défaut" permet de donner la valeur la plus utilisée.
La macro, lorsqu'elle sera lancée interrogera l'utilisateur sur la date de départ et sur le nombre de mois
souhaité puis grâce à l'ordre TANT.QUE elle remplira autant de cellule qu'il y aura de mois avec la date
de départ augmenté d'un mois.
Proc échéancier()
nbmois = BoîteSaisie("Nombre de mois"; "Nbre de mois";
1)
CelluleActive.Formule = nbmois
CelluleActive.Décaler(1; 0).Sélectionner
DATEDEP = BoîteSaisie("Date de départ"; "Tapez la")
CelluleActive.Formule = DATEDEP
TantQue nbmois > 0
CelluleActive.Décaler(1; 0).Sélectionner
CelluleActive.Formule = "=date(annee(L(-1)C);Mois(L(1)C)+1;jour(L(-1)C))"
nbmois = nbmois - 1
FinTantQue
Fin Proc
Nom de la macro
initialise la variable NBMOIS avec la valeur entrée par
l'utilisateur
Pose le nombre de mois dans la cellule active
Passe à la cellule suivante
Entre la date de départ
Pose la date de départ dans la cellule active
Début de la boucle
Passe à la cellule suivante
Pose la formule de calcul de date
Diminue NBMOIS de 1
Remonte au début de la boucle
Fin de la macro
résultat sur une feuille blanche :
A l'exécution de la macro, les deux fenêtres "saisies" apparaîtront successivement afin de recevoir les
informations. Entrez les valeurs et validez à chaque fois.
Nota :
pour interrompre une macro qui tourne dans une boucle éternelle il suffit d'utiliser la touche "Echap".
AFCI-NEWSOFT
Page 11
BOITE DE DIALOGUE
Pour créer une boite de dialogue personnalisée vous devez d'abord insérer une nouvelle feuille boite de
dialogue
Menu [Insertion][Macro][Boite de Dialogue]. La fenêtre ci dessous apparait :
Vous pouvez
placer des
controles sur la
fenêtre et lier
ces controles à
des cellules sur
la feuille.
Pour ajouter un
controle dans la
boite, cliquez
sur le bouton
correspondant
de la barre d'outils Dialogue, puis positionnez le dans la boite.
Donnez un nom au controle dans la barre de formule dans la zone nom et appuyez sur entrée.
Nous allons créer une boite de dialogue calculant le montant des mensualités à verser pour ce qui
concerne un emprunt fait à la banque au moment de l'achat d'une automobile.
Commencez par créer, sur la feuille courante, deux tableaux
correspondant à ceux présentés ci contre.
Nommez les zones suivantes :
Modéle
:
A12:A17
Sans_option :
B12:B17
Avec_option :
C12:C17
Puis insérez un module Boite de dialogue grace aux commandes
[Insetion][Macro][Boite de dialogue].
Sélectionnez la boite de dialogue qui vient d'apparaitre et nommez la
"Emprunts" en cliquant dans la zone gauche de la barre de
commande et en tapant "Emprunts" au clavier.
12
EXCEL VBA
BOITE DE DIALOGUE
Souvenez vous que pour nommer un objet, il
faut le sélectionner; aussitot apparait un nom
dans la partie gauche de la barre de
commande. Sélectionnez ce nom et changez
le.
Sur la boite de dialogue, vous allez placer
deux zones de texte, une zone de liste, 2cases
d'options, 3 étiquettes de manière à ce que la
boite de dialogue apparaisse comme ci
dessous.
Nous allons maintenant nommer toutes les zones et les lier à des cellules sur la feuille de calcul.
Sélectionnez le titre de la boite en double cliquant dessus.
Remplacez le libellé "Boite de dialogue" par "Emprunts"
Sélectionnez la zone de liste.
Nommez la "Liste de véhicules".
Menu [Format][Objet].
Dans la zone Plage d'entrées, tapez "Modèles"
Dans la zone Cellule liée, tapez "Feuil1!B1" ou tapez le nom de la cellule si vous en avez
créé un.
Cliquez OK
Sélectionnez la première case d'option
Nommez la "Sans option"
Sélectionnez le texte "Case d'option" et remplacez par "Sans option"
Menu [Format][Objet]
Sélectionnez "Coché"
Dans la zone Cellule liée, tapez "Feuil1!C2"
Cliquez OK
AFCI-NEWSOFT
Page 13
Sélectionnez la seconde case d'option
Nommez la "Avec option"
Sélectionnez le texte "Case d'option" et remplacez par "Avec option"
Menu [Format][Objet]
Sélectionnez "Non Coché"
Dans la zone Cellule liée, tapez "Feuil1!C2"
Cliquez OK
Sélectionnez la zone de texte à droite de "Nb mensualités
Nommez la "Mensualités"
Sélectionnez la zone de texte à droite de "Apport".
Nommez la "Apport"
Testez la boite de dialogue grâce à [Outils][Exécuter la boite de dialogue]
Insérez un module de macro et tapez la macro suivante :
PROC BteEmprunt()
FeuillesBoiteDialogue("Dialog1").Afficher
Fin Proc
Puis sur la feuille de calcul 1 créez un bouton auquel vous affectez la macro BteEmprunt.
Cliquez sur le bouton la macro s'exécute en ouvrant la boite de dialogue.
Cliquez sur RENAULT, indiquez 36 mensualités et un apport de 5.
Cliquez sur OK
Les zones mensualités et apport de la boite de dialogue n'étant pas encore lièes à la feuille de calcul, il ne
se passe pas encore grand chose lorsque vous cliquez sur OK.
Nous allons créer 2 macros supplémentaires que nous allons lier aux 2 zones en question.
Dans le module macro, rajoutez :
Proc NbMois()
nbm = FeuillesBoîteDialogue("dialog1").ZonesModification("Mensualités").Texte
Plage("B6").Sélectionner
CelluleActive.Valeur = nbm
Fin Proc
Proc Lapport()
APP = FeuillesBoîteDialogue("dialog1").ZonesModification("Apport").Texte
Plage("B3").Sélectionner
CelluleActive.Valeur = APP
Fin Proc
14
EXCEL VBA
BOITE DE DIALOGUE
Dans la feuille Dialog1 sélectionnez la zone de modification appelée précedemment "Mensualités" puis
menu [Outils][Affecter une macro], choisir NbMois.
Faites la même chose pour la zone nommée Apport en lui affectant la macro Lapport.
Sélectionnez la Feuil1 et cliquez sur le bouton "Emprunts".
Choisissez NISSAN sur 12 mensualités et un apport de 3.
Cliquez sur OK
Vous constatez que les valeurs s'inscrivent dans le tableau.
enfin si vous souhaitez qu'à chaque apparition de la boite de dialogue, les valeurs des zones mensualités
et apport soitent remises à zéro, ajoutez dans la procédure BteEmprunt les deux lignes suivantes.
FeuillesBoîteDialogue("dialog1").ZonesModification("Mensualités").Texte=0
FeuillesBoîteDialogue("dialog1").ZonesModification("Apport").Texte=0
Bonne Chance !
AFCI-NEWSOFT
Page 15
CREATION DE MENUS
Lorsque vous êtes satisfait d'une macro et que vous souhaitez l'utiliser souvent, vous avez la possibilité
de "l'accrocher" à un menu.
Lorsque vous aurez réalisé un ensemble de macros constituant une application cohérente vous aurez la
possibilité de créer une nouvelle barre de menu qui "fermera" votre application.
AJOUTER UNE COMMANDE A UN MENU
Pour ajouter une commande à un menu, 3 zones sont nécessaires dans la feuille de macro
1. La macro qui crée la commande du menu.
2. Une zone qui décrit la commande et la macro à exécuter sur cette commande.
3. La macro à exécuter lorsqu'on valide la commande.
Notre exemple montrera comment ajouter la commande [Echéancier] au menu contextuel des cellules.
Le menu contextuel s'affiche lorsqu'on pointe sur une
cellule et qu'on enfonce le bouton droit de la souris au
lieu du bouton gauche.
Le menu contextuel offre les options les plus utilisées
sur les cellules
Sur la feuille macro ou nous avons déjà créée la
macro échéancier, nous allons dans une zone vierge
décrire les éléments du menu. Nous aurons besoin de
3 cellules en ligne
La première cellule contient le nom de la commande
Echéancier
La seconde cellule contient le nom de la macro a lancer
MACRO1.XLM!ECHEANCIER
La troisième cellule contient le message à afficher dans la barre Crée un échéancier au mois le mois
d'état
La macro appelée sera celle que nous avons construit sous le nom échéancier. Noter qu'il faudra
indiquer le nom de la feuille macro qui la contient.
16
EXCEL VBA
CREATION DE MENUS
Une fois créée la zone du menu, nous allons créer la macro qui fabriquera le menu. C'est une macro
simple qui ne fera que deux ligne
MONMENU
=AJOUTER.COMMANDE(7;1;C7:E7;1)
=RETOUR()
La fonction AJOUTER.COMMANDE a besoin de 4 paramètres
•
Le numéro de la barre de menu dans laquelle on doit insérer la commande. Les deux plus
intéressantes sont la barre standard : N° 1 et la barre contextuelle N° 7
•
Ici nous avons choisi la barre contextuelle N° 7
•
Le numéro du menu dans lequel on veut ajouter la commande. Dans la barre standard le menu
[Fichier] porte le numéro 1, le menu [Edition] porte le numéro 2, le menu [Sélection] porte le
numéro 3, Etc.
•
La plage de cellule ou nous avons construits la commande (voir paragraphe précédent)
•
La position à laquelle nous voulons voir apparaître la commande. ainsi, dans le menu [Edition] de
la barre de menu standard si l'on souhaite ajouter une commande entre [Copier] et [Coller]
•
on devra indiquer le numéro 5
La macro se termine par le sempiternel RETOUR()
Il ne reste plus qu'à nommer la macro et la lancer dans la feuille de calcul pour qu'elle soit activée.
AFCI-NEWSOFT
Page 17
MENUS
AJOUT DANS LA BARRE ACTIVE
Avec BarreMenusActive.Menus("?")
AffecteRéf x = .ElémentsMenus.Ajouter(" Plus d'inf&o"; "ma_Macro")
Fin Avec
Cette procédure ajoute une commande "Plus d'info" dans le menu d'aide de la barre de menu active.
Lorsque cette commande est sélectionnée, Excel exécute la macro dénommée "ma_macro"
18
EXCEL VBA
35 COMMANDES A MAITRISER
35 COMMANDES A MAITRISER
COMMANDES DE SELECTION
ATTEINDRE
Application.Atteindre référence:=FeuillesCalcul(1).Plage("A154");défilement:=Vrai
Sélectionne une plage quel classeur et active ce dernier s'il n'est pas encore actif.
SELECTIONNER
Plage(Cellules(1;1); Cellules(3;2)).Sélectionner
Sélectionne la plage allant de la cellule située ligne 1, Colonne 1 à la cellule située Ligne 3 colonne 2
CELLULEACTIVE
AffecteRéf maSélection = Application.CelluleActive
maSélection.Valeur = 42
Cet exemple désigne la cellule active comme valeur de la variable maSélection, puis désigne 42 comme
valeur de la cellule active.
Avec CelluleActive
.Police.Italique = Non (.Police.Italique)
Fin Avec
Cet exemple applique ou enlève le format italique du texte contenu dans la cellule active.
PLAGE
Une cellule, une ligne, une colonne, une sélection de cellules, une sélection multiple ou une plage 3D.
Voici quelques exemples d'utilisation des principales propriétés et méthodes de l'objet Plage.
Méthode Cellules
Utilisez la méthode Cellules pour renvoyer une seule cellule, comme dans les exemples suivants :
Cellules(1;1).Valeur = 24
'Désigne 24 comme valeur de la cellule A1
Cellules(2;1).Formule = "=SOMME(B1:B5)"
'Entre une formule dans la cellule A2
Bien que vous puissiez utiliser Plage("A1") ou simplement[a1] pour renvoyer la cellule A1, ces formes ne
sont pas aussi utiles que la notation Cellules(indexLigne; indexColonne). L'exemple suivant illustre
pourquoi la notation Cellules(indexLigne; indexColonne) est tellement utile (copiez le code dans un
module, puis exécutez-le à partir d'une feuille de calcul) :
Proc DéfinirTable()
AFCI-NEWSOFT
Page 19
Pour anVar = 1 à 5
Cellules(1;anVar + 1).Valeur = 1990 + anVar
Suivant anVar
Pour leTrimestre = 1 à 4
Cellules(leTrimestre + 1;1).Valeur = "T" & leTrimestre
Suivant leTrimestre
Fin Proc
Bien que vous puissiez manipuler les références de style A1 à partir de fonctions de chaîne de caractères
de Visual Basic, il est beaucoup plus facile (et beaucoup plus rationnel au niveau de la programmation)
d'utiliser la notation Cellules(1;1).
Méthode Plage
Utilisez la méthode Plage pour renvoyer une plage de cellules rectangulaire. L'exemple suivant remplit la
plage A1:H8 avec la chaîne de caractères "Test":
Proc RemplirLaPlage()
Plage(Cellules(1;1); Cellules(8;8)).Valeur = "Test"
Fin Proc
Vous pouvez également recourir à la méthode Plage pour renvoyer une plage nommée, comme dans
l'exemple suivant :
Proc EffacerCritèresBaseDeDonnées()
Plage("Critères").EffacerContenu
Fin Proc
Sélections multiples
Utilisez les méthodes Réunion et Plage pour renvoyer des sélections multiples. L'exemple suivant crée un
objet nommé maSélectionMultiple, le définit comme la sélection multiple de A1:B2 et C3:D4, puis le
sélectionne :
Proc AfficherSélectionMultiple()
Dcl p1; p2; maSélectionMultiple En Plage
(Dcl veut dire déclare)
AffecteRéf p1 = Plage(Cellules(1;1); Cellules(2;2))
AffecteRéf p2 = Plage(Cellules(3;3); Cellules(4;4))
AffecteRéf maSélectionMultiple = Réunion(p1;p2)
maSélectionMultiple.Sélectionner
Fin Proc
20
EXCEL VBA
35 COMMANDES A MAITRISER
MÉTHODE DÉCALER
Quand vous enregistrez des macros en utilisant des références relatives, l'enregistreur de macro utilise la
méthode Décaler pour noter les sélections que vous opérez dans une feuille de calcul. Par exemple, voici
ce qui est enregistré dans un module Visual Basic lorsque vous déplacez la cellule active de A1 en B2 :
Proc Macro(1)
CelluleActive.Décaler(1;1).Plage("A1").Sélectionner
Fin Proc
SELECTIONS PRECEDENTES
Application.SélectionsPrécédentes(1).Sélectionner
SELECTIONNER JUSQU'A LA DERNIERE CELLULE
Plage(CelluleActive; Cellules(xlDernièreCellule)).Sélectionner
Sélectionne la plage qui va de la cellule active jusqu'à la derniere cellule de la ligne
Plage(CelluleActive; Cellules(; xlDernièreCellule)).Sélectionner
Sélectionne la plage qui va de la cellule active jusqu'à la derniere cellule de la colonne
Plage(CelluleActive; Cellules(xlDernièreCellule; xlDernièreCellule)).Sélectionner
Sélectionne la plage qui va de la cellule active jusqu'à la derniere cellule de la ligne et la dernière cellule
de la colonne.
SELECTIONNER UNE FEUILLE
Feuilles("Nom de la feuille").Sélectionner
Exemple Feuilles("janvier").Sélectionner ou
Feuilles("Feuil2").Sélectionner
OUVRIR UN CLASSEUR
Classeurs.Ouvrir NomFichier:="FACTURE.XLS"
Feuilles("Feuil3").Sélectionner
Ouvre le classeur Facture
Sélectionne la feuille 3 du classeur Facture
COMMANDES DE SAISIES
MESSAGE
Message("Tiens voila dumoulin")
Affiche une boite avec le message
Message(CelluleActive)
Affiche dans une boite le contenu de la cellule active
Syntaxe approffondie : Message(Texte du message;style de la boite;Titre) ou le style de la boite définit
les boutons apparents, les icones d'alerte, et le bouton par défaut.
Exemple Proc Question()
AFCI-NEWSOFT
Page 21
MSG="Voulez vous continuer"
STYLE=vbOuiNon+vbCritique+vbBoutonDéfaut2
TITRE="Démo de Message"
Réponse=Message(Msg;Style;titre)
Si Réponse=vbOui alors
Cellules(3;3).valeur="C'est oui"
Sinon
Cellules(3;3).valeur="C'est non"
FinSi
Fin proc
COMMANDES DE MANIPULATION
22

Documents pareils