Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Nb de lignes distinctes

13 réponses
Avatar
Fan
Bonjour

J'ai 3 colonnes et je souhaiterais par vba connaitre le nombre de lignes
distinctes.

Merci

10 réponses

1 2
Avatar
JB
Bonjour,

Donne la première et dernière ligne des colonnes B,C,D

PremLigne = [b:d].Find("*", , , , xlByRows, xlNext).Row
dernLigne = [b:d].Find("*", , , , xlByRows, xlPrevious).Row

JB


On 5 fév, 14:02, "Fan" wrote:
Bonjour

J'ai 3 colonnes et je souhaiterais par vba connaitre le nombre de lignes
distinctes.

Merci


Avatar
MichDenis
La méthode "Find" utilisée de cette manière ne couvre pas tous les cas de figure !
C'est pas grave, en autant que cela fonctionne la plus part du temps ....!
;-)

L'aide est explicite mais son application demeure alambiquée !



"JB" a écrit dans le message de news:

Bonjour,

Donne la première et dernière ligne des colonnes B,C,D

PremLigne = [b:d].Find("*", , , , xlByRows, xlNext).Row
dernLigne = [b:d].Find("*", , , , xlByRows, xlPrevious).Row

JB


On 5 fév, 14:02, "Fan" wrote:
Bonjour

J'ai 3 colonnes et je souhaiterais par vba connaitre le nombre de lignes
distinctes.

Merci


Avatar
Fan
Merci pour votre réponse mais malheureusement je ne la comprends pas.

Pour être sur de ma demande je la reformule.

J'ai x lignes sur 4 colonnes (A, B, C, D) de la facon suivantes

A - B - C - D
10 - 5 - 1 - 8
14 - 5 - 1 - 9
19 - 6 - 1 - 10
10 - 5 - 1 - 11

Je recherche le nombres de lignes dictinctes sur les 1er colonnes ne renant
ainsi pas compte de la dernière
le nombre attendu pour cette exemple devrait être : 3

C'est la méthode sous vba que je n'arrive pas à metre en oeuvre.

Merci


"JB" a écrit dans le message de
news:
Bonjour,

Donne la première et dernière ligne des colonnes B,C,D

PremLigne = [b:d].Find("*", , , , xlByRows, xlNext).Row
dernLigne = [b:d].Find("*", , , , xlByRows, xlPrevious).Row

JB


On 5 fév, 14:02, "Fan" wrote:
Bonjour

J'ai 3 colonnes et je souhaiterais par vba connaitre le nombre de lignes
distinctes.

Merci


Avatar
Daniel.C
Bonjour.
Formule matricielle (valider avec CTRL+MAJ+Entrée) :
=MAX(SOMME(1/NB.SI(A1:A4;A1:A4));SOMME(1/NB.SI(B1:B4;B1:B4));SOMME(1/NB.SI(C1:C4;C1:C4)))
Cordialement.
Daniel
"Fan" a écrit dans le message de news:
eDaQM2$
Merci pour votre réponse mais malheureusement je ne la comprends pas.

Pour être sur de ma demande je la reformule.

J'ai x lignes sur 4 colonnes (A, B, C, D) de la facon suivantes

A - B - C - D
10 - 5 - 1 - 8
14 - 5 - 1 - 9
19 - 6 - 1 - 10
10 - 5 - 1 - 11

Je recherche le nombres de lignes dictinctes sur les 1er colonnes ne
renant
ainsi pas compte de la dernière
le nombre attendu pour cette exemple devrait être : 3

C'est la méthode sous vba que je n'arrive pas à metre en oeuvre.

Merci


"JB" a écrit dans le message de
news:
Bonjour,

Donne la première et dernière ligne des colonnes B,C,D

PremLigne = [b:d].Find("*", , , , xlByRows, xlNext).Row
dernLigne = [b:d].Find("*", , , , xlByRows, xlPrevious).Row

JB


On 5 fév, 14:02, "Fan" wrote:
Bonjour

J'ai 3 colonnes et je souhaiterais par vba connaitre le nombre de lignes
distinctes.

Merci







Avatar
Fan
Superbe, j'aurais eu du mal à la deviner. merci

Mais voilà puis-je pousser le vice en vous demandant comme l'adapter dans
une macro avec comme paramètre inconnu le nombre de ligne à exploiter .

merci


"Daniel.C" a écrit dans le message de
news:
Bonjour.
Formule matricielle (valider avec CTRL+MAJ+Entrée) :

=MAX(SOMME(1/NB.SI(A1:A4;A1:A4));SOMME(1/NB.SI(B1:B4;B1:B4));SOMME(1/NB.SI(C

1:C4;C1:C4)))
Cordialement.
Daniel
"Fan" a écrit dans le message de news:
eDaQM2$
Merci pour votre réponse mais malheureusement je ne la comprends pas.

