bonjour à tous,

je progresse très difficilement en VBA et souvent il m'arrive de penser que les concepteurs de VBA ont complexifiés les choses pour le seul plaisir d'empoisonner la vie du développeur.

je donne ci dessous un exemple des différentes écritures de la fonction countif telles qu'il m'a été donné de les trouver dans divers codes.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
Sub Macro2()
    Range("C2").Select
    ActiveCell.FormulaR1C1 = "=countif(RC[-2]:R[8]C[-2],R[-1]C[-1])"
    'peut être également écrite avec ActiveCell.Formula et autres dérivées
 
    [c3] = Evaluate("countif(a2:a10,b1)")
    [c4] = [countif(a2:a10,b1)]  'autre écriture d'evaluate
 
    [c5] = WorksheetFunction.CountIf([a2:a10], [b1])
 
    [c6] = Application.CountIf([a2:a10], [b1])
End Sub
quelqu'un peut-il m'expliquer la raison de ces différentes écritures et ce qui fait qu'on privilégiera l'une plutôt que l'autre ?
evaluate (seconde écriture) est la plus proche de la formulation sur feuille Excel et donc moins perturbante.
Mais est-elle applicable à toutes les formules logées directement sur la feuille Excel ?

Pour ce qui me concerne, la première formulation est la plus indigeste.

Cordialement.