Tout d'abord bonjour.
J'ai parcouru votre site (qui est super) de fond en comble, et impossible de trouver réponse à ma question. J'ai lu plusieurs fois les différent sujets qui traitaient les problèmes concernant les doublons, mais impossible d'adapter à ma situation.
Je vous expose ma commande :
Je désire compter et afficher au moyen d'une macro associé à un bouton, le nombre de fois qu'une valeur numérique est présente dans une plage de données. Sachant que si elle est présente une seule fois, elle ne m'intéresse pas.
Ensuite, affichage du résultat dans une MSGBOX.
Je pense que vous allez me conseiller d'aller regarder du coté des forums qui traitent les problèmes relatifs aux doublons, je l'ai fait est j'ai récupérer la macro suivante :
Option Explicit
Option Base 1
Sub listeDoublons()
Dim Plage As Range
Dim Tableau(), Resultat() As String
Dim i As Integer, j As Integer, m As Integer
Dim Un As Collection
Dim Doublons As String
Set Un = New Collection
'La plage de cellules à tester
Set Plage = Range("A1:A" & Range("A65536").End(xlUp).Row)
Tableau = Plage.Value
ReDim Preserve Resultat(2, 1)
On Error Resume Next
'boucle sur la plage à tester
For i = 1 To Plage.Count
'Utilise une collection pour rechercher les doublons
'(les collections n'acceptent que des données uniques)
Un.Add Tableau(i, 1), Tableau(i, 1)
'S'il y a une erreur (donc presence d'un doublon)
If Err <> 0 Then
'boucle sur le tableau des doublons pour verifier s'il a deja
'été identifié
For j = 1 To m + 1
'Si oui , on incrément le compteur
If Resultat(1, j) = Tableau(i, 1) Then
Resultat(2, j) = Resultat(2, j) + 1
Err.Clear
Exit For
End If
Next j
'Si non, on ajoute le doublon dans le tableau
If Err <> 0 Then
Resultat(1, m + 1) = Tableau(i, 1)
Resultat(2, m + 1) = 1
m = m + 1
Err.Clear
ReDim Preserve Resultat(2, m + 1)
End If
End If
Next i
'----- Affiche la liste er le nombre de doublons --------
For j = 1 To m
Doublons = Doublons & Resultat(1, j) & "-->" & _
Resultat(2, j) & vbCrLf
Next j
MsgBox Doublons
End Sub
Mais impossible de changer ''la plage de cellule à tester pour qu'elle me compte autre chose que la première colonne.
De plus cette macro, m'affiche les ''résultat'' même quand celui-ci n'apparait qu'une fois ?????
Pour finaliser ma commande, trouver ci-joint mon classeur pour bien comprendre l'étendu de la plage à compter. Sachant que le nombre de lignes n'est pas exhaustif. Il pourra s'étendre jusqu'à au moins 5000 lignes.
Merci de votre aide.
J'ai parcouru votre site (qui est super) de fond en comble, et impossible de trouver réponse à ma question. J'ai lu plusieurs fois les différent sujets qui traitaient les problèmes concernant les doublons, mais impossible d'adapter à ma situation.
Je vous expose ma commande :
Je désire compter et afficher au moyen d'une macro associé à un bouton, le nombre de fois qu'une valeur numérique est présente dans une plage de données. Sachant que si elle est présente une seule fois, elle ne m'intéresse pas.
Ensuite, affichage du résultat dans une MSGBOX.
Je pense que vous allez me conseiller d'aller regarder du coté des forums qui traitent les problèmes relatifs aux doublons, je l'ai fait est j'ai récupérer la macro suivante :
Option Explicit
Option Base 1
Sub listeDoublons()
Dim Plage As Range
Dim Tableau(), Resultat() As String
Dim i As Integer, j As Integer, m As Integer
Dim Un As Collection
Dim Doublons As String
Set Un = New Collection
'La plage de cellules à tester
Set Plage = Range("A1:A" & Range("A65536").End(xlUp).Row)
Tableau = Plage.Value
ReDim Preserve Resultat(2, 1)
On Error Resume Next
'boucle sur la plage à tester
For i = 1 To Plage.Count
'Utilise une collection pour rechercher les doublons
'(les collections n'acceptent que des données uniques)
Un.Add Tableau(i, 1), Tableau(i, 1)
'S'il y a une erreur (donc presence d'un doublon)
If Err <> 0 Then
'boucle sur le tableau des doublons pour verifier s'il a deja
'été identifié
For j = 1 To m + 1
'Si oui , on incrément le compteur
If Resultat(1, j) = Tableau(i, 1) Then
Resultat(2, j) = Resultat(2, j) + 1
Err.Clear
Exit For
End If
Next j
'Si non, on ajoute le doublon dans le tableau
If Err <> 0 Then
Resultat(1, m + 1) = Tableau(i, 1)
Resultat(2, m + 1) = 1
m = m + 1
Err.Clear
ReDim Preserve Resultat(2, m + 1)
End If
End If
Next i
'----- Affiche la liste er le nombre de doublons --------
For j = 1 To m
Doublons = Doublons & Resultat(1, j) & "-->" & _
Resultat(2, j) & vbCrLf
Next j
MsgBox Doublons
End Sub
Mais impossible de changer ''la plage de cellule à tester pour qu'elle me compte autre chose que la première colonne.
De plus cette macro, m'affiche les ''résultat'' même quand celui-ci n'apparait qu'une fois ?????
Pour finaliser ma commande, trouver ci-joint mon classeur pour bien comprendre l'étendu de la plage à compter. Sachant que le nombre de lignes n'est pas exhaustif. Il pourra s'étendre jusqu'à au moins 5000 lignes.
Merci de votre aide.