Conseils

VBA - Le partenaire de travail Visual Basic

VBA - Le partenaire de travail Visual Basic


We are searching data for your request:

Forums and discussions:
Manuals and reference books:
Data from registers:
Wait the end of the search in all databases.
Upon completion, a link will appear to access the found materials.

L’une des qualités les plus remarquables de Visual Basic est qu’il s’agit d’un Achevée environnement de développement. Quoi que vous souhaitiez faire, il existe une «saveur» de Visual Basic pour vous aider à faire le travail! Vous pouvez utiliser Visual Basic pour le développement de bureau et mobile et à distance (VB.NET), la génération de scripts (VBScript) et le développement Office (VBA !) Si vous avez essayé VBA et que vous voulez en savoir plus sur son utilisation, c'est le tutoriel pour vous. (Ce cours est basé sur la version de VBA disponible dans Microsoft Office 2010.)

Si vous recherchez un cours dans Microsoft Visual Basic .NET, vous avez également trouvé le bon endroit. Check out: Visual Basic .NET 2010 Express - Didacticiel "Du début à la fin"

VBA en tant que concept général sera traité dans cet article. VBA est plus que vous ne le pensez! Vous pouvez également trouver des articles sur les sœurs Office VBA:

Il existe essentiellement deux méthodes pour développer des programmes pouvant fonctionner avec des applications Office: VBA et VSTO. En octobre 2003, Microsoft a introduit une amélioration dans l’environnement de programmation professionnel Visual Studio .NET appelée Visual Studio Tools pour Office - VSTO. Mais même si VSTO exploite les avantages considérables de .NET dans Office, VBA reste plus populaire que VSTO. VSTO nécessite l'utilisation de la version professionnelle ou supérieure de Visual Studio, qui vous coûtera probablement plus cher que l'application Office que vous utilisez, en plus de l'application Office. Mais puisque VBA est intégré à l'application Office hôte, vous n'avez besoin de rien d'autre.

VBA est principalement utilisé par les experts Office qui souhaitent rendre leur travail plus rapide et plus simple. Vous voyez rarement de gros systèmes écrits en VBA. VSTO, en revanche, est utilisé par les programmeurs professionnels des grandes entreprises pour créer des compléments complexes. Une application provenant d'une tierce partie, telle qu'une société de papier pour Word ou un cabinet comptable pour Excel, est plus susceptible d'être écrite à l'aide de VSTO.

Dans leur documentation, Microsoft note qu'il existe essentiellement trois raisons d'utiliser VBA:

-> Automatisation et répétition - Les ordinateurs peuvent faire la même chose encore et encore, bien mieux et plus vite que les gens ne le peuvent.

-> Extensions to User Interaction - Voulez-vous suggérer exactement comment quelqu'un doit formater un document ou enregistrer un fichier? VBA peut le faire. Voulez-vous valider ce que quelqu'un entre? VBA peut le faire aussi.

-> Interaction entre les applications Office 2010 - Un article ultérieur de cette série est intitulé Travailler ensemble avec Word et Excel. Mais si c'est ce dont vous avez besoin, vous voudrez peut-être envisager Bureautique, c’est-à-dire écrire le système à l’aide de VB.NET, puis utiliser les fonctions d’une application Office telle que Word ou Excel, selon les besoins.

Microsoft a déclaré qu’ils continueraient à prendre en charge VBA et qu’il figure en bonne place dans le Officiel Feuille de route du développement Microsoft Office 2010. Vous avez donc autant de garanties que Microsoft n'a jamais donné que votre investissement dans le développement de VBA ne sera pas obsolète dans un avenir proche.

D'autre part, VBA est le dernier produit Microsoft encore dépendant de la technologie VB6 "COM". Il a plus de vingt ans maintenant! Dans les années humaines, cela le rendrait plus âgé que Lestat le vampire. Vous pouvez voir cela comme "essayé, testé et vrai" ou vous pouvez le penser comme "ancien, usé et obsolète". J'ai tendance à préférer la première description, mais vous devriez être au courant des faits.

La première chose à comprendre est la relation entre VBA et les applications Office telles que Word et Excel. L’application Office est un hôte pour VBA. Un programme VBA ne peut jamais être exécuté par lui-même. VBA est développé dans l’environnement hôte (en utilisant le Développeur dans le ruban de l’application Office) et doit être exécuté dans le cadre d’un document Word, d’un classeur Excel, d’une base de données Access ou d’un autre hôte Office.

