Suppression de doublons

Bonjour,

Je viens envers vous après avoir tout essayé mais en vais.

Je sollicite donc votre aide pour le cas suivant:

j'ai un petit échantillon d'une base de donnée extrait de la paie,

chaque code de paie est rattaché à un compte général ( type 65) qui correspond au frais du personnel.

Mon souhait:

Je voudrais trouver tous les codes qui sont rattachés à un compte de charge donnée.

Je préfère une solution, soit à travers une matrice ou bien un code VBA.

Bonjour,

une solution Excel :

doublons

@ bientôt

LouReeD

Bonjour,

Une solution VBA

a+

Merci beaucoup,

Pour LouReeD, merci de me renvoyer le fichier source en lui appliquant une formule matricielle ( de ma préférence).

Pour Frangy, merci de m'expliquer le code pour être en mesure de l'adapter à d'autres besoins.

[

Voici le code commenté :

Option Explicit
Sub Trier()
Dim WsS As Worksheet, WsC As Worksheet
Dim Dico, C
Dim DerLig As Long, Ligne As Long
Dim Cel As Range
Dim Col As Integer
    'désactivation de la mise à jour de l'écran
    Application.ScreenUpdating = False
    'Attribution de la référence de la Feuil1 à la variable WsS (Feuille source)
    Set WsS = Worksheets("Feuil1")
    'Attribution de la référence de la Feuil2 à la variable WsC (Feuille cible)
    Set WsC = Worksheets("Feuil2")
    'Création d'un dictionnaire (pour élaboration de la liste des comptes sans doublons)
    Set Dico = CreateObject("Scripting.Dictionary")
    'Détermination du numéro de la dernière ligne renseignée dans la colonne M (Comptes)
    DerLig = WsS.Range("M" & Rows.Count).End(xlUp).Row
    'Balayage des comptes
    For Each Cel In WsS.Range("M2:M" & DerLig)
        'Si le compte n'a pas été inclus au dictionnaire, on l'ajoute
        If Not Dico.Exists(Cel.Value) Then Dico.Add Cel.Value, Cel.Value
    Next Cel
    'Balayage du dictionnaire
    For Each C In Dico.keys
        Ligne = 1
        Col = Col + 1
        'On note le numéro du compte en en-tête de colonne
        WsC.Cells(Ligne, Col) = C
        'Balayage des comptes
        For Each Cel In WsS.Range("M2:M" & DerLig)
            'Si Le numéro de compte correspond à celui du dictionnaire
            If Cel.Value = C Then
                'Si le code associé au compte n'a pas encore été noté dans la feuil2
                If Application.CountIf(WsC.Columns(Col), Cel.Offset(, -6)) = 0 Then
                    Ligne = Ligne + 1
                    'On note le code associé au compte dans la feuil2
                    WsC.Cells(Ligne, Col) = Cel.Offset(, -6).Value
                End If
            End If
        Next Cel
    Next C
    WsC.Activate
    Set Dico = Nothing: Set WsS = Nothing: Set WsC = Nothing
End Sub

Dis-moi si tu as besoin d'autres éclaircissements.

A+

Bonjour,

Merci infiniment pour les explication mais je n'ai rien compris et cela revient bien sûr que je suis novice en VBA.

Je commence à apprendre le VBA, puisqu'il est très intéressant du côté de la bonne performance.

Maintenant, je voudrais une correction d'une formule matricielle.

Je suis très reconnaissant du soutien et de l'aide que vous m'avez accordé.

Mille merci, c'est exact.

Pour mon nouveau besoin, je postule une nouvelle demande.

Rechercher des sujets similaires à "suppression doublons"