Affichage des doublons par lignes entières de 2 classeurs

17pi.zip (4.84 Ko)
13pc.xls (17.50 Ko)

Bonjour,

Je suis débutant Excel et n'ai pas trouvé la réponse à mon problème dans le forum.

2 fichiers EXCEL 2007 sont joints mais la solution à trouver est pour EXCEL 2003.

Le problème est que je souhaiterais comparer 2 classeurs, ligne par ligne, d'une feuille de chacun d'eux, et lorsque un doublon sur un numéro de contrat (colonne CONTRAT 1 ou CONTRAT 2 ou le NOM) est repéré, l'afficher mais avec toute la ligne...

Je sais pas si c'est vraiment clair, mais vous trouverez en pièces-jointes 2 classeurs...sur les classeurs PC et PI il y a des doublons sur le n° contrat (1 ou 2) et/ou sur le nom...il faudrait pouvoir les afficher sur une autre feuille d'un des 2 classeurs par exemple, mais avec la ligne entière.

J'espère qu'avec les classeurs ce sera plus clair.

Merci d'avance de votre aide.

Bonne journée

Cdt,

Bonjour,

Une solution à tester.

1/ On crée une feuille regroupant les 2 classeurs à laquelle on ajoute une colonne "Classeur"

2/ On crée un TCD avec les critères demandés pour mettre en évidence les doublons.

3/ La somme > 1 signifie doublons

4/ un double click sur le total de la ligne > 1 affiche une feuille regroupant les infos demandées.

Voir fichier joint.

Cdlt

31pi.zip (7.65 Ko)

Bonjour,

Merci de la réponse, c'est sympa !

Par contre je me demande si cela est possible avec EXCEL 2003 !

De plus, il me faudra créer une feuille regroupant les deux tableaux, mais il faut savoir que dans chaque classeur il y a quand même minimum 500 lignes...ça ira quand même ?

Merci d'avance.

Cdt,

Re,

Pas de problème de compatibilité 2003-2010 pour ce type de procédure.

Cdlt


Re,

Pour une consolidation de 2 feuilles dans une 3ème, voir cet exemple.

*fichier joint - Ctrl+a pour lancer la procédure

Cdlt.

Bonjour,

autre proposition :

  • copier les lignes des 2 feuilles sur une feuille (ajouter la colonne Classeur d'origine)
  • ajouter une colonne Doublons avec :
=SI(NB.SI(A:A;"="&A2)>1;EQUIV(A2;A:A;0);SI(NB.SI(B:B;"="&B2)>1;EQUIV(B2;B:B;0);SI(NB.SI(C:C;"="&C2)>1;EQUIV(C2;C:C;0);"ok")))
  • trier la colonne doublon en croissant pour rassembler les doublons
  • éventuellement supprimer les lignes 'ok' rassemblées en bas

eric

22pi-2.zip (8.95 Ko)

Merci à vous deux pour votre aide

Y-a-t-il un moyen d'identifier les doublons et les afficher sur une feuille sans avoir à copier toutes les lignes des 2 tableaux ?

Encore merci de votre aide

Cdt,


En fait, j'avais oublié de vous dire que dans un des tableaux il a déjà des doublons, comment dans faire dans ce cas ?

Il y aurait des triplons ?

Merci !

Re,

En fait, j'avais oublié de vous dire que dans un des tableaux il a déjà des doublons, comment dans faire dans ce cas ?

Il faudra qu'ils soient dans le classeur PI.xls, sinon tu adaptes la macro.

Sub doublons()
    Dim sh1 As Worksheet, sh2 As Worksheet, shDest As Worksheet
    Dim lig As Long, col As Long, ligDest As Long, c As Range, adr1 As String
    Dim ligOK() As Boolean

    '
    Application.ScreenUpdating = False
    Set sh1 = Workbooks("PC.xls").Worksheets("Feuil1")
    Set sh2 = Workbooks("PI.xls").Worksheets("Feuil1")
    ' créer feuille Doublons vierge
    Application.DisplayAlerts = False
    On Error Resume Next
    Sheets("Doublons").Delete
    On Error GoTo 0
    Application.DisplayAlerts = True
    Set shDest = Sheets.Add
    shDest.Name = "Doublons"
    '
    ligDest = 2
    For lig = 3 To sh1.Cells(Rows.Count, 1).End(xlUp).Row
        ReDim ligOK(sh2.Cells(Rows.Count, 1).End(xlUp).Row)
        For col = 1 To 3
            With sh2.Columns(col)
                Set c = .Find(sh1.Cells(lig, col), LookIn:=xlValues, lookat:=xlWhole)
                If Not c Is Nothing Then
                    adr1 = c.Address
                    Do
                        If Not ligOK(c.Row) Then
                            If adr1 = c.Address Then
                                sh1.Cells(lig, 1).Resize(1, 6).Copy shDest.Cells(ligDest, 1).Resize(1, 6)
                                shDest.Cells(ligDest, 7) = sh1.Parent.Name
                                shDest.Cells(ligDest, 1).Resize(1, 7).Interior.ColorIndex = 20
                                ligDest = ligDest + 1
                            End If
                            sh2.Cells(c.Row, 1).Resize(1, 6).Copy shDest.Cells(ligDest, 1).Resize(1, 6)
                            shDest.Cells(ligDest, 7) = sh2.Parent.Name
                            ligDest = ligDest + 1
                            ligOK(c.Row) = True
                        End If
                        Set c = .FindNext(c)
                    Loop While Not c Is Nothing And c.Address <> adr1
                End If
            End With
        Next col
    Next lig
    ' titres
    sh1.Cells(1, 1).Resize(1, 6).Copy shDest.Cells(1, 1).Resize(1, 6)
    shDest.Cells(1, 7) = "Classeur"
    Application.ScreenUpdating = True
End Sub

eric

33pc.zip (13.49 Ko)

Encore un grand merci eric, c'est super sympa, ça fonctionne parfaitement !

Très bonne soirée à toi !

Salutations

Rechercher des sujets similaires à "affichage doublons lignes entieres classeurs"