La manière dont VBA est réellement utilisé est également différente. Dans une application telle que Word, VBA est principalement utilisé pour accéder aux objets de l'environnement hôte, par exemple pour accéder aux paragraphes d'un document à l'aide de l'objet Word.Document.Paragraphs de Word. Chaque environnement hôte fournit des objets uniques qui ne sont pas disponibles dans les autres environnements hôtes. (Par exemple, il n'y a pas de "classeur" dans un document Word. Un classeur est unique dans Excel.) Le code Visual Basic sert principalement à permettre l'utilisation d'objets personnalisés pour chaque application hôte Office.

La fusion entre le code VBA et le code spécifique à l'hôte est visible dans cet exemple de code (tiré de la base de données exemple Microsoft Northwind) où le code purement VBA est affiché en rouge et le code spécifique à Access en bleu. Le code rouge serait le même dans Excel ou Word, mais le code bleu est unique pour cette application Access.

La VBA elle-même est presque identique à celle des années précédentes. La façon dont il s'intègre à l'application Office hôte et au système d'aide a été améliorée.

La version 2010 d'Office n'affiche pas l'onglet Développeur par défaut. L'onglet Développeur vous emmène dans la partie de l'application où vous pouvez créer des programmes VBA. La première chose à faire est donc de changer cette option. Allez simplement dans l'onglet Fichier, Options, Personnaliser le ruban et cliquez sur la case Développeur dans les onglets principaux.

Le système d’aide fonctionne beaucoup plus facilement que dans les versions précédentes. Vous pouvez obtenir de l'aide pour vos questions VBA soit en mode hors connexion, à partir d'un système installé avec votre application Office, ou en ligne à partir de Microsoft via Internet. Les deux interfaces sont conçues pour se ressembler beaucoup:

--------
Cliquez ici pour afficher l'illustration
--------

Si votre connexion Internet est rapide, l’aide en ligne vous donnera des informations plus nombreuses et de meilleure qualité. Mais la version installée localement sera probablement plus rapide et dans la plupart des cas, elle sera tout aussi bonne. Vous voudrez peut-être définir l'aide locale par défaut, puis utiliser l'aide en ligne si la version locale ne vous donne pas ce que vous voulez. Le moyen le plus rapide d'accéder à Internet consiste à sélectionner simplement "Tous les mots" (ou "Tout Excel" ou une autre application) dans le menu déroulant Rechercher de l'aide. Cela va immédiatement aller en ligne et effectuer la même recherche, mais cela ne réinitialisera pas votre sélection par défaut.

--------
Cliquez ici pour afficher l'illustration
--------

La page suivante explique comment créer un programme VBA.

Lorsque VBA est "hébergé" par une application telle que Word ou Excel, le programme "demeure" dans le fichier de document utilisé par l'hôte. Par exemple, dans Word, vous pouvez enregistrer votre "macro Word" (c'est ne pas une "macro", mais nous ne discuterons pas de terminologie pour le moment), que ce soit dans un document Word ou un modèle Word.

Supposons maintenant que ce programme VBA soit créé dans Word (ce programme simple change simplement la police en gras pour une ligne sélectionnée) et est enregistré dans un document Word:

Sub AboutMacro () "AboutMacro Macro" Macro enregistré le 9/09/9999 par Dan Mabbutt "Selection.HomeKey Unit: = wdStory Selection.EndKey Unit: = wdLine, Extend: = wdExtend Selection.Font.Bold = wdToggle Selection.EndKey Unit: = wdStory End Sub

Dans les versions antérieures d'Office, vous pouviez voir clairement le code VBA stocké en tant que partie du fichier de document dans le document Word enregistré en l'affichant dans le Bloc-notes où tout ce qui se trouvait dans le document Word pouvait être vu. Cette illustration a été produite avec une version antérieure de Word car Microsoft a modifié le format du document dans la version actuelle et le code du programme VBA ne s'affiche plus clairement en tant que texte brut. Mais le principe est le même. De même, si vous créez une feuille de calcul Excel avec une "macro Excel", celle-ci sera enregistrée dans un fichier .xlsm.

--------
Cliquez ici pour afficher l'illustration
--------

VBA et sécurité

