Compter et afficher les valeurs qui se présentent plus d'une fois dans une plage

aurel2525

XLDnaute Nouveau
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.
 

Pièces jointes

  • Classeur1.xls
    68 KB · Affichages: 72
  • Classeur1.xls
    68 KB · Affichages: 73
  • Classeur1.xls
    68 KB · Affichages: 70

Dugenou

XLDnaute Barbatruc
Re : Compter et afficher les valeurs qui se présentent plus d'une fois dans une plag

Bonjour Aurel, le forum,

As tu essayé de corriger cette partie :
Set Plage = Range("A1:A" & Range("A65536").End(xlUp).Row)
pour mettre la colonne que tu veux tester ?
du genre
Set Plage = Range("W1:A" & Range("W65536").End(xlUp).Row) pour la colonne W
?

Cordialement
 

Dugenou

XLDnaute Barbatruc
Re : Compter et afficher les valeurs qui se présentent plus d'une fois dans une plag

re bonjour,

pour n'afficher que les supérieurs à 1, je pense que dans cette partie :
'----- Affiche la liste er le nombre de doublons --------
For j = 1 To m
Doublons = Doublons & Resultat(1, j) & "-->" & _
Resultat(2, j) & vbCrLf
Next j

si tu ajoutes un test sur le nb de doublons ça devrait le faire

Cordialement
 

aurel2525

XLDnaute Nouveau
Re : Compter et afficher les valeurs qui se présentent plus d'une fois dans une plag

Bonsoir Dugenou et surtout merci de t'intéresser à mon problème,
Concernant ton 1er message, je cherche à effectuer le calcul sur une plage de données, et non pas que sur une colonne. Exemple : de la colonne A à AE. Et la je sais pas faire....
Ensuite concernant ton 2ème message, tu me dis que je dois faire un test sur le nb de doublons, mais là aussi je suis perdu...
Donc voilà si tu as un peu de temps pour développer tout celà, celà serait super cool...
Merci par avance.
 

Dugenou

XLDnaute Barbatruc
Re : Compter et afficher les valeurs qui se présentent plus d'une fois dans une plag

Aurel,

As-tu vraiment lu le code, essayé de le comprendre et de le modifier ?
J'en doute car il est fort bien écrit et fonctionne. Tu n'as pas remarqué que le chiffre indiqué (1 par exemple) est bien le nb de doublons (il n'affiche pas les valeurs qui ne sont présentes qu'une fois !)
Pour le comptage dans une plage par contre, j'ai dû creuser un moment avant de comprendre, mais je crois que j'y suis arrivé.
Dans le fichier joint, j'ai adapté pour une plage sur les colonnes A et B. En fait il ne suffit pas de changer la plage, il fallait aussi adapter pour que les valeurs de la seconde colonne (et suivantes) soit entrées dans le tableau.
Si tu veux une autre plage, il faut changer seulement la partie :
Set Plage = Range("A1:B" & Range("A65536").End(xlUp).Row)
où tu dois indiquer le départ (A1) et la dernière colonne (B)


Bon courage pour la suite
 

Pièces jointes

  • doublons plage aurel.xls
    39.5 KB · Affichages: 80

Discussions similaires

Réponses
11
Affichages
236

Statistiques des forums

Discussions
311 720
Messages
2 081 885
Membres
101 830
dernier inscrit
sonia poulaert