Microsoft 365 formule Compteur qui s'incrémente au lancement de Macro

looky62

XLDnaute Occasionnel
Hello la Teams,

Qd je lance ma macro, j'ai un compteur de colonne qui change hors Macro cad sur une colonne j'ai :

= NB.SI(Source!G:G;"O") il se décale d'une colonne et passe en = NB.SI(Source!H:H;"O") et à chaque fois que je relance la macro ça s'incrémente

Quel est la parade, meme avec des $ ça ne marche pas

Merci de votre éclairage
 
Solution
Bonjour,

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=..."
1667818417576.png

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

sylvanu

XLDnaute Barbatruc
Supporter XLD
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]
 

Pièces jointes

  • TEST MACRO VG-3(1)(1) (2)(1).xlsm
    125.6 KB · Affichages: 2

looky62

XLDnaute Occasionnel
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 :
Effectivement Au temps pour moi dslé, oui excusez moi j'ai mal lu la subtilité , au moins je saurais pr la prochaine fois!
 

Statistiques des forums

Discussions
312 228
Messages
2 086 421
Membres
103 205
dernier inscrit
zch