L'une des astuces les plus efficaces contre les virus informatiques du passé consistait à insérer du code VBA malveillant dans un document Office. Avec les versions précédentes d'Office, lorsqu'un document était ouvert, le virus pouvait s'exécuter automatiquement et créer des ravages sur votre ordinateur. Cette faille de sécurité ouverte dans Office commençait à avoir un impact sur les ventes d'Office et a vraiment attiré l'attention de Microsoft. Avec la génération actuelle d’Office 2010, Microsoft a complètement bouché le trou. Outre les améliorations mentionnées ici, Microsoft a amélioré la sécurité Office d'une manière que vous ne remarquerez peut-être même pas jusqu'au niveau du matériel. Si vous hésitez à utiliser VBA parce que vous avez entendu dire que ce n'était pas sûr, soyez assuré que Microsoft a fait un effort supplémentaire pour changer cela maintenant.

Le changement le plus important consistait à créer un type de document spécial uniquement pour les documents Office incluant des programmes VBA. Par exemple, dans Word, MyWordDoc.docx ne peut pas contenir de programme VBA car Word n'autorisera pas les programmes d'un fichier enregistré avec une extension de fichier "docx". Le fichier doit être enregistré en tant que "MyWordDoc.docm" pour que la programmation VBA soit autorisée en tant que partie du fichier. Dans Excel, l’extension de fichier est ".xlsm".

Pour accompagner ce type de document amélioré, Microsoft a créé un nouveau sous-système de sécurité dans Office appelé Centre de gestion de la confidentialité. Pour l'essentiel, vous pouvez personnaliser la manière dont votre application Office traite les documents contenant du code VBA de manière très détaillée. Vous ouvrez le Centre de gestion de la confidentialité à partir de l'onglet Développeur de votre application Office en cliquant sur Sécurité des macros dans la section Code du ruban.

--------
Cliquez ici pour afficher l'illustration
--------

Certaines des options sont conçues pour «durcir» vos applications Office afin que le code malveillant ne s'exécute pas, tandis que d'autres sont conçues pour aider les développeurs et les utilisateurs à utiliser VBA sans que la sécurité ne ralentisse inutilement les choses. Comme vous pouvez le constater, il existe de nombreuses façons de personnaliser la sécurité. Toutes ces procédures vont bien au-delà de la portée de cet article. Heureusement, le site de Microsoft contient une documentation complète sur ce sujet. Et il est également heureux que les paramètres de sécurité par défaut répondent à la plupart des besoins.

VBA étant lié à l'application Office hôte, vous devez l'exécuter à cet emplacement. Ce sujet est couvert à partir de la page suivante.

Comment exécuter une application VBA

C'est en fait une très bonne question car c'est la première question que les utilisateurs de votre application vont demander. Il y a fondamentalement deux manières:

-> Si vous décidez de ne pas utiliser de contrôle, tel qu'un bouton, pour démarrer le programme, vous devez utiliser la commande Macros du ruban (onglet Développeur, groupe de codes). Sélectionnez le programme VBA et cliquez sur Exécuter. Mais cela peut sembler un peu trop pour certains de vos utilisateurs. Par exemple, vous ne souhaitez peut-être même pas que l'onglet Développeur leur soit accessible. Dans ce cas…

-> Vous devez ajouter quelque chose sur lequel l'utilisateur peut cliquer ou taper pour démarrer l'application. Dans cet article, nous allons examiner le contrôle Button. Mais il peut s'agir d'un clic sur un raccourci, d'une icône dans une barre d'outils ou même de l'acte de saisie de données. Ceux-ci s'appellent événements et ce que nous allons écrire dans cet article et dans les articles suivants est code de l'événement - code de programme qui est automatiquement exécuté lorsqu'un événement spécifique - tel que cliquer sur un contrôle Button - se produit.

UserForms, contrôles de formulaire et contrôles ActiveX

Si vous ne sélectionnez pas simplement une macro, le moyen le plus courant d'exécuter un programme VBA consiste à cliquer sur un bouton. Ce bouton peut être soit un contrôle de forme ou un Contrôle ActiveX. Dans une certaine mesure, vos choix dépendent de l'application Office que vous utilisez. Excel fournit des choix légèrement différents de Word, par exemple. Mais ces types de contrôles fondamentaux sont les mêmes.

Comme il offre la plus grande flexibilité, examinons ce que vous pouvez faire avec Excel 2010. Un simple message texte sera inséré dans une cellule lorsque plusieurs boutons seront cliqués, ce qui rendra les différences plus claires.

Pour commencer, créez un nouveau classeur Excel et sélectionnez l'onglet Développeur. (Si vous avez une autre application Office, une variante de ces instructions devrait fonctionner.)

Cliquez sur l'icône Insérer. Nous allons d'abord utiliser le bouton Contrôles de formulaire.

