OVH Cloud OVH Cloud

Compter des cellules sauf les doublons...

3 réponses
Avatar
Pierre
J'ai un tableau d'une vingtaine de colonnes pour 14000 lignes environ. J'ai
placé un filtre automatique pour faire des extractions.

Aprés une requête (avec les filtres) j'ai donc un certain nombre de lignes.
A partir de la colonne B (n° adhérents), je veux compter le nombre de lignes
obtenues , mais si dans la colonne B (qui ne contient que des cellules avec
des nombres du type "600001") il y a deux fois ou plus le même nombre, je
souhaite qu'il ne soit compter qu'une seule ligne.

Ma question : existe-il une fonction adaptée pour ne pas compter les
doublons (ou triples ou quadruples ...) ou bien faut-il une macro ?
Dans ce cas quel est le code approprié ?

Je vous remercie de votre attention.
Je vous précise que je ne réalise que des macros grâce à l'enregistreur. Je
pense qu'il va falloir du code et là ça coince....

3 réponses

Avatar
ru-th
Salut

mettant abîmé les mains à manier la tronconneuse,
=SOMMEPROD(1/NB.SI(b1:B14000;B1:B14000))

a+
rural thierry
Veaux et Broutards d'Anjou
Wicasa on kin nape yapi inahni yo (à l'essai)

"Pierre" a écrit dans le message de news:
bobs77$1v3n$
J'ai un tableau d'une vingtaine de colonnes pour 14000 lignes environ.
J'ai

placé un filtre automatique pour faire des extractions.

Aprés une requête (avec les filtres) j'ai donc un certain nombre de
lignes.

A partir de la colonne B (n° adhérents), je veux compter le nombre de
lignes

obtenues , mais si dans la colonne B (qui ne contient que des cellules
avec

des nombres du type "600001") il y a deux fois ou plus le même nombre, je
souhaite qu'il ne soit compter qu'une seule ligne.

Ma question : existe-il une fonction adaptée pour ne pas compter les
doublons (ou triples ou quadruples ...) ou bien faut-il une macro ?
Dans ce cas quel est le code approprié ?

Je vous remercie de votre attention.
Je vous précise que je ne réalise que des macros grâce à l'enregistreur.
Je

pense qu'il va falloir du code et là ça coince....




Avatar
Pierre
OK ça marche...

Mais lorsque je fais un tri en préalable du comptage de lignes, cette
formule me donne toujours le nombre total de lignes sans doublons.
Comment faire pour que le calcul se fasse à partir de la première cellule de
la colonne B de mon tableau qui contient un nombre jusqu'à la dernière
cellule de la colonne B, tout en ne comptant pas les lignes masquées car
filtrées.

exemple : après une requête avec les filtres ça donne ça :

Col B Col C
ligne

498 XXX XXX
502 XXX XXX
503 XXX XXX
503 XXX XXX
1256 XXX XXX

Dans ce cas la plage est bien B498:B1256 mais ne doit pas prendre les
lignes masquées....

Merci d'avance.

"ru-th" a écrit dans le message de
news:%23gLdzD$
Salut

mettant abîmé les mains à manier la tronconneuse,
=SOMMEPROD(1/NB.SI(b1:B14000;B1:B14000))

a+
rural thierry
Veaux et Broutards d'Anjou
Wicasa on kin nape yapi inahni yo (à l'essai)

"Pierre" a écrit dans le message de news:
bobs77$1v3n$
J'ai un tableau d'une vingtaine de colonnes pour 14000 lignes environ.
J'ai

placé un filtre automatique pour faire des extractions.

Aprés une requête (avec les filtres) j'ai donc un certain nombre de
lignes.

A partir de la colonne B (n° adhérents), je veux compter le nombre de
lignes

obtenues , mais si dans la colonne B (qui ne contient que des cellules
avec

des nombres du type "600001") il y a deux fois ou plus le même nombre,
je


souhaite qu'il ne soit compter qu'une seule ligne.

Ma question : existe-il une fonction adaptée pour ne pas compter les
doublons (ou triples ou quadruples ...) ou bien faut-il une macro ?
Dans ce cas quel est le code approprié ?

Je vous remercie de votre attention.
Je vous précise que je ne réalise que des macros grâce à l'enregistreur.
Je

pense qu'il va falloir du code et là ça coince....








Avatar
AV
Exemple pour compter les valeurs uniques dans la plage B2:Bx
(Plage filtrée ou pas)

Sub zz_Nb_Unik()
Dim ValUnik As New Collection
On Error Resume Next
For Each C In Range("B2", [B65536].End(3)).SpecialCells(xlCellTypeVisible)
ValUnik.Add C.Value, CStr([C])
Next C
MsgBox ValUnik.Count
End Sub

AV