Macro compteur doublon + ecriture

Bonjour,

Je suis assez novice en macro...j'essaye de trouver mon bonheur sur la toile, jusqu'à présent j'ai réussi...

Alors voilà, j'ai un Excel, avec deux colonnes, nom (chaine de caractère avec lettre/chiffre/symbole possible) et quantité (chiffre uniquement), plusieurs lignes avec des doublons de nom...je souhaiterai que ma macro comptabilise le nombre de ces doublons, l'écrive dans la première cellule de la ligne du doublon dans sa colonne quantité associé et supprime les ligne de doublons inutile....Vous avez suivi ahah ?

J'ai trouvé une macro permettant de comptabiliser ces doublons, mais il me les affichent seulement via une petite fenêtre, et moi je souhaiterai que ce nombre de doublons trouvés s'inscrivent directement dans la bonne colonne/ligne/cellule

Je vous joins un Excel, j'ai surligné en rouge les cellules où doivent par exemple s'inscrirent le nombre de doublons trouvés (pour cet exemple là car suivant l'Excel généré, les doublons peuvent être ailleurs)

Le code que j'ai troué :

Option Explicit
Option Base 1

Sub DOUBLONS()
    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 (sur une 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)

        'Utilise une collection pour rechercher les doublons
        '(les collections n'acceptent que des données uniques)
        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

    '----- Affiche 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

Pourriez-vous m'aider svp ?

Merci

34doublons.zip (27.61 Ko)

Bonjour,

les collections (sauf sur mac) ont été délaissées au profit du dictionnaire

Essaye ceci

Sub ListeSansDoublons()
Set monDico = CreateObject("Scripting.Dictionary")
For Each c In Range("a1", [A65000].End(xlUp))
  If c <> "" Then
  monDico(c.Value) = monDico(c.Value) + 1
End If
Next c
[D2].Resize(monDico.Count, 1) = Application.Transpose(monDico.Keys)
[E2].Resize(monDico.Count, 1) = Application.Transpose(monDico.Items)
End Sub

P.

Rechercher des sujets similaires à "macro compteur doublon ecriture"