EXEMPLE DE CREATION D'UNE MACRO FONCTION



Documents pareils
TABLEAU CROISE DYNAMIQUE

Excel 2007 Niveau 3 Page 1

1. Introduction Création d'une macro autonome Exécuter la macro pas à pas Modifier une macro... 5

TD3 - Facturation avec archivage automatisé

Automatisation d'une Facture 4. Liste Déroulante Remises Case à cocher Calculs

Guide d'utilisation. OpenOffice Calc. AUTEUR INITIAL : VINCENT MEUNIER Publié sous licence Creative Commons

Traitement de texte : Quelques rappels de quelques notions de base

POUR ALLER UN PEU PLUS LOIN SUR UN TABLEUR. Version EXCEL

Date M.P Libellé Catégorie S.Catégorie Crédit Débit Solde S.B

INSERER DES OBJETS - LE RUBAN INSERTION... 3 TABLEAUX

Publipostage avec Calc

RACCOURCIS CLAVIERS. DEFINITION : Une «combinaison de touches» est un appui simultané sur plusieurs touches.

GUIDE Excel (version débutante) Version 2013

REPUBLIQUE ALGERIENNE DEMOCRATIQUE ET POPULAIRE MINISTERE DE LA FORMATION PROFESSIONNELLE. Microsoft. Excel XP

Note de cours. Introduction à Excel 2007

EXCEL PERFECTIONNEMENT SERVICE INFORMATIQUE. Version /11/05

Université Ibn Zohr Excel Résume de cours

les Formulaires / Sous-Formulaires Présentation Créer un formulaire à partir d une table...3

Cours Excel : les bases (bases, texte)

EXCEL PERFECTIONNEMENT CALCULS AVANCES

Université Bordeaux 1. Formation Excel Initiation. Hanquiez Vincent, UMR 5805-EPOC

Microsoft Excel. Tableur

Microsoft Excel Présentation du tableur Excel

Valeur cible et solveur. Les calculs effectués habituellement avec Excel utilisent des valeurs numériques qui constituent les données d'un problème.

Livret Cours Microsoft office 2007 Tableur Excel Perfectionnement

Débuter avec Excel. Excel

SOMMAIRE. Travailler avec les requêtes... 3

Parcours FOAD Formation EXCEL 2010

EXCEL TUTORIEL 2012/2013

Excel. Identification. Informations sur vos besoins et objectifs. Notions fondamentales. Fiche de validation des besoins en formation Bureautique

Réaliser un PUBLIPOSTAGE

Utiliser un tableau de données

Initiation à Excel. Frédéric Gava (MCF)

TUTORIEL IMPRESS. Ouvrir Impress cocher «présentation vierge», «suivant» cocher «écran», «suivant» cocher «standard», «créer»

Alain DI MAGGIO Mise à jour sur le site 11/01/10

Créer un diaporama avec Open Office. Sommaire

AGASC / BUREAU INFORMATION JEUNESSE Saint Laurent du Var Tel : bij@agasc.fr Word: Les tableaux.

PARAMETRER LA MESSAGERIE SOUS THUNDERBIRD

Astuces_Générales1_excel.doc - bitsch.gerard@orange.fr VERTOU Page : 1 / 29

La Clé informatique. Formation Excel XP Aide-mémoire

COPIER, COUPER, COLLER, SELECTIONNER, ENREGISTRER.

Comment créer et utiliser une fonction

Avant-propos FICHES PRATIQUES EXERCICES DE PRISE EN MAIN CAS PRATIQUES

Formation tableur niveau 1 (Excel 2013)

Créer un tableau avec LibreOffice / Calc

Formation > Développement > Internet > Réseaux > Matériel > Maintenance

1. Introduction Création d'une requête...2

Cours Access 1) INTRODUCTION AU SGBD...4 2) LES TABLES...4

INITIATION A EXCEL Année

BML Informatique Tableur OpenOffice.org Calc Mercredi 8 avril 2015

Utilisation du client de messagerie Thunderbird

Premiers Pas avec OneNote 2013

Volet de visualisation

Le publipostage avec Open Office

Comment réaliser une capture d écran dans Word. Alors comment ouvrir une page Word?

Prendre en main le logiciel ActivInspire 1.4

Le cas «BOURSE» annexe

TABLEAU CROISE DYNAMIQUE

Formation Comptabilité SAGE L 100 FORMATION SAARI SAGE LIGNE 100 COMPTABILITE

Publipostage avec Open Office Writer et Open Office Calc

Publication Assistée par Ordinateur

