Les fonctions de feuilles de calcul
De nombreuses fonctions utilisées dans les feuilles de calcul Excel sont fort utiles mais ne trouvent pas d'équivalent direct dans VBA.
Par chance, rien n'empêche leur utilisation dans VBA.
Il suffit de les appeler par le biais de Application.Worksheetfunction :
Par exemple, pour calculer le minimum de 22/7 et 3.14, on écrit dans une cellule de feuille de calcul : =MIN(22/7;3.14).
Dans VBA, il suffit d'écrire :
MsgBox Application.WorksheetFunction.Min(22 / 7, 3.14).
Comme pour les macros Excel 4, il faut écrire la fonction en anglais, et remplacer les points virgules par des virgules :
La formule Excel : =SUBSTITUE("otaries";"o";"eaux ") deviendra en VBA :
WorksheetFunction.Substitute("otaries", "o", "eaux ").
La liste des fonctions de feuilles de calcul (en français et anglais) est contenue dans un fichier Excel
installé en même temps qu'Office, Listevba.xls ou Vbalist.xls.
Vous pouvez aussi le télécharger ICI.
Mais il suffit de taper WorksheetFunction. dans l'éditeur
VBA pour qu'il propose (en anglais) toutes les fonctions disponibles par le biais d'un menu contextuel.
Et puis, pour la traduction en anglais d'une fonction de feuille de calcul, il suffit de se placer dans une feuille Excel, de démarrer l'enregistreur de macro avant de taper dans une cellule une formule contenant la fonction à traduire. L'enregistreur se chargera de la traduction :
Si je tape =EQUIV(5;A:A;0) dans une cellule, l'enregistreur de macro traduira par :
ActiveCell.FormulaR1C1 = "=MATCH(5,C[-1],0)".
Je pourrai donc écrire en VBA : MsgBox WorksheetFunction.Match(5, Range("a:a"), 0).
Particulièrement utiles, les fonctions Min, Max, Round (ARRONDI), CountA (NBVAL), CountIf (NB.SI) Sum (SOMME) et Average (MOYENNE),
puis Match (EQUIV), VLookup (RECHERCHEV), Find (TROUVE).
Pensez notamment à les utiliser pour gagner du temps de calcul en évitant des boucles en VBA.
Les macros Excel 4
Les API
Les correspondances entre macros VBA, macros Excel 4, fonctions de feuilles de calcul et API.