4 erreurs que vous pouvez éviter lors de la programmation de macros Excel avec VBA

Le code et les macros simples sont les clés des superpuissances Microsoft Excel. Même les non-programmeurs peuvent facilement ajouter des fonctionnalités impressionnantes à leurs feuilles de calcul avec Virtual Basics for Applications (VBA). Évitez simplement ces erreurs de programmation de débutant!

Le code et les macros simples sont les clés des superpuissances Microsoft Excel.  Même les non-programmeurs peuvent facilement ajouter des fonctionnalités impressionnantes à leurs feuilles de calcul avec Virtual Basics for Applications (VBA).  Évitez simplement ces erreurs de programmation de débutant!
Publicité

Microsoft Excel est déjà un outil d'analyse de données très performant, mais avec la possibilité d'automatiser des tâches répétitives avec des macros. Comment envoyer des e-mails depuis une feuille de calcul Excel à l'aide de scripts VBA Comment envoyer des e-mails depuis une feuille de calcul Excel configurer des e-mails automatisés à partir d'Excel à l'aide des scripts Collaboration Data Objects (CDO) et VBA. Nos modèles de code rendent cela beaucoup plus facile que ça en al'air! Lire la suite en écrivant un code simple dans (VBA), c'est beaucoup plus puissant. Cependant, utilisé de manière incorrecte, VBA peut causer beaucoup de problèmes.

Même si vous n'êtes pas un programmeur, VBA offre des fonctions simples qui vous permettent d'ajouter des fonctionnalités vraiment impressionnantes à vos feuilles de calcul, alors ne partez pas encore!

Que vous soyez un gourou de VBA, qui crée des tableaux de bord dans Excel Construisez votre propre tableau de bord météo Dans cette classe de tableur Google Créez votre propre tableau de bord météo dans cette classe Google Spreadsheet Souhaitez-vous transformer votre compte Google Drive en un système intelligent d'analyse météorologique, et vivre une fantaisie Star Trek? D'accord! Lire la suite, ou un débutant, qui ne sait comment écrire des scripts simples qui font des calculs de base de cellules, vous pouvez suivre des techniques de programmation faciles, qui vous aideront à améliorer les chances d'écrire du code propre et sans bug.

Premiers pas avec VBA

Si vous n'avez pas programmé dans VBA dans Excel auparavant, permettre aux outils Developer de le faire est en fait assez facile. Allez dans Fichier > Options, puis Personnaliser le ruban . Déplacez simplement le groupe de commandes Developer du volet de gauche vers la droite.

excel-vba1

Assurez-vous que la case à cocher est activée, et maintenant l'onglet Développeur apparaîtra dans votre menu Excel.

excel-vba2

Le moyen le plus simple d'accéder à la fenêtre de l'éditeur de code est de cliquer sur le bouton Afficher le code sous Contrôles dans le menu Développeur.

1. Noms de variables horribles

Maintenant que vous êtes dans la fenêtre de code, il est temps de commencer à écrire le code VBA Comment vous pouvez faire votre propre application simple avec VBA Comment vous pouvez faire votre propre application simple avec VBA Pour ceux d'entre vous qui aimeraient vraiment être en mesure d'écrire votre propre application, mais n'ont jamais tapé une seule ligne de code avant, je vais vous guider à travers votre très ... Lire la suite. La première étape importante dans la plupart des programmes, que ce soit en VBA ou dans une autre langue, est la définition de vos variables.

Au cours de mes deux décennies de rédaction de code, je suis tombé sur de nombreuses écoles de pensée en matière de conventions de nommage variables et j'ai appris quelques choses à la dure. Voici les conseils rapides pour créer des noms de variables:

  • Faites-les aussi courts que possible.
  • Faites-les aussi descriptifs que possible.
  • Préface les avec le type de variable (booléen, entier, etc ...).
  • N'oubliez pas d'utiliser la bonne portée (voir ci-dessous).