Les contrôles de formulaire sont l'ancienne technologie. Dans Excel, ils ont été introduits pour la première fois dans la version 5.0 en 1993. Nous travaillerons ensuite avec VBA UserForms, mais les contrôles de formulaire ne peuvent pas être utilisés avec eux. Ils ne sont également pas compatibles avec le Web. Les contrôles de formulaire sont placés directement sur la surface de la feuille de calcul. D'autre part, certains contrôles ActiveX - que nous considérons ensuite - ne peuvent pas être utilisés directement dans des feuilles de calcul.

Les contrôles de formulaire sont utilisés avec une technique "cliquer et dessiner". Cliquez sur le contrôle de formulaire Button. Le pointeur de la souris se transformera en un signe plus. Dessinez le contrôle en faisant glisser sur la surface. Lorsque vous relâchez le bouton de la souris, une boîte de dialogue s'ouvre pour vous demander de spécifier une macro-commande à connecter avec le bouton.

--------
Cliquez ici pour afficher l'illustration
--------

En particulier lorsque vous créez un contrôle pour la première fois, vous n'avez pas de macro VBA en attente de connexion avec le bouton. Cliquez donc sur Nouveau et l'éditeur VBA s'ouvrira avec le nom suggéré déjà renseigné dans le shell d'un événement. sous-programme.

--------
Cliquez ici pour afficher l'illustration
--------

Pour compléter cette application très simple, tapez simplement cette instruction de code VBA dans le Sub:

Cells (2, 2) .Value = "Le bouton du formulaire a été cliqué"

Un bouton ActiveX est presque exactement le même. Une différence est que VBA place ce code dans la feuille de calcul, pas dans un module séparé. Voici le code d'événement complet.

Private Sub CommandButton1_Click () Cells (4, 2) .Value = "Bouton ActiveX cliqué" End Sub

En plus de placer ces contrôles directement sur la feuille de calcul, vous pouvez également ajouter un UserForm au projet et place des contrôles sur cela à la place. UserForms - à peu près la même chose que les formulaires Windows - offre de nombreux avantages, car il vous permet de gérer vos contrôles plus comme une application Visual Basic normale. Ajoutez un objet UserForm au projet dans l'éditeur Visual Basic. Utilisez le menu Affichage ou cliquez avec le bouton droit dans l'Explorateur de projets.

--------
Cliquez ici pour afficher l'illustration
--------

La valeur par défaut pour un objet UserForm est de ne pas afficher le formulaire. Donc, pour le rendre visible (et rendre les contrôles sur l'utilisateur disponibles), exécutez la méthode Show du formulaire. J'ai ajouté un autre bouton de formulaire juste pour cela.

Sub Button2_Click () UserForm1.Show End Sub

Vous remarquerez que le UserForm est modal par défaut. Cela signifie que lorsque le formulaire est actif, tout le reste de l'application est inactif. (Cliquer sur les autres boutons ne fait rien, par exemple.) Vous pouvez modifier cela en modifiant la propriété ShowModal de UserForm en False. Mais cela nous entraîne plus profondément dans la programmation. Les prochains articles de cette série expliqueront plus à ce sujet.

Le code de l'objet UserForm est placé dans l'objet UserForm. Si vous sélectionnez Afficher le code pour tous les objets dans l'Explorateur de projet, vous constaterez qu'il existe trois sous-routines d'événements Click distinctes contenues dans trois objets différents. Mais ils sont tous disponibles dans le même classeur.

--------
Cliquez ici pour afficher l'illustration
--------

En plus de forcer un événement en cliquant sur un bouton, VBA est également utilisé pour réagir aux événements dans les objets de l'application d'hébergement. Par exemple, vous pouvez détecter le moment où une feuille de calcul est modifiée dans Excel. Vous pouvez également détecter le moment où une ligne est ajoutée à une base de données dans Access et écrire un programme pour gérer cet événement.

En plus des boutons de commande, zones de texte et autres composants familiers que vous voyez tout le temps dans les programmes, vous pouvez ajouter des composants qui font en réalité partie de votre feuille de calcul Excel. dans votre document Word. Ou faire l'inverse. Cela va bien au-delà du "copier-coller". Par exemple, vous pouvez afficher une feuille de calcul Excel dans un document Word.

VBA vous permet d'utiliser toute la puissance d'une application Office dans une autre. Par exemple, Word a une capacité de calcul relativement simple intégrée. Mais Excel - bien - "excelle" en calcul. Supposons que vous souhaitiez utiliser le journal naturel de la fonction Gamma (un calcul mathématique relativement sophistiqué) dans votre document Word? Avec VBA, vous pouvez transmettre des valeurs à cette fonction dans Excel et obtenir la réponse dans votre document Word.

Et vous pouvez utiliser beaucoup plus que les applications Office! Si vous cliquez sur l'icône "Plus de contrôles", vous verrez une liste considérable d'éléments installés sur votre ordinateur. Tous ne fonctionnent pas "hors de la boîte" et vous devriez avoir la documentation pour chacun d'eux disponible, mais cela vous donne une idée de l'ampleur de la prise en charge de VBA.

Parmi toutes les fonctionnalités de VBA, il en est une qui est clairement plus utile que toute autre. Découvrez ce que c'est sur la page suivante.

J'ai gardé le meilleur pour la fin! Voici une technique qui s’applique globalement à toutes les applications Office. Vous allez souvent vous en servir, alors nous en parlons ici dans l'introduction.

Lorsque vous commencez à coder des programmes VBA plus sophistiqués, l'un des premiers problèmes que vous rencontrerez est la découverte des méthodes et propriétés des objets Office. Si vous écrivez un programme VB.NET, vous rechercherez souvent des exemples de code et des exemples pour résoudre ce problème. Mais lorsque vous considérez toutes les différentes applications d'hébergement et le fait qu'elles ont chacune des centaines de nouveaux objets, vous ne pouvez généralement pas trouver quelque chose qui correspond exactement à ce que vous devez faire.

La réponse est le "Record Macro…"

L'idée de base est d'activer "Enregistrer une macro", suivez les étapes d'un processus similaire à ce que vous souhaitez que votre programme accomplisse, puis vérifiez le code et les idées du programme VBA obtenu.

Beaucoup de gens font l'erreur de penser qu'il faut pouvoir enregistrer exactement le programme dont vous avez besoin. Mais ce n'est pas du tout nécessaire d'être aussi précis. Il est généralement suffisant d'enregistrer un programme VBA qui soit juste "proche" de ce que vous voulez, puis d'ajouter les modifications de code pour lui permettre de faire le travail avec précision. C'est tellement simple et utile que je vais parfois enregistrer une douzaine de programmes avec de légères différences, juste pour voir quelles sont les différences de code dans le résultat. N'oubliez pas de supprimer toutes les expériences lorsque vous avez fini de les regarder!

Par exemple, j'ai cliqué sur Enregistrer une macro dans Word Visual Basic Editor et tapé plusieurs lignes de texte. Voici le résultat. (Des continuations de ligne ont été ajoutées pour les raccourcir.)

Sub Macro1 () "Macro1 Macro" Selection.TypeText Text: = _ "Voici les moments où" Selection.TypeText Text: = _ "tente les âmes des hommes. Le" Selection.TypeText Text: = _ "soldat d'été" Selection.TypeText Text: = _ "et le patriot sunshine" Selection.TypeText Text: = _ "seront, dans ces moments, rétrécis de" Selection.TypeText Text: = _ "le service de leur pays." Selection.MoveUp Unit: = wdLine, Count: = 1 Selection.HomeKey Unit: = wdLine Selection.MoveRight Unit: = wdCharacter, _ Count: = 5, Extend: = wdExtend Selection.Font.Bold = wdToggle End Sub

Personne n'étudie la VBA juste pour soi. Vous l'utilisez toujours avec une application Office spécifique. Donc, pour continuer à apprendre, il existe des articles ici qui illustrent l'utilisation de VBA avec Word et Excel:

-> Démarrer avec VBA: le partenaire de travail de Word

-> Démarrer avec VBA: le partenaire de travail Excel


Voir la vidéo: VBA Excel. Module de déclaration (Juillet 2022).


Commentaires:

  1. Akishura

    Je vais mieux, peut-être que je garderai le silence

  2. Husam Al Din

    Vous n'êtes pas correcte. Je suis sûr. Je propose d'en discuter. Envoyez-moi un courriel à PM, nous parlerons.

  3. Dutch

    Il y a quelque chose. Maintenant, tout est devenu clair pour moi, je remercie pour l'information.

  4. Edbert

    C'est l'information drôle

  5. Vushakar

    pensée cool

  6. Cinnard

    Je confirme. C'était avec moi aussi. Nous pouvons communiquer sur ce thème. Ici ou à PM.



Écrire un message