OVH Cloud OVH Cloud

Problème VBA

13 réponses
Avatar
azerty
Bonjour,


Soit une colonne Excel qui contient des valeurs :


TOTO
TOTO
TOTO
TOTO
TATA
TATA
TITI



Comment écrire :

Tant que pas la colonne vide
compter le nombre de valeurs différentes


Ici TOTO= 4, TATA = 2 et TITI =1



Merci

10 réponses

1 2
Avatar
Daniel
Bonjour.
Est-ce que tu veux dire que si tu as :
TOTO
TOTO
TOTO
TOTO
TATA
TATA
TITI

TOTO
le nombre de totos est égal à 4 ?
Cordialement.
Daniel
"azerty" a écrit dans le message de news:
43de231b$0$21298$
Bonjour,


Soit une colonne Excel qui contient des valeurs :


TOTO
TOTO
TOTO
TOTO
TATA
TATA
TITI



Comment écrire :

Tant que pas la colonne vide
compter le nombre de valeurs différentes


Ici TOTO= 4, TATA = 2 et TITI =1



Merci


Avatar
RGI
Bonjour

comme ceci peut-être

=CONCATENER("TOTO = "&NB.SI(B:B;"TOTO");" et TITI = "&NB.SI(B:B;"TITI");" et
TATA = "&NB.SI(B:B;"TATA"))

en supposant que les données soient dans la colonne B

salutations

RGI


"azerty" a écrit dans le message de news:
43de231b$0$21298$
Bonjour,


Soit une colonne Excel qui contient des valeurs :


TOTO
TOTO
TOTO
TOTO
TATA
TATA
TITI



Comment écrire :

Tant que pas la colonne vide
compter le nombre de valeurs différentes


Ici TOTO= 4, TATA = 2 et TITI =1



Merci


Avatar
azerty
Bonjour,


Soit une colonne Excel qui contient des valeurs :


TOTO
TOTO
TOTO
TOTO
TATA
TATA
TITI



Comment écrire :

Tant que pas la colonne vide
compter le nombre de valeurs différentes


Ici TOTO= 4, TATA = 2 et TITI =1



Merci



TOTO et TATA... c'est des exemples !
Pas des valeurs réelles !!!!


Et je souhaite du code :

Do while

...

Avatar
Lionel
Bonjour,

Souhaites-tu seulement connaître le nombre de valeurs sans doublon ? i.e. 3
dans ton exemple : TOTO, TATA et TITI.
Si c'est le cas, cette formule devrait convenir :

=SOMMEPROD(1/NB.SI(A1:A7;A1:A7))

Pour des données de A1 à A7.

Amicalement
Lionel


"azerty" a écrit dans le message de
news:43de231b$0$21298$
Bonjour,


Soit une colonne Excel qui contient des valeurs :


TOTO
TOTO
TOTO
TOTO
TATA
TATA
TITI



Comment écrire :

Tant que pas la colonne vide
compter le nombre de valeurs différentes


Ici TOTO= 4, TATA = 2 et TITI =1



Merci


Avatar
AV
Connais-tu les Tableaux Croisés Dynamiques ?

AV
Avatar
JLuc
azerty avait soumis l'idée :
Comment écrire :

Tant que pas la colonne vide
compter le nombre de valeurs différentes


Ici TOTO= 4, TATA = 2 et TITI =1



Je te propose sans VBA:
Ajoute une ligne (ou une cellule) au dessus de ta liste
Sur cette cellule, fais un filtre automatique
Sur une cellule a cote de la liste =SOUS.TOTAL(3;A2:A65536)
Ca marche bien : http://cjoint.com/?bEqqLohdtr
Merci



--
JLuc

Avatar
Antoine
bonjour
la fonction que tu nous communiques fonctionne à merveille, sauf que je ne
comprends pas comment !
pas du côté de sommeprod mais du côté de nb.si... et le pourquoi du 1/x...

Quelques lueurs de savoir m'aideraient à sortir de cette incapacité à
comprendre §

Merci

Antoine
"Lionel" a écrit dans le message de news:
43de2969$0$21260$
Bonjour,

Souhaites-tu seulement connaître le nombre de valeurs sans doublon ? i.e.
3
dans ton exemple : TOTO, TATA et TITI.
Si c'est le cas, cette formule devrait convenir :

=SOMMEPROD(1/NB.SI(A1:A7;A1:A7))

Pour des données de A1 à A7.

Amicalement
Lionel


"azerty" a écrit dans le message de
news:43de231b$0$21298$
Bonjour,


Soit une colonne Excel qui contient des valeurs :


TOTO
TOTO
TOTO
TOTO
TATA
TATA
TITI



Comment écrire :

Tant que pas la colonne vide
compter le nombre de valeurs différentes


Ici TOTO= 4, TATA = 2 et TITI =1



Merci






Avatar
Daniel
Voila du code :

Sub test()
Dim Plage As Range, c As Range
Dim Tabl, Ctr As Long, ind As Boolean
Ctr = 0
ReDim Tabl(Ctr)
Set Plage = Range("A1", Range("A65536").End(xlUp))
For Each c In Plage
ind = True
For i = 0 To UBound(Tabl)
If c.Value = Tabl(i) Then
ind = False
End If
Next i
If ind = True Then
Ctr = Ctr + 1
ReDim Preserve Tabl(Ctr)
Tabl(Ctr) = c.Value
MsgBox c.Value & " " & WorksheetFunction.CountIf(Range("A:A"),
c)
End If
Next c
End Sub

Daniel
"azerty" a écrit dans le message de news:
43de28ac$0$18329$
Bonjour,


Soit une colonne Excel qui contient des valeurs :


TOTO
TOTO
TOTO
TOTO
TATA
TATA
TITI



Comment écrire :

Tant que pas la colonne vide
compter le nombre de valeurs différentes


Ici TOTO= 4, TATA = 2 et TITI =1



Merci



TOTO et TATA... c'est des exemples !
Pas des valeurs réelles !!!!


Et je souhaite du code :

Do while

...











Avatar
Lionel
Bonjour Antoine,

C'est le côté fonction matricielle de SOMMEPROD qui fait tout. Je reprends
l'exemple d'azerty :

TOTO
TOTO
TOTO
TOTO
TATA
TATA
TITI

La fonction NB.SI(Plage, "TOTO") donnerait 4, mais si on indique sous forme
Matricielle NB.SI(A1:A7:A1:A7), on va avoir NB.SI(Plage;A1) puis
NB.SI(Plage,A2) etc. jusqu'à A7. Résultats de la fonction :
NB.SI(A1:A7:A1) = 4 inverse = 1/4
NB.SI(A1:A7:A2) = 4 inverse = 1/4
NB.SI(A1:A7:A3) = 4 inverse = 1/4
NB.SI(A1:A7:A4) = 4 inverse = 1/4
NB.SI(A1:A7:A5) = 2 inverse = 1/2
NB.SI(A1:A7:A6) = 2 inverse = 1/2
NB.SI(A1:A7:A7) = 1 inverse = 1/1

et la somme des inverses donne bien 3 ;-)

