L'erreur vient du fait que le retour doit se faire avec le nom de la fonction.
Donc ici, cela aurait du être "Compter2=..." et non "Compter=..."
Pour rendre l'exécution automatique comme n'importe quelle fonction XL, il faut rajouter Application.volatile au début.
Voir PJ.
J'ai renommé les fonctions pour être plus "explicite"
VB:
Function CompterOui()
Application.Volatile
CompterOui = Application.CountIf(Sheets("Source").Range("G:G"), "O")
End Function
Function CompterNon()
Application.Volatile
CompterNon = Application.CountIf(Sheets("Source").Range("G:G"), "N")
End Function
Vous avez lu mon post #14 ? Ne dites pas Oui, ça m'étonnerait.
Dans une fonction, le retour doit être fait avec le nom de la fonction :
Ca, c'est FAUX :
VB:
Function Compter2O()
Application.Volatile
CompterOui = Application.CountIf(Sheets("Resultat").Range("G:G"), "O")
End Function
Le retour doit se faire par Compter2O = ....
Ca, c'est BON :
Code:
Function Compter2O()
Application.Volatile
Compter2O = Application.CountIf(Sheets("Resultat").Range("G:G"), "O")
End Function
Le retour doit se faire avec le même nom que la fonction.
D'ailleurs c'est écrit dans mon tuto :
Plus déstabilisant : le résultat de la fonction est dans le nom de la fonction. ( mais on s'y fait ! ) [Ligne B171]
Vous avez lu mon post #14 ? Ne dites pas Oui, ça m'étonnerait.
Dans une fonction, le retour doit être fait avec le nom de la fonction :
Ca, c'est FAUX :
VB:
Function Compter2O()
Application.Volatile
CompterOui = Application.CountIf(Sheets("Resultat").Range("G:G"), "O")
End Function
Le retour doit se faire par Compter2O = ....
Ca, c'est BON :
Code:
Function Compter2O()
Application.Volatile
Compter2O = Application.CountIf(Sheets("Resultat").Range("G:G"), "O")
End Function
Le retour doit se faire avec le même nom que la fonction.
D'ailleurs c'est écrit dans mon tuto :