Pour être sur de ma demande je la reformule.

J'ai x lignes sur 4 colonnes (A, B, C, D) de la facon suivantes

A - B - C - D
10 - 5 - 1 - 8
14 - 5 - 1 - 9
19 - 6 - 1 - 10
10 - 5 - 1 - 11

Je recherche le nombres de lignes dictinctes sur les 1er colonnes ne
renant
ainsi pas compte de la dernière
le nombre attendu pour cette exemple devrait être : 3

C'est la méthode sous vba que je n'arrive pas à metre en oeuvre.

Merci


"JB" a écrit dans le message de

news:


Bonjour,

Donne la première et dernière ligne des colonnes B,C,D

PremLigne = [b:d].Find("*", , , , xlByRows, xlNext).Row
dernLigne = [b:d].Find("*", , , , xlByRows, xlPrevious).Row

JB


On 5 fév, 14:02, "Fan" wrote:
Bonjour

J'ai 3 colonnes et je souhaiterais par vba connaitre le nombre de
lignes



distinctes.

Merci












Avatar
JB
Sub Essai()
MsgBox SDM([A1:C6])
End Sub

Function SDM(champ)
Set MonDico = CreateObject("Scripting.Dictionary")
a = champ
For i = LBound(a, 1) To UBound(a, 1)
temp = ""
For k = LBound(a, 2) To UBound(a, 2)
temp = temp & " " & a(i, k)
Next k
If Not MonDico.Exists(temp) Then MonDico.Add temp, temp
Next i
SDM = MonDico.Count
End Function

http://cjoint.com/?cftxyKBr8n

JB



On 5 fév, 14:46, "Fan" wrote:
Merci pour votre réponse mais malheureusement je ne la comprends pas.

Pour être sur de ma demande je la reformule.

J'ai x lignes sur 4 colonnes (A, B, C, D) de la facon suivantes

A  -  B - C - D
10 -  5 - 1  - 8
14 -  5 - 1  - 9
19 -  6 - 1  - 10
10 -  5 - 1  - 11

Je recherche le nombres de lignes dictinctes sur les 1er colonnes ne renan t
ainsi pas compte de la dernière
le nombre attendu pour cette exemple devrait être : 3

C'est la méthode sous vba que je n'arrive pas à metre en oeuvre.

Merci

"JB" a écrit dans le message denews:d08286e4-2
Bonjour,

Donne la première et dernière ligne des colonnes B,C,D

   PremLigne = [b:d].Find("*", , , , xlByRows, xlNext).Row
   dernLigne = [b:d].Find("*", , , , xlByRows, xlPrevious).Row

JB

On 5 fév, 14:02, "Fan" wrote:



Bonjour

J'ai 3 colonnes et je souhaiterais par vba connaitre le nombre de lignes
distinctes.

Merci- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -



Avatar
Daniel.C
Etant assez paresseux :

MsgBox Evaluate("=MAX(SUM(IF(ISERR(1/COUNTIF(A1:A65000,A1:A65000))" & _
",0,1/COUNTIF(A1:A65000,A1:A65000))),SUM(IF(ISERR(1/COUNTIF(B1:B65000,B1:B65000))"
& _
",0,1/COUNTIF(B1:B65000,B1:B65000))),SUM(IF(ISERR(1/COUNTIF(C1:C65000,C1:C65000))"
& _
",0,1/COUNTIF(C1:C65000,C1:C65000))))")

Daniel
"Fan" a écrit dans le message de news:
%
Superbe, j'aurais eu du mal à la deviner. merci

Mais voilà puis-je pousser le vice en vous demandant comme l'adapter dans
une macro avec comme paramètre inconnu le nombre de ligne à exploiter .

merci


"Daniel.C" a écrit dans le message de
news:
Bonjour.
Formule matricielle (valider avec CTRL+MAJ+Entrée) :

=MAX(SOMME(1/NB.SI(A1:A4;A1:A4));SOMME(1/NB.SI(B1:B4;B1:B4));SOMME(1/NB.SI(C

1:C4;C1:C4)))
Cordialement.
Daniel
"Fan" a écrit dans le message de news:
eDaQM2$
Merci pour votre réponse mais malheureusement je ne la comprends pas.

Pour être sur de ma demande je la reformule.

J'ai x lignes sur 4 colonnes (A, B, C, D) de la facon suivantes

A - B - C - D
10 - 5 - 1 - 8
14 - 5 - 1 - 9
19 - 6 - 1 - 10
10 - 5 - 1 - 11