Amicalement
Lionel


"Antoine" a écrit dans le message de
news:
bonjour
la fonction que tu nous communiques fonctionne à merveille, sauf que je ne
comprends pas comment !
pas du côté de sommeprod mais du côté de nb.si... et le pourquoi du 1/x...

Quelques lueurs de savoir m'aideraient à sortir de cette incapacité à
comprendre §

Merci

Antoine
"Lionel" a écrit dans le message de news:
43de2969$0$21260$
Bonjour,

Souhaites-tu seulement connaître le nombre de valeurs sans doublon ?
i.e.


3
dans ton exemple : TOTO, TATA et TITI.
Si c'est le cas, cette formule devrait convenir :

=SOMMEPROD(1/NB.SI(A1:A7;A1:A7))

Pour des données de A1 à A7.

Amicalement
Lionel




Avatar
azerty
MERCI DANIEL

Ca marche !

Tu peux me commenter ce code ?






Voila du code :

Sub test()
Dim Plage As Range, c As Range
Dim Tabl, Ctr As Long, ind As Boolean
Ctr = 0
ReDim Tabl(Ctr)
Set Plage = Range("A1", Range("A65536").End(xlUp))
For Each c In Plage
ind = True
For i = 0 To UBound(Tabl)
If c.Value = Tabl(i) Then
ind = False
End If
Next i
If ind = True Then
Ctr = Ctr + 1
ReDim Preserve Tabl(Ctr)
Tabl(Ctr) = c.Value
MsgBox c.Value & " " & WorksheetFunction.CountIf(Range("A:A"),
c)
End If
Next c
End Sub

Daniel
"azerty" a écrit dans le message de news:
43de28ac$0$18329$


Bonjour,


Soit une colonne Excel qui contient des valeurs :


TOTO
TOTO
TOTO
TOTO
TATA
TATA
TITI



Comment écrire :

Tant que pas la colonne vide
compter le nombre de valeurs différentes


Ici TOTO= 4, TATA = 2 et TITI =1



Merci



TOTO et TATA... c'est des exemples !
Pas des valeurs réelles !!!!


Et je souhaite du code :

Do while

...
















1 2