Saisissez le login et le mot de passe (attention aux minuscules et majuscules) qui vous ont

Semestre3 (Licence Economie et Gestion) EXCEL : interface. Une fois lancé, Excel crée par défaut un "classeur" nommé «classeur1.xls».

Uniformiser la mise en forme du document. Accélère les mises à jour. Permets de générer des tables de matières automatiquement.

COURS WINDEV NUMERO 3

Cours Modélisation et Programmation avec tableur

COURS BARDON - EXCEL 2010

Guide de démarrage rapide Centre de copies et d'impression Bureau en Gros en ligne

Comment bien démarrer avec. NetAirClub GUIDE ADMINISTRATEUR V1.5. Table des matières

La formation informatique en ligne INFOS COURS - FORUM SUPPORT DE COURS WOR MICROSOFT

PowerPoint offre trois modes d affichage principaux : le mode Normal, le mode Trieuse de diapositives et le mode Diaporama

Le cas «BOURSE» annexe

Création de site Internet avec Jimdo

Guide de démarrage Janvier 2012

l'ordinateur les bases

Créer des étiquettes avec les adresses d'un tableau Calc

Création d'un site dynamique en PHP avec Dreamweaver et MySQL

Microsoft Excel 2000 Fonctions avancées

Comment utiliser sa messagerie laposte.net

GanttProject : guide utilisateur

Page Paragraphe Modification Mise en page du document Le bouton "Format de page" est maintenant "Page"

VOCABULAIRE LIÉ AUX ORDINATEURS ET À INTERNET

Qlik Sense Cloud. Qlik Sense Copyright QlikTech International AB. Tous droits réservés.

Mes premiers diaporamas avec Open Office Impress?

Installation et paramétrage. Accès aux modèles, autotextes et clip- art partagés

CRÉER UNE BASE DE DONNÉES AVEC OPEN OFFICE BASE

A - Créer une Base de données au format dbase

supérieure Vous ne connaissez pas le numéro de version de votre application?

Dessiner dans Galaad FRANÇOIS PALLUT

Utilisation de l éditeur.

Tapez le titre de la page «BASTIA ville méditerranéenne», puis allez deux fois à la ligne à l aide de la touche Entrée.

Securexam Consignes pour l EFU Les 2, 3 et 4 juin 2015

Cours pratique Excel. Dans chacune des feuilles, les donnés sont déjà entrées afin de gagner du temps.

Découvrez Windows NetMeeting

qwertyuiopasdfghjklzxcvbnmqwerty uiopasdfghjklzxcvbnmqwertyuiopas dfghjklzxcvbnmqwertyuiopasdfghjklz mqwertyuiopasdfghjklzxcvbnmqwert

Transcription:

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 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 : FONCTION SURFACE( = Longueur ;Largeur) = Surface=Longueur * Largeur = FIN FONCTION Votre macro est maintenant terminée. UTILISATION DE LA MACRO 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 EXEMPLE DE CREATION D'UNE MACRO FONCTION AFCI-NEWSOFT 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 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 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 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 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 Un nom de compteur ici : I Une valeur de départ Un nombre de 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() Nom de la macro nbmois = BoîteSaisie("Nombre de mois"; "Nbre de mois"; 1) initialise la variable NBMOIS avec la valeur entrée par l'utilisateur CelluleActive.Formule = nbmois Pose le nombre de mois dans la cellule active CelluleActive.Décaler(1; 0).Sélectionner Passe à la cellule suivante DATEDEP = BoîteSaisie("Date de départ"; "Tapez la") Entre la date de départ CelluleActive.Formule = DATEDEP Pose la date de départ dans la cellule active TantQue nbmois > 0 Début de la boucle CelluleActive.Décaler(1; 0).Sélectionner Passe à la cellule suivante CelluleActive.Formule = "=date(annee(l(-1)c);mois(l(- Pose la formule de calcul de date 1)C)+1;jour(L(-1)C))" nbmois = nbmois - 1 Diminue NBMOIS de 1 FinTantQue 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. dessous. 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 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 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 Proc Lapport() APP = FeuillesBoîteDialogue("dialog1").ZonesModification("Apport").Texte Plage("B3").Sélectionner CelluleActive.Valeur = APP 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 La seconde cellule contient le nom de la macro a lancer La troisième cellule contient le message à afficher dans la barre d'état Echéancier MACRO1.XLM!ECHEANCIER Crée un échéancier au mois le mois 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 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" 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 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 20

EXCEL VBA MÉTHODE DÉCALER 35 COMMANDES A MAITRISER 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 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