OVH Cloud OVH Cloud

Compter doublons dans listbox

3 réponses
Avatar
Kévin
Salut,

Comment faire en vba pour compter dans un listbox le=20
nombre de fois o=F9 appara=EEt un =E9l=E9ment?

Par exemple dans la listbox "Stock", je veux savoir=20
combien de fois le mot "Pomme" appara=EEt.

Merci.

3 réponses

Avatar
anomymousA
bonjour,

un truc comme ça en supposant que ta listbox s'appelle stock

compteur=0

for I=0 to stock.listcount-1
if stock.list(I)="Pomme" then compteur=compteur+1
next

A+

Salut,

Comment faire en vba pour compter dans un listbox le
nombre de fois où apparaît un élément?

Par exemple dans la listbox "Stock", je veux savoir
combien de fois le mot "Pomme" apparaît.

Merci.




Avatar
LE TROLL
Bonjour Kevin,

Voici une procédure qui fonctionne (tu peux copier coller, changer le
nom de la procédure comme tu veux, si tu as d'autres questions tu demandes
(on peut aussi le faire à l'aide de plusieurs listes (le tri)), voici:

Sub Form_Activate() ' nom précédure (peut être changé)
' METTRE OBJET ---> List1
'
List1.Clear ' pour exemple, chargement list1
List1.AddItem "orange"
List1.AddItem "poire"
List1.AddItem "orange"
List1.AddItem "orange"
List1.AddItem "cerise"
List1.AddItem "poire"
List1.AddItem "orange"
List1.AddItem "citron"
List1.AddItem "citron"
List1.AddItem "orange"
'
Dim Un() As String ' tableau vide
Dim Deux() As String
Dim Nb() As Long
Dim sup As String
Dim resultat As String
Dim i As Long ' variables
Dim j As Long
Dim k As Long
Dim l As Long
'
If List1.ListCount < 0 Then: Exit Sub ' liste vide
ReDim Un(List1.ListCount) ' espece(NbEnregisListe
ReDim Deux(List1.ListCount)
ReDim Nb(List1.ListCount)
'
For i = 1 To List1.ListCount ' charge Un<-List1
Un(i) = List1.List(i - 1)
Next i
'-----
For i = 1 To List1.ListCount ' TEST
k = 0
For j = 1 To List1.ListCount ' compte combien de chaque
If Un(i) <> "" And Un(i) = List1.List(j - 1) Then k = k + 1
Next j
Deux(i) = Un(i) & " " & k ' écrit objet + nombre
'
sup = Un(i) ' suprime objet de la recherche
For l = 1 To List1.ListCount
If sup = Un(l) Then: Un(l) = ""
Next l
Next i
'
resultat = ""
k = 0
For i = 1 To List1.ListCount ' retasse le 0
If Len(Deux(i)) > 2 Then
resultat = resultat & Deux(i) & Chr(13) & Chr(10)
k = k + 1
End If
Next i
resultat = resultat & "total des échantillons = " & List1.ListCount &
Chr(13) & Chr(10)
resultat = resultat & "Espèces d'échantillons différentes = " & k &
Chr(13) & Chr(10)
'
MsgBox resultat
End Sub
-----------------


"Kévin" a écrit dans le message de
news: 21bc01c4dcfb$f401fed0$
Salut,

Comment faire en vba pour compter dans un listbox le
nombre de fois où apparaît un élément?

Par exemple dans la listbox "Stock", je veux savoir
combien de fois le mot "Pomme" apparaît.

Merci.
Avatar
LE TROLL
Bonjour Kevin,

Voici une procédure qui fonctionne (tu peux copier coller, changer le
nom de la procédure comme tu veux, si tu as d'autres questions tu demandes
(on peut aussi le faire à l'aide de plusieurs listes (le tri)), voici:

Sub Form_Activate() ' nom précédure (peut être changé)
' METTRE OBJET ---> List1
'
List1.Clear ' pour exemple, chargement list1
List1.AddItem "orange"
List1.AddItem "poire"
List1.AddItem "orange"
List1.AddItem "orange"
List1.AddItem "cerise"
List1.AddItem "poire"
List1.AddItem "orange"
List1.AddItem "citron"
List1.AddItem "citron"
List1.AddItem "orange"
'
Dim Un() As String ' tableau vide
Dim Deux() As String
Dim Nb() As Long
Dim sup As String
Dim resultat As String
Dim i As Long ' variables
Dim j As Long
Dim k As Long
Dim l As Long
'
If List1.ListCount < 0 Then: Exit Sub ' liste vide
ReDim Un(List1.ListCount) ' espece(NbEnregisListe
ReDim Deux(List1.ListCount)
ReDim Nb(List1.ListCount)
'
For i = 1 To List1.ListCount ' charge Un<-List1
Un(i) = List1.List(i - 1)
Next i
'-----
For i = 1 To List1.ListCount ' TEST
k = 0
For j = 1 To List1.ListCount ' compte combien de chaque
If Un(i) <> "" And Un(i) = List1.List(j - 1) Then k = k + 1
Next j
Deux(i) = Un(i) & " " & k ' écrit objet + nombre
'
sup = Un(i) ' suprime objet de la recherche
For l = 1 To List1.ListCount
If sup = Un(l) Then: Un(l) = ""
Next l
Next i
'
resultat = ""
k = 0
For i = 1 To List1.ListCount ' retasse le 0
If Len(Deux(i)) > 2 Then
resultat = resultat & Deux(i) & Chr(13) & Chr(10)
k = k + 1
End If
Next i
resultat = resultat & "total des échantillons = " & List1.ListCount &
Chr(13) & Chr(10)
resultat = resultat & "Espèces d'échantillons différentes = " & k &
Chr(13) & Chr(10)
'
MsgBox resultat
End Sub
-----------------

"Kévin" a écrit dans le message de
news: 21bc01c4dcfb$f401fed0$
Salut,

Comment faire en vba pour compter dans un listbox le
nombre de fois où apparaît un élément?

Par exemple dans la listbox "Stock", je veux savoir
combien de fois le mot "Pomme" apparaît.

Merci.