Voici un exemple de capture d'écran d'un programme que j'utilise souvent pour faire des appels WMIC Windows à partir d'Excel pour recueillir des informations PC Comment voir toutes vos informations PC Utilisation d'un simple script VBA Excel Comment voir toutes vos informations PC Utilisation d'un simple Excel VBA Script 10 minutes de travail vous donneront des informations plus détaillées sur votre ordinateur que vous n'auriez jamais cru possible. Cela semble trop beau pour être vrai? C'est Windows, si vous savez comment l'utiliser. Lire la suite .

excel-vba3

Lorsque vous voulez utiliser les variables à l'intérieur d'une fonction à l'intérieur du module ou de l'objet (j'expliquerai cela ci-dessous), vous devez le déclarer comme une variable "publique" en préfacant la déclaration avec Public . Sinon, les variables sont déclarées en les précédant du mot Dim .

Comme vous pouvez le voir, si la variable est un entier, elle est précédée de int . Si c'est une chaîne, alors str . Cela vous aidera plus tard pendant que vous programmez, car vous saurez toujours quel type de données la variable contient, juste en regardant le nom. Vous remarquerez également que s'il y a quelque chose comme une chaîne qui contient un nom d'ordinateur, alors la variable s'appelle strComputerName .

Évitez de créer des noms de variables très compliqués ou déroutants que vous seul comprenez. Rendez-le plus facile pour un autre programmeur de venir derrière vous et de comprendre ce que tout cela signifie!

Une autre erreur que font les gens est de laisser les noms de feuilles par défaut comme "Sheet1", "Sheet2", etc ... Cela ajoute de la confusion à un programme. Au lieu de cela, nommez les feuilles afin qu'elles aient un sens.

excel-vba4

Ainsi, lorsque vous faites référence au nom de la feuille dans votre code VBA Excel Utilisation de VBA pour automatiser des sessions Internet Explorer à partir d'une feuille de calcul Excel Utilisation de VBA pour automatiser des sessions Internet Explorer à partir d'une feuille de calcul Excel façons étonnantes en utilisant le script Visual Basic pour Applications (VBA) à partir de toute application qui le prend en charge, comme Word, Outlook ou Excel. Lire la suite, vous faites référence à un nom qui a du sens. Dans l'exemple ci-dessus, j'ai une feuille où je tire des informations sur le réseau, donc j'appelle la feuille "Réseau". Maintenant, dans le code, chaque fois que je veux faire référence à la feuille réseau, je peux le faire rapidement sans chercher quel numéro de feuille c'est.

2. Casser au lieu de boucler

Un des problèmes les plus courants de programmeur plus récent ont 6 habitudes de vie que la programmation pourrait vous enseigner aujourd'hui 6 habitudes de vie que la programmation pourrait vous enseigner aujourd'hui Tout ce que vous devez savoir sur une vie réussie, vous pouvez obtenir à partir d'un programme informatique. Ne me crois pas? Continuer à lire. Lire la suite lorsqu'ils commencent à écrire du code traite correctement les boucles. Et depuis tant de gens qui utilisent Excel VBA sont beaucoup de débutants de code, la mauvaise boucle est épidémique.

La mise en boucle est très courante dans Excel car, souvent, vous traitez des valeurs de données sur une ligne ou une colonne entière, vous devez donc effectuer une boucle pour les traiter toutes. Les nouveaux programmeurs veulent souvent sortir d'une boucle (soit une boucle For, soit un look While) instantanément lorsqu'une certaine condition est vraie.

excel-vba5

Vous pouvez ignorer la complexité du code ci-dessus, notez simplement qu'à l'intérieur de l'instruction IF interne, il y a une option pour quitter la boucle For si la condition est vraie. Voici un exemple plus simple:

For x = 1 To 20 If x = 6 Then Exit For y = x + intRoomTemp Next i 

Les nouveaux programmeurs adoptent cette approche parce que c'est facile. Quand une condition survient que vous attendez pour quitter une boucle, la tentation d'en sauter immédiatement est forte, mais ne le faites pas.

Plus souvent qu'autrement, le code qui vient après cette "pause" est important de traiter, même la dernière fois à travers la boucle avant de quitter. Une manière beaucoup plus propre et plus professionnelle de gérer les conditions dans lesquelles vous voulez laisser une boucle à mi-chemin est d'inclure cette condition de sortie dans quelque chose comme une instruction While.

 While (x>=1 AND x<=20 AND x6) For x = 1 To 20 y = x + intRoomTemp Next i Wend 

Cela permet un déroulement logique de votre code, avec la dernière exécution lorsque x vaut 5, puis une sortie élégante lorsque la boucle For compte jusqu'à 6. Il n'est pas nécessaire d'inclure des commandes EXIT ou BREAK en milieu de boucle.

3. Ne pas utiliser des tableaux

Une autre erreur intéressante que de nouveaux programmeurs VBA Les bases de la programmation informatique 101 - Variables et DataTypes Les bases de la programmation informatique 101 - Variables et DataTypes Ayant présenté et parlé un peu de la programmation orientée objet avant et d'où son nom vient, je pensais qu'il était temps passer en revue les bases absolues de la programmation d'une manière non spécifique à la langue. This ... Read More make essaie de tout traiter à l'intérieur de nombreuses boucles imbriquées qui filtrent à travers les lignes et les colonnes pendant le processus de calcul.

Bien que cela puisse fonctionner, cela peut également entraîner des problèmes de performance majeurs, si vous devez constamment effectuer les mêmes calculs sur les mêmes numéros dans la même colonne. Boucler cette colonne et extraire les valeurs à chaque fois n'est pas seulement fastidieux à programmer, c'est un tueur sur votre processeur. Un moyen plus efficace de gérer de longues listes de nombres consiste à utiliser un tableau.

Si vous n'avez jamais utilisé un tableau auparavant, n'ayez pas peur. Imaginez un tableau comme un bac à glaçons contenant un certain nombre de «cubes» dans lesquels vous pouvez placer des informations. Les cubes sont numérotés de 1 à 12, et c'est ainsi que vous "mettez" des données dans ceux-ci.

plateaux à glaçons

Vous pouvez facilement définir un tableau simplement en tapant Dim arrMyArray (12) comme Integer .

Cela crée un "plateau" avec 12 emplacements disponibles pour vous remplir.

Voici à quoi pourrait ressembler un code en boucle sans un tableau:

 Sub Test1() Dim x As Integer intNumRows = Range("A2", Range("A2").End(xldown)).Rows.Count Range("A2").Select For x = 1 To intNumRows If Range("A" & str(x)).value< 100 then intTemp = (Range("A" & str(x)).value) * 32 - 100 End If ActiveCell.Offset(1, 0).Select Next End Sub 

Dans cet exemple, le code traite toutes les cellules de la plage et effectue le calcul de la température.

Plus tard dans le programme, si vous voulez effectuer d'autres calculs sur ces mêmes valeurs, vous devrez dupliquer ce code, parcourir toutes ces cellules et effectuer votre nouveau calcul.

Maintenant, si vous utilisez plutôt un tableau, vous pouvez stocker les 12 valeurs de la ligne dans votre tableau de stockage pratique. Puis plus tard, chaque fois que vous voulez exécuter des calculs sur ces chiffres, ils sont déjà en mémoire et prêts à partir.

 Sub Test1() Dim x As Integer intNumRows = Range("A2", Range("A2").End(xldown)).Rows.Count Range("A2").Select For x = 1 To intNumRows arrMyArray(x-1) = Range("A" & str(x)).value) ActiveCell.Offset(1, 0).Select Next End Sub 

