Et si tu veux conserver les résultats dans un fichier texte ?
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
...
MERCI DANIEL
Ca marche !
Tu peux me commenter ce code ?
Et si tu veux conserver les résultats dans un fichier texte ?
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" <azerty@poiuytr.fr> a écrit dans le message de news:
43de28ac$0$18329$8fcfb975@news.wanadoo.fr...
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 si tu veux conserver les résultats dans un fichier texte ?
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
...
Antoine
Bonjour Lionel,
Effectivement je n'aurais pas appréhendé les choses comme cela, mais c'est simple, clair et logique !
No comment !
Merci
Antoine "Lionel" a écrit dans le message de news: 43de3137$0$29180$
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
Bonjour Lionel,
Effectivement je n'aurais pas appréhendé les choses comme cela, mais c'est
simple, clair et logique !
No comment !
Merci
Antoine
"Lionel" <notta.lionel@wanadoo.fr> a écrit dans le message de news:
43de3137$0$29180$8fcfb975@news.wanadoo.fr...
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" <awerelASUPPRIMER@mageos.com> a écrit dans le message de
news:eykHPCbJGHA.2064@TK2MSFTNGP09.phx.gbl...
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" <notta.lionel@wanadoo.fr> a écrit dans le message de news:
43de2969$0$21260$8fcfb975@news.wanadoo.fr...
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 :
Effectivement je n'aurais pas appréhendé les choses comme cela, mais c'est simple, clair et logique !
No comment !
Merci
Antoine "Lionel" a écrit dans le message de news: 43de3137$0$29180$
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
Daniel
Voici :
Sub test() ' Principe : à chaque cellule, on compare avec les cellules ' précédentes stockées dans un tableau Dim Plage As Range, c As Range Dim Tabl, Ctr As Long, ind As Boolean Ctr = 0 ReDim Tabl(Ctr) ' Ouverture du fichier texte Open "FichierTexte.txt" For Output As #1 ' Sélection de la plage de cellules Set Plage = Range("A1", Range("A65536").End(xlUp)) ' Traitement de chaque cellule de la plage For Each c In Plage ' On positionne ind à true ind = True ' Comparaison de la vaaleur de la cellule avec les éléments du tableau For i = 0 To UBound(Tabl) If c.Value = Tabl(i) Then ind = False End If Next i ' Si ind est égal à true (pas de correspondance dans le tableau If ind = True Then ' On augmente de 1 la taille du tableau Ctr = Ctr + 1 ReDim Preserve Tabl(Ctr) Tabl(Ctr) = c.Value ' Ecriture du fichier texte Print #1, c.Value & " " & WorksheetFunction.CountIf(Range("A:A"), c) End If Next c ' Fermeture du fichier texte Close #1 End Sub
Cordialement. Daniel "azerty" a écrit dans le message de news: 43de34d3$0$18342$
MERCI DANIEL
Ca marche !
Tu peux me commenter ce code ?
Et si tu veux conserver les résultats dans un fichier texte ?
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
...
Voici :
Sub test()
' Principe : à chaque cellule, on compare avec les cellules
' précédentes stockées dans un tableau
Dim Plage As Range, c As Range
Dim Tabl, Ctr As Long, ind As Boolean
Ctr = 0
ReDim Tabl(Ctr)
' Ouverture du fichier texte
Open "FichierTexte.txt" For Output As #1
' Sélection de la plage de cellules
Set Plage = Range("A1", Range("A65536").End(xlUp))
' Traitement de chaque cellule de la plage
For Each c In Plage
' On positionne ind à true
ind = True
' Comparaison de la vaaleur de la cellule avec les éléments du
tableau
For i = 0 To UBound(Tabl)
If c.Value = Tabl(i) Then
ind = False
End If
Next i
' Si ind est égal à true (pas de correspondance dans le tableau
If ind = True Then
' On augmente de 1 la taille du tableau
Ctr = Ctr + 1
ReDim Preserve Tabl(Ctr)
Tabl(Ctr) = c.Value
' Ecriture du fichier texte
Print #1, c.Value & " " &
WorksheetFunction.CountIf(Range("A:A"), c)
End If
Next c
' Fermeture du fichier texte
Close #1
End Sub
Cordialement.
Daniel
"azerty" <azerty@poiuytr.fr> a écrit dans le message de news:
43de34d3$0$18342$8fcfb975@news.wanadoo.fr...
MERCI DANIEL
Ca marche !
Tu peux me commenter ce code ?
Et si tu veux conserver les résultats dans un fichier texte ?
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" <azerty@poiuytr.fr> a écrit dans le message de news:
43de28ac$0$18329$8fcfb975@news.wanadoo.fr...
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 !!!!
Sub test() ' Principe : à chaque cellule, on compare avec les cellules ' précédentes stockées dans un tableau Dim Plage As Range, c As Range Dim Tabl, Ctr As Long, ind As Boolean Ctr = 0 ReDim Tabl(Ctr) ' Ouverture du fichier texte Open "FichierTexte.txt" For Output As #1 ' Sélection de la plage de cellules Set Plage = Range("A1", Range("A65536").End(xlUp)) ' Traitement de chaque cellule de la plage For Each c In Plage ' On positionne ind à true ind = True ' Comparaison de la vaaleur de la cellule avec les éléments du tableau For i = 0 To UBound(Tabl) If c.Value = Tabl(i) Then ind = False End If Next i ' Si ind est égal à true (pas de correspondance dans le tableau If ind = True Then ' On augmente de 1 la taille du tableau Ctr = Ctr + 1 ReDim Preserve Tabl(Ctr) Tabl(Ctr) = c.Value ' Ecriture du fichier texte Print #1, c.Value & " " & WorksheetFunction.CountIf(Range("A:A"), c) End If Next c ' Fermeture du fichier texte Close #1 End Sub
Cordialement. Daniel "azerty" a écrit dans le message de news: 43de34d3$0$18342$
MERCI DANIEL
Ca marche !
Tu peux me commenter ce code ?
Et si tu veux conserver les résultats dans un fichier texte ?
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 !!!!