NB.Si et renvoi valeur

alienox

XLDnaute Occasionnel
Bonsoir le forum,

J'ai un tableau comportant 10 cellules par 3, avec un chiffre par cellule.

Avec la formule Nb.si, j'arrive à compter le nombre de fois est présent un chiffre dans le tableau.
Mais comment renvoyer les chiffres comptés en ordre croissant?

Voir le fichier joint

Bonne soirée

et merci d'avance
 

Pièces jointes

  • Classeur2.xlsx
    10.7 KB · Affichages: 50
  • Classeur2.xlsx
    10.7 KB · Affichages: 55
  • Classeur2.xlsx
    10.7 KB · Affichages: 58

alienox

XLDnaute Occasionnel
Re : NB.Si et renvoi valeur

Bonjour le forum et bonjour Laurent950,

Merci de t'intéresser au sujet et de ton aide, mais ce que tu proposes est déjà ce que je fais dans le fichier joint, j'ai mis ta formule dans le fichier pour comparaison, mais le problème est qu'il me sort tous les num présents avec des doublons....

A savoir que les chiffres changent tous les jours dans ce tableau.

A+
 

Pièces jointes

  • Classeur2.xlsx
    11.7 KB · Affichages: 46
  • Classeur2.xlsx
    11.7 KB · Affichages: 57
  • Classeur2.xlsx
    11.7 KB · Affichages: 55

laurent950

XLDnaute Accro
Re : NB.Si et renvoi valeur

Avec une macro ? vous savez vous servir de VBA ?

voici le code que j'ai laisser tel quel :

il y a le fichier joint aussi au message par formule je sais pas faire !

VB:
Sub test()

Dim TabBase() As Variant
TabBase = Range(Cells(3, 3), Cells(5, 12))

Dim TabRes() As Variant
ReDim TabRes(1 To UBound(TabBase, 1) * UBound(TabBase, 2), 1 To 5)

cpt = 1
For i = 1 To UBound(TabBase, 1)
    For j = 1 To UBound(TabBase, 2)
        Debug.Print TabBase(i, j)
        TabRes(cpt, 1) = TabBase(i, j)
        Debug.Print TabRes(cpt, 1)
        cpt = cpt + 1
    Next j
Next i

' repére le doublon !
For i = 1 To UBound(TabRes, 1)
    For j = i + 1 To UBound(TabRes, 1)
        If TabRes(i, 1) = TabRes(j, 1) Then
            TabRes(j, 2) = "Doublon"
        End If
    Next j
Next i

' Compteur du nombre de fois qu'il y a le numéro !
For i = 1 To UBound(TabRes, 1)
    For j = 1 To UBound(TabRes, 1)
        If TabRes(i, 1) = TabRes(j, 1) Then
            TabRes(i, 3) = TabRes(i, 3) + 1
            TabRes(i, 4) = TabRes(i, 3) & TabRes(i, 1)
            TabRes(i, 5) = "Il y a " & TabRes(i, 3) & " fois le NB : " & TabRes(i, 1) & " x dans le Tableau"
        End If
    Next j
Next i

'Cells(13, 6).Resize(UBound(TabRes, 1), UBound(TabRes, 2)) = TabRes

' tri
Call Tri(TabRes(), 4, LBound(TabRes, 1), UBound(TabRes, 1))

'Cells(13, 6).Resize(UBound(TabRes, 1), UBound(TabRes, 2)) = TabRes

cpt = Empty
Dim TabAff() As Variant
' Compte le NB ligne sans doublon !
For i = 1 To UBound(TabRes, 1)
    If TabRes(i, 2) <> "Doublon" Then
        cpt = cpt + 1
    End If
Next i
ReDim TabAff(1 To cpt, 1 To 1)

cpt = 1
For i = 1 To UBound(TabRes, 1)
    If TabRes(i, 2) <> "Doublon" Then
        TabAff(cpt, 1) = TabRes(i, 5)
        cpt = cpt + 1
    End If
Next i

Cells(22, 2).Resize(UBound(TabAff, 1), UBound(TabAff, 2)) = TabAff

End Sub

Sub Tri(TabRes(), ColTri, gauc, droi) ' Quick sort
  ref = TabRes((gauc + droi) \ 2, ColTri)
  g = gauc: d = droi
  Do
    Do While TabRes(g, ColTri) < ref: g = g + 1: Loop
    Do While ref < TabRes(d, ColTri): d = d - 1: Loop
    If g <= d Then
       For k = LBound(TabRes, 2) To UBound(TabRes, 2)
         temp = TabRes(g, k): TabRes(g, k) = TabRes(d, k): TabRes(d, k) = temp
       Next k
       g = g + 1: d = d - 1
    End If
  Loop While g <= d
  If g < droi Then Call Tri(TabRes, ColTri, g, droi)
  If gauc < d Then Call Tri(TabRes, ColTri, gauc, d)

End Sub

laurent
 

Pièces jointes

  • Formule sans doublons macro vba.xlsm
    23.1 KB · Affichages: 40
Dernière édition:

alienox

XLDnaute Occasionnel
Re : NB.Si et renvoi valeur

Bonjour le Forum et Laurent950,

Après test, cela fonctionne très bien,

A la suite de ce test, j'ai adapté le code à mon fichier (ici joint), mais j'ai un problème de renvoi de valeur dans des textbox.

J'aimerai pouvoir renvoyer les résultats trouvés (grâce à ton code), dans des textbox (10) présent sur un userform, dans l'ordre croissant en partant du textbox de gauche.

J'ai commencé à coder mais ce n'est pas convainquant.

A+
 

Pièces jointes

  • Classeur2V2.xlsm
    66.2 KB · Affichages: 37

Discussions similaires

Réponses
3
Affichages
250

Statistiques des forums

Discussions
312 684
Messages
2 090 916
Membres
104 697
dernier inscrit
Pierrot Hubert