Dans ce cours, nous allons voir comment recopier automatiquement vers le bas toutes les formules d'une table. Ceci peut être notamment utile lors de l'ajout de nouvelles lignes.
Pour accéder au fichier, cliquez ici.
Bonnes pratiques: |
||
| Ne pas utiliser d'accents dans le code VBA. | Pour des développements à l'international, cela peut générer des problèmes de compatibilité. | |
| A la fin d'un End If (ou d'un Next), mettre un commentaire. | Pour des structures assez complexes, cela permet de savoir où se termine la condition (ou la boucle). | |
| Nomenclature des variables | Ici, nous choisissons L ou P pour une variable Locale ou
Publique, puis nous ajoutons un descriptif relatif au type de la
variable (par ex. S pour String ou I pour Integer) et finalement, une
description de la variable elle-même. Dans ce cas, nous utilisons aussi un "i" pour indiquer une variable utilisée dans une boucle. |
|
Vocabulaire: |
||
| Application.Calculation | Mode de calcul actuel de l'application (xlCalculationAutomatic, xlCalculationManual, xlCalculationSemiautomatic). | |
| Set | On utilise cette instruction pour attribuer une référence d'objet à une variable. | |
| GoTo | Permet d'aller à un endroit précis du programme. Ca permet de sortir d'une longue série d'instructions à la place d'un If ... Then Else. On peut aussi l'utiliser pour gérer une erreur spécifique. | |
| LW_Worksheet.UsedRange | Il s'agit de la plage utilisée dans la feuille. En
général, on accède à la fin de cette plage à partir de la combinaison de
touche CTRL + Fin. A noter que cette plage peut être constitué de cellules vides (suite à des manipulations passées). De plus, cette plage ne démarre pas forcément à la première ligne (par exemple, si celle-ci est laissée vide). Pour connaître la dernière ligne d'une usedrange, on utilise un code comme celui-ci : LL_Rang_de_la_Derniere_Ligne_de_la_UsedRange = Wk_Feuille_En_Cours.UsedRange.Row + Wk_Feuille_En_Cours.UsedRange.Rows.Count - 1 |
|
| plage.HasFormula | La plage possède-t-elle une formule ou non? A utiliser avec précaution sur une plage de plus d'une cellule. | |
| plage.Offset(DécalageLigne, DécalageColonne) | Permet de décaler une plage d'un certain nombre de cellules vers le bas (ou le haut pour une valeur négative) et vers la droite (ou la gauche) | |
| plage.Resize(TailleLigne, TailleColonne) | Permet de redimensionner une plage. | |
| WorksheetFunction | Permet d'utiliser des fonctions de feuilles de calcul (natives) de Microsoft Excel. Par exemple, min ou max. Ces fonctions sont en Anglais. | |
| Exit For | Permet de sortir d'une boucle For...Next, par exemple si une certaine condition a été atteinte. | |
| Optional | Dans le cadre d'une sub ou d'une function, on indique que l'argument n'est pas obligatoire. | |
| For...To...Step -1 | En utilisant un pas = -1 (step), cela permet de partir d'un nombre supérieur à celui d'arrivée. Dans l'exemple, nous démarrons de la dernière ligne de la plage utilisée pour progressivement remonter vers le haut. | |
| LW_Worksheet.Cells(numero de ligne, numero de colonne) | Ceci renvoie une plage située à l'intersection du numéro de ligne et du numéro de colonne. | |
| Union | Extrêmement pratique, cette instruction permet d'unir
deux plages de cellules ensemble. Par exemple, on l'utilise lorsque l'on veut supprimer ou effacer plusieurs plages de manière très rapide. Ainsi, au lieu d'effacer plage par plage, on crée une nouvelle plage (range) qui va être l'union de plusieurs plages. On efface ensuite en une seule fois cette plage. |
|
| expression.Copy Destination | Cette méthode permet de copier une plage (expression) dans une autre plage (destination). | |
| expression.clear | Dans ce contexte, expression se réfère à une plage. Clear permet d'effacer toute une plage (valeurs, formules, mise en forme, etc.). | |
Limites et autres possibilités |
||
| Utilisation de la fonctionnalité des tableaux directement dans Excel | Il est possible d'utiliser la fonctionnalité des tableaux d'Excel, ce qui peut faciliter la saisie de données. Cependant, celle-ci présente assez vite des limites lorsqu'on veut l'utiliser avec VBA ou bien avec des tableaux croisés dynamiques. | |
Note : les descriptions données dans ce tableau correspondent spécifiquement au contexte de l'exemple. Il peut exister d'autres utilisations de l'instruction.