Le "x-1" pour pointer sur l'élément de tableau n'est nécessaire que parce que la boucle For commence à 1. Les éléments du tableau doivent commencer à 0.

Mais une fois que vous avez votre tableau tout chargé avec les valeurs de la ligne, plus tard dans le programme, vous pouvez simplement fouetter ensemble les calculs que vous voulez en utilisant le tableau.

 Sub TempCalc() For x = 0 To UBound(arrMyArray) arrMyTemps(y) = arrMyArray(x) * 32 - 100 Next End Sub 

Cet exemple parcourt le tableau de lignes entier (UBound vous donne le nombre de valeurs de données dans le tableau), fait le calcul de la température, puis le place dans un autre tableau appelé arrMyTemps.

Vous pouvez voir à quel point le deuxième code de calcul est plus simple. Et à partir de ce moment, chaque fois que vous voulez effectuer plus de calculs sur le même ensemble de nombres, votre tableau est déjà pré-chargé et prêt à partir.

4. Utiliser trop de références

Que vous programmiez en Visual Basic à part entière ou en VBA, vous devez inclure des références pour accéder à certaines fonctionnalités, comme accéder à une base de données Access ou écrire une sortie dans un fichier texte.

Les références sont en quelque sorte des «bibliothèques» remplies de fonctionnalités auxquelles vous pouvez accéder, si vous activez ce fichier. Vous pouvez trouver des références dans la vue Développeur en cliquant sur Outils dans le menu, puis en cliquant sur Références .

