Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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

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
Bonjour Looky,
Le plus simple est de remplacer cette formule par une fonction VBA qui est insensible à l'insertion de colonne :
VB:
Function Compte()
    Compte = Application.CountIf(Range("G:G"), "O")
End Function
La syntaxe dans la feuille est alors : =Compte()
 

looky62

XLDnaute Occasionnel
Bonjour looky62 @sylvanu

Sans passer par VBA et si j'ai bien compris
VB:
= NB.SI(INDIRECT("Source!G:G");"O")

A+
Hello BrunoM45

super oui c mieux ss vba pr moi, par contre qd je fais sur un NB SI ça va , par contre sur un NB VAL il me compte toute mes ligne!!

=NBVAL(INDIRECT(Source!A:A)-1) là il me compte tt le tableau!!
Alors =NBVAL(Source!A:A)-1) et là me compte bien , mais s'incrémente!!
 

looky62

XLDnaute Occasionnel
ben je galere un peu en VBA, j'ai mis un onglet en cpt où je fais mes calculs mais ça bug, ensuite j'avais fait une macro 4 pr la mise en forme de mes compteurs, si tu peux me montrer avec la fonction compte() au moins je saurai pr la prochaine fois !
Merci encore pr ton aide précieuse , je monte en compétence grace a vous !
 

Pièces jointes

  • TEST MACRO VG-3(1).xlsm
    114.1 KB · Affichages: 7

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonsoir,
J'ai mis ces deux fonctions perso dans CPT, ne sachant exactement où mettre les formules.
Avec ces deux fonctions perso que j'ai mis dans le module Fonctions :
VB:
Function Compter()
    Compter = Application.CountIf(Range("G:G"), "O")
End Function
Function NBVALcolA()
    NBVALcolA = Application.CountA(Range("A:A"))
End Function

Un petit tuto sur les fonctions perso :
 

Pièces jointes

  • TEST MACRO VG-3(1).xlsm
    119.5 KB · Affichages: 8

looky62

XLDnaute Occasionnel
Merci par contre si je veux mettre ma fonction dans un onglet compteur, afin de faire mes calculs et les reporter vers un autre onglet c sous quel forme que je cherche par exemple ici Source

Function Compter()
Compter = Application.CountIf(Range("Source""G:G"), "O")

End Function
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonsoir,
Non, vous faites comme en VBA :
VB:
Function Compter()
    Compter = Application.CountIf(Sheets("Source").Range("G:G"), "O")
End Function

Une variante est de passer la plage en paramètre avec :
Code:
Function Compter(Plage)
    Compter = Application.CountIf(Plage, "O")
End Function
Et dans la feuille XL, la syntaxe devient :
=Compter(Source!G:G)
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Job,
Exact, j'ai bien inséré des feuilles pour voir ... mai pas sur la bonne feuille.
On peut faire :
VB:
Function Compter(F, N)
    Compter = Application.CountIf(Sheets(F).Columns(N), "O")
End Function
Syntaxe : =Compter("Source";7) G étant la 7eme colonne.
 

looky62

XLDnaute Occasionnel
Super merci je teste ça lundi , merci encore pr cette montée en compétence
 

looky62

XLDnaute Occasionnel
Super merci je teste ça lundi , merci encore pr cette montée en compétencE


Je patauge un peu ds les fonctions, j'ai sous l'onglet CPT l'exemple que je souhaite mettre en place, par contre est ce la fonction se lance uniquement qd on l'appel comme une macro ou est ce automatique ? jsp etre claire
 

Pièces jointes

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

sylvanu

XLDnaute Barbatruc
Supporter XLD
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=..."

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
 

Pièces jointes

  • TEST MACRO VG-3(1)(1).xlsm
    124.4 KB · Affichages: 5

looky62

XLDnaute Occasionnel
Merci j'ai bien compris la function,

En assimilant le meme principe pour coimpter le nombre total de valeur!! je ne vois pas l'erreur

Function NBVALcolA()
Application.Volatile
NBVALcolA = Application.CountA(Sheets("Source").Range("A:A"))
End Function

syntaxe =@NBVALcolA
 
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…