compter le nombre total des doublons en vba

  • Initiateur de la discussion Initiateur de la discussion ricoricK
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

ricoricK

XLDnaute Nouveau
Bonjour ou bonsoir, je ne sais plus quoi dire,

voila la fonction ci dessous liste parfaitement les doublons,

mais ne me donne pas le nombre total pour chaque doublon.

à mon avis le pb doit être
dans la boucle for.

si à cette heure quelqu'un à une idée, ou une proposition de code,je le remercie d'avance.bonne nuit

Sub cmptdoublon()
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
colonne à tester
Set Plage = Range("A1:A" & Range("A65536").End(xlUp).Row)


Tableau = Plage.Value

On Error Resume Next
'boucle sur la plage à tester
For i = 1 To Plage.Count

ReDim Preserve Resultat(2, m + 1)


Un.Add Tableau(i, 1), CStr(Tableau(i, 1))

'S'il y a une erreur (donc présence d'un doublon)
If Err <> 0 Then

'boucle sur le tableau des doublons pour vérifier s'il a déjà
'été identifié
For j = 1 To m + 1
'Si oui, on incrémente 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

End If
End If
Next i

'----- ici Affichage de la liste et le nombre de doublons
For j = 1 To m
Doublons = Doublons & Resultat(1, j) & " --> " & _
Resultat(2, j) & vbCrLf
Next j

MsgBox Doublons

Set Un = Nothing
End Sub
 
Re : compter le nombre total des doublons en vba

Bonjour

Ci joint une procédure à tester

Code:
Sub cmptdoublon()
Dim Plage As Range
Dim Tableau(), Resultat() As String
Dim i As Long, j As Long, m As Integer, j1 As Long
Dim Un As Collection
Dim trouve As Boolean
Dim Doublons As String

Set Un = New Collection
'colonne à tester
Set Plage = Range("A1:A" & Range("A65536").End(xlUp).Row)
ReDim Resultat(1 To Plage.Count, 1 To Plage.Count)

Tableau = Plage.Value
On Error GoTo suite
'boucle sur la plage à tester
For i = 1 To Plage.Count
        If Tableau(i, 1) <> "" Then
            Un.Add Tableau(i, 1), CStr(Tableau(i, 1))
        End If
Next i
Set Un = Nothing

For j = LBound(Resultat) To UBound(Resultat)
    If Resultat(j, 1) = "" Then
        j1 = j
        Exit For
    End If
Call MsgBox("Valeur :" & Resultat(j, 1) _
            & vbCrLf & "" _
            & vbCrLf & "Nombre trouvé : " & Resultat(j, 2) _
            , vbExclamation, "Doublons")

Next j


Exit Sub

suite:
trouve = False
For j = LBound(Resultat) To UBound(Resultat)
    If Resultat(j, 1) = Tableau(i, 1) Then
        Resultat(j, 2) = CLng(Resultat(j, 2)) + 1
        trouve = True
        Exit For
    End If
    If Resultat(j, 1) = "" Then
        j1 = j
        Exit For
    End If
    
Next j

If trouve = False Then
    Resultat(j1, 1) = Tableau(i, 1)
    Resultat(j1, 2) = 0
End If

Resume Next
End Sub

JP
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
585
Réponses
8
Affichages
275
Réponses
3
Affichages
267
Réponses
5
Affichages
716
  • Question Question
Microsoft 365 Erreur UBound
Réponses
4
Affichages
221
Réponses
10
Affichages
538
Retour