excel-vba6

Ce que vous trouverez dans cette fenêtre sont toutes les références actuellement sélectionnées pour votre projet VBA actuel.

excel-vba7

Dans mon expérience, les sélections ici peuvent changer d'une installation Excel à l'autre, et d'un PC à l'autre. Tout dépend de ce que les autres utilisateurs ont fait avec Excel sur ce PC, de l'ajout ou de l'activation de certains add-ons ou fonctionnalités, ou si d'autres programmeurs ont utilisé certaines références dans des projets antérieurs.

La raison pour laquelle il est bon de vérifier cette liste est que les références inutiles gaspillent les ressources du système. Si vous n'utilisez aucune manipulation de fichier XML, pourquoi conserver Microsoft XML? Si vous ne communiquez pas avec une base de données, supprimez Microsoft DAO. Si vous n'écrivez pas de sortie dans un fichier texte, supprimez Microsoft Scripting Runtime .

Si vous n'êtes pas sûr de ce que font ces références, appuyez sur F2 et vous verrez l'explorateur d'objets. En haut de cette fenêtre, vous pouvez choisir la bibliothèque de référence à parcourir.

excel-vba8

Une fois sélectionné, vous verrez tous les objets et les fonctions disponibles, sur lesquels vous pouvez cliquer pour en savoir plus.

Par exemple, lorsque je clique sur la bibliothèque DAO, il devient rapidement clair qu'il s'agit de se connecter et de communiquer avec des bases de données.

excel-vba9

Réduire le nombre de références que vous utilisez dans votre projet de programmation est juste du bon sens, et aidera à rendre votre application globale plus efficace.

Programmation dans Excel VBA

L'idée d'écrire réellement du code dans Excel Économiser du temps avec des opérations de texte dans Excel Économiser du temps avec des opérations de texte dans Excel Excel peut faire de la magie avec des nombres et il peut aussi bien gérer les caractères. Ce manuel explique comment analyser, convertir, remplacer et modifier du texte dans des feuilles de calcul. Ces bases vous permettront d'effectuer des transformations complexes. Lire Plus effraie beaucoup de gens, mais cette peur n'est vraiment pas nécessaire. Visual Basic pour Applications est un langage très simple à apprendre, et si vous suivez les pratiques courantes de base mentionnées ci-dessus, vous vous assurerez que votre code est propre, efficace et facile à comprendre.

Est-ce que vous codez en VBA? Quel genre de leçons avez-vous appris au cours des années que vous pouvez partager avec d'autres lecteurs apprenant VBA pour la première fois? Partagez vos astuces dans la section commentaires ci-dessous!

Crédits image: Ordinateur par www.BillionPhotos.com via Shutterstock, Color Ice Cube Trays par hahauk via Shutterstock.com

In this article