Je recherche le nombres de lignes dictinctes sur les 1er colonnes ne
renant
ainsi pas compte de la dernière
le nombre attendu pour cette exemple devrait être : 3

C'est la méthode sous vba que je n'arrive pas à metre en oeuvre.

Merci


"JB" a écrit dans le message de

news:


Bonjour,

Donne la première et dernière ligne des colonnes B,C,D

PremLigne = [b:d].Find("*", , , , xlByRows, xlNext).Row
dernLigne = [b:d].Find("*", , , , xlByRows, xlPrevious).Row

JB


On 5 fév, 14:02, "Fan" wrote:
Bonjour

J'ai 3 colonnes et je souhaiterais par vba connaitre le nombre de
lignes



distinctes.

Merci
















Avatar
MichDenis
En supposant que la première ligne renferme des étiquettes
de colonnes (obligatoire pour un filtre élaboré)

Tu adaptes la plage où sont tes données dans mon exemple : A1:Dx

Feuil1 est le nom de l'objet "Feuil1" dans la feuille de l'éditeur de code
et non le nom de l'onglet de la feuille.

Il y a ceci :
'----------------------------------
Sub test()
Dim Nb As Long, Total As Long
Application.ScreenUpdating = False
With Feuil1
Derlig = .Range("A:D").Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
With .Range(.Cells(1, "A"), .Cells(Derlig, "C"))
.AdvancedFilter xlFilterInPlace, , , True
Total = Application.Subtotal(3, .Columns(1).Cells) - 1
End With
.ShowAllData
End With
MsgBox Total
End Sub
'----------------------------------



"Fan" a écrit dans le message de news: e6Heed$
Bonjour

J'ai 3 colonnes et je souhaiterais par vba connaitre le nombre de lignes
distinctes.

Merci
Avatar
MichDenis
Si dans la colonne A, B, ou C, tu as des cellules vides, modiifie
la ligne Total = .... par ce qui suit dans la procédure soumiise .

Total = Round(((Application.Subtotal(3, .Cells) + _
Application.CountBlank(.Cells)) / 3) - 1, 0)




"MichDenis" a écrit dans le message de news:

En supposant que la première ligne renferme des étiquettes
de colonnes (obligatoire pour un filtre élaboré)

Tu adaptes la plage où sont tes données dans mon exemple : A1:Dx

Feuil1 est le nom de l'objet "Feuil1" dans la feuille de l'éditeur de code
et non le nom de l'onglet de la feuille.

Il y a ceci :
'----------------------------------
Sub test()
Dim Nb As Long, Total As Long
Application.ScreenUpdating = False
With Feuil1
Derlig = .Range("A:D").Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
With .Range(.Cells(1, "A"), .Cells(Derlig, "C"))
.AdvancedFilter xlFilterInPlace, , , True
Total = Application.Subtotal(3, .Columns(1).Cells) - 1
End With
.ShowAllData
End With
MsgBox Total
End Sub
'----------------------------------



"Fan" a écrit dans le message de news: e6Heed$
Bonjour

J'ai 3 colonnes et je souhaiterais par vba connaitre le nombre de lignes
distinctes.

Merci
Avatar
Fan
Merci à tous les 3 pour vos solutions; elles sont parfaites.

"MichDenis" a écrit dans le message de
news:uH4$
Si dans la colonne A, B, ou C, tu as des cellules vides, modiifie
la ligne Total = .... par ce qui suit dans la procédure soumiise .

Total = Round(((Application.Subtotal(3, .Cells) + _
Application.CountBlank(.Cells)) / 3) - 1, 0)




"MichDenis" a écrit dans le message de news:

En supposant que la première ligne renferme des étiquettes
de colonnes (obligatoire pour un filtre élaboré)

Tu adaptes la plage où sont tes données dans mon exemple : A1:Dx

Feuil1 est le nom de l'objet "Feuil1" dans la feuille de l'éditeur de code
et non le nom de l'onglet de la feuille.

Il y a ceci :
'----------------------------------
Sub test()
Dim Nb As Long, Total As Long
Application.ScreenUpdating = False
With Feuil1
Derlig = .Range("A:D").Find(What:="*", _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
With .Range(.Cells(1, "A"), .Cells(Derlig, "C"))
.AdvancedFilter xlFilterInPlace, , , True
Total = Application.Subtotal(3, .Columns(1).Cells) - 1
End With
.ShowAllData
End With
MsgBox Total
End Sub
'----------------------------------



"Fan" a écrit dans le message de news:
e6Heed$

Bonjour

J'ai 3 colonnes et je souhaiterais par vba connaitre le nombre de lignes
distinctes.

Merci







1 2