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

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
 
J

Jean-Marie

Guest
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
 
C

Carl

Guest
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

  • exemple.zip
    10 KB · Affichages: 108
  • exemple.zip
    10 KB · Affichages: 109
  • exemple.zip
    10 KB · Affichages: 106
F

fodjio

Guest
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
 
C

Carl

Guest
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:D103")
Nb = Application.WorksheetFunction.Subtotal(3, Plage)

merci à toi
Carl
 
F

fodjio

Guest
VBA ne peut pas comprendre : Columns("D18:D103")

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

Tape voir :

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

et dis moi si ça marche...
normalement la variable Nb contiendra le nombre de résultats
 
C

Carl

Guest
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

  • exemple.zip
    13.6 KB · Affichages: 122
  • exemple.zip
    13.6 KB · Affichages: 118
  • exemple.zip
    13.6 KB · Affichages: 116
C

Carl

Guest
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

  • exemple2.zip
    12.3 KB · Affichages: 102
  • exemple2.zip
    12.3 KB · Affichages: 84
  • exemple2.zip
    12.3 KB · Affichages: 87

Discussions similaires

Statistiques des forums

Discussions
312 559
Messages
2 089 604
Membres
104 224
dernier inscrit
Brilma