Actualiser les formules d'une table de données

Edito

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.

Fichier :

Pour accéder au fichier, cliquez ici.

Cours vidéo :

  Présentation du problème

Module principal : recopie des formules

Module secondaire (1/2) : Effacer les lignes en dessous de la plage utilisée (usedrange)

Module secondaire (2/2) : effacer les cellules en dessous de la zone de données

Tableau de synthèse :

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.

Mots-clefs/Thèmes: