Compter le nombre de valeurs différentes dans une plage filtrée

  • Initiateur de la discussion Initiateur de la discussion Carl
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

C

Carl

Guest
Bonsoir le forum,

j'ai un soucis depuis ce matin, je n'arrive pas à trouver une formule qui m'indique le nombre de chiffres différents se trouvant dans une une colonne de chiffre.
Mon problème se trouve dans le fait que cette colonne de chiffre fait partie d'une plage filtrée avec filtrage automatique. Il faudrait que cette formule ne tienne compte que des chiffres visibles, donc filtrées.
Existe-t-il une solution ?

Un grand merci à vous le forum
Carl
 
Bonsoir

Essaye cette formule
=si(NBVAL(A4:A30)=0;0;SOMMEPROD((FREQUENCE(A4:A30*SOUS.TOTAL(3;DECALER(A1;LIGNE(A1:A27)😉);A4:A30)>0)*1))

Plage des cellules contenant les valeurs A4:A30
La plage A1:A27 doit être de la longueur de la plage des données et doit toujours commencer en A1.

Si tu n'arrives pas à exploiter la formule, place un fichier d'exemple sur le forum.

@+Jean-Marie
 
Bonjour Jean-Marie et le forum,

Merci pour votre réponse Jean-Marie,

j'ai en effet quelques difficultés avec la formule proposée (je ne comprends pas encore la fonction "DECALER") mais si je parviens à l'adapter à mon fichier exemple joint, ce serait merveilleux.

Encore merci pour votre aide.
Carl
 

Pièces jointes

Salut, moi j'ai ça, c'est moins compliqué :

Set Plage = Feuil2.Columns("A:A")
Nb = Application.WorksheetFunction.Subtotal(3, Plage)

Où Feuil2 est la page qui contient tes données filtrées

Dis-moi s'en des nouvelles
 
Bonjour fodjio,

merci pour ta réponse,

j'ai malheureusement une erreur d'exécution quand la macro fonctionne :
=>
erreur d'exécution '424' :
Objet requis
la macro s'arrête sur "Set Plage ..."

je l'ai adapté, mail elle me donne cette erreur d'exécution 424.

Set Plage = calcul.Columns("D18😀103")
Nb = Application.WorksheetFunction.Subtotal(3, Plage)

merci à toi
Carl
 
VBA ne peut pas comprendre : Columns("D18😀103")

car "columns" attend en argument des colonnes et non pas une plage de donnée

Tape voir :

Set Plage = calcul.Columns("D😀")

et dis moi si ça marche...
normalement la variable Nb contiendra le nombre de résultats
 
Jean-marie,

Super, grâce à votre formule, j'y suis presque!

Bizarrement, on dirait qu'il ne tient pas compte du code 1.
Parfois il me donne le bon résultat et parfois pas.
Et c'est toujours le code 1 qui pose problème. C'est comme si la formule ignorait le code 1.

J'ai intégré la formule dans le fichier exemple ci-joint, dans la cellule D105.

Merci et @+
Carl
 

Pièces jointes

Re-salut fodjio

Malheureusement ca marche pas pour certaines dates.

Par exemple si tu mets le filtre sur la date et que tu choisi la date du 07/10/2004, la formule donne donne comme résultat 2 au lieu de 3.
Quand il y a le code "1", il ne tient bizarement pas compte de ce code et donc le résultat est faussé (diminué de 1).

Si je mets des code "1" partout dans la colonne des code, la formule me donne "0" comme résultat.

Bien à vous
Carl
 

Pièces jointes

Bonsoir

Voici la formule corrigée.

=SI(NBVAL(D4😀102)=0;0;SOMMEPROD((FREQUENCE(D5😀103*SOUS.TOTAL(3;DECALER(D1;LIGNE(A4😀102)😉);D5😀103*SOUS.TOTAL(3;DECALER(D1;LIGNE(A4😀102)😉))>0)*1)-1)

@+Jean-Marie
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
22
Affichages
1 K
Retour