Macro pour repérer les valeurs en doubles

10test.xlsx (8.15 Ko)

Bonjour,

Je recherche à réaliser une macro qui me permettrait d'afficher dans le document suivant:

Soit X le nombre de produits en double

" X produits ean 1111100000 ean en double" X produit ean 3444000 en double "

pour la colonne EAN

"X produits sku 200020202 en double " " X produits ean 1111100000

en double" pour la colonne Sku

et "X produit sku_manufacturer 1111100000 en double " " x produit sku_manufacturer 200020202 en double"

pour la colonne sku manufacturer.

L'idée est d'afficher les valeurs en double associé au nom de sa colonne, avec une macro en fonction de la colonne (en se basant sur le titre de la colonne afin que la position des colonne ne chamboule pas tout)

J'ai réussi à colorer les valeurs en double mais j'aimerais qu'un msgbox s'affiche avec le nombre de valeur en double pour chaque colonne.

Si vous avez la moindre idée ou conseil je suis preneuse !

Merci

Bonsoir,

par formule, en A8 :

=NB(1/FREQUENCE(SI(NB.SI(A2:A7;A2:A7)>1;A2:A7);A2:A7))

@ valider par Ctrl+Shift+Enter

@ tirer vers la droite

@ + +

Hello R@chid,

Je recherche plutôt à faire la macro ci dessus, car je vais l'executer sur plusieurs doc excels differents

Merci de votre aide !

Bonjour oshun9153, R@chid

Comment sont présentées tes données ? structures fixes, tableaux dynamiques Excel, n'importe où ?

Elles sont sous la forme de structures fixes

Bonsoir,

J'ai fait cette macro.

Cependant mon problème est le suivant : les colonnes que je souhaite vérifier ne sont pas toujours au meme endroit dans les fichiers que je reçois.

Savez-vous comment faire pour que la vérification de la colonne dépende de l'entete de la colonne (par exemple si je ne veux vérifier que la colonne nommée EAN ?)

Merci

Sub doublon()

Dim Plage As Range

Dim Cel As Range

With Worksheets("Feuil1")

'en colonne "A" à partir de A2

Set Plage = .Range(.Cells(2, 1), .Cells(.Rows.Count, 1).End(xlUp))

End With

'boucle la plage de la feuille "Compte" et cherche chaque valeur

'en correspondance exacte dans la plage de la feuille "Source"

For Each Cel In Plage

If Application.CountIf(Plage, Cel.Value) > 1 Then

MsgBox "Attention, la valeur '" & Cel.Value & "' est en doublon," _

& " le double est situé en '" & Cel.Address(0, 0) _

Cel.Interior.ColorIndex = 3

End If

Next Cel

End Sub

(re)

Le code "en vrac" c'est difficile à lire !

un petit fichier exemple (anonyme si nécessaire) c'est beaucoup plus facile !

Hello,

Oui, en effet, voici le fichier

14test-1.xlsm (17.24 Ko)

Quelqu'un aurait-il une petite idée pour que la plage de ma macro selectionne la colonne qui se nomme "Ean" ?

Merci

Bonsoir le fil

Vois ceci :

Option Explicit
Sub test()
Dim a, i As Long, j As Long, e, s, msg As String
    a = Sheets("Feuil1").Cells(1).CurrentRegion.Value
    With CreateObject("Scripting.Dictionary")
        For j = 1 To UBound(a, 2)
            Set .Item(a(1, j)) = CreateObject("Scripting.Dictionary")
            For i = 2 To UBound(a, 1)
                .Item(a(1, j))(a(i, j)) = .Item(a(1, j))(a(i, j)) + 1
            Next
        Next
        For Each e In .keys
            msg = msg & vbLf & "Produit : " & e
            For Each s In .Item(e).keys
                msg = msg & vbLf & vbTab & "     : " & s & " : " & .Item(e)(s)
            Next
        Next
    End With
    MsgBox msg
End Sub

klin89

bonjour

oshun9153 a écrit :

en double

Cependant on peut essayer une autre chose pour les triples

essayer une "DoubleClick" sur la colonne recherchée

3test.xlsm (16.01 Ko)

bonjour

ceci pour les double ,triple, quatre ......................

8test234.xlsm (17.80 Ko)

Re oshun9153,

Le code réajusté :

Option Explicit
Sub test()
Dim a, i As Long, j As Long, e, s, msg As String
    a = Sheets("Feuil1").Cells(1).CurrentRegion.Value
    With CreateObject("Scripting.Dictionary")
        For j = 1 To UBound(a, 2)
            Set .Item(a(1, j)) = CreateObject("Scripting.Dictionary")
            For i = 2 To UBound(a, 1)
                .Item(a(1, j))(a(i, j)) = .Item(a(1, j))(a(i, j)) + 1
            Next
        Next
        For Each e In .keys
            For Each s In .Item(e).keys
                If .Item(e)(s) = 1 Then .Item(e).Remove s
            Next
            If .Item(e).Count = 0 Then
                .Remove e
            Else
                msg = msg & vbLf & "Produit : " & e
                For Each s In .Item(e).keys
                    msg = msg & vbLf & vbTab & "     : " & s & " : " & .Item(e)(s)
                Next
            End If
        Next
        If .Count = 0 Then MsgBox "Aucun doublon" Else MsgBox msg
    End With
End Sub

klin89

Rechercher des sujets similaires à "macro reperer valeurs doubles"