Doublons sur plusieurs feuilles + comparer lignes
Bonjour,
J'ai un TabPLANNING en Feuil12 que je remplie quotidiennement. Lorsqu'une date est programmée, j'enregistre la ligne (colonnes A à K) du tableau correspondant à cette date dans un tableau identique (TabPLANNING16) situé en Feuil13
Voici la feuille 13, dans TabPLANNING16, même disposition.
Ma demande est la suivante : comment afficher les doublons sur deux feuilles différentes sachant que :
doublon = cellules des colonne E & colonne G situées sur la même ligne identiques à d'autres cellules situées dans les colonnes E et G d'autres lignes.
Pour être plus clair : MOHAMED 4 ne peut pas traduire dans 3 langues différentes le même jour. Il ne devrait donc pas être programmé 2 fois à la même date.
Pour l'instant, la seule solution dont je suis capable serait de
1/ créer une colonne qui regrouperait DATEDINTERVENTION au format numérique & le NOMINTERPRETE
2/ Créer en parallèle une colonne doublon pour repérer les doublons
3/ faire une mise en forme conditionnelle pour colorer les doublons dans les plannings.
C'est long et vues les personnes qui vont utiliser ce tableau, ça risque de bouger et de ne jamais fonctionner....
Si vous avez une solution pratique ! Merci d'avance
Cette solution donnée sur le site m'a l'air d'apporter des pistes mais je ne comprends pas ce code
Sub doublons_et_lignes_vides()
'Macro : Sébastien Mathier - Excel-Pratique.com
'A propos de cette macro : www.excel-pratique.com/fr/blog/gerer-doublons-et-lignes-vides
choix = InputBox("Avant d'utiliser cet outil, n'oubliez pas d'enregistrer votre fichier !" & Chr(10) & Chr(10) & "Choisissez l'action qui vous intéresse :" & Chr(10) & Chr(10) & "1. Colorer les doublons (colorer la cellule)" & Chr(10) & "2. Colorer les doublons (colorer la ligne entière)" & Chr(10) & "3. Effacer les doublons (en laissant la ligne vide)" & Chr(10) & "4. Supprimer les doublons (ligne entière)" & Chr(10) & "5. Supprimer les lignes vides" & Chr(10) & Chr(10) & "Entrez le n° de l'action et cliquez sur OK :", "Gestion des doublons - Excel-Pratique.com")
If choix = "" Then Exit Sub
choix2 = ""
If choix = 1 Or choix = 2 Or choix = 3 Or choix = 4 Then choix2 = InputBox("Entrez la lettre de la colonne où les doublons doivent être recherchés :", "Gestion des doublons - Excel-Pratique.com")
If choix = 5 Then choix2 = InputBox("Entrez la lettre de la colonne à prendre en compte (si la cellule de cette colonne est vide, la ligne sera supprimée) :", "Gestion des doublons - Excel-Pratique.com")
If choix2 = "" Then Exit Sub
Application.ScreenUpdating = False
test = Timer
der_ligne = Range(choix2 & Rows.Count).End(xlUp).Row
Dim tab_cells()
ReDim tab_cells(der_ligne - 1)
For ligne = 1 To der_ligne
tab_cells(ligne - 1) = Range(choix2 & ligne)
Next
nb = 0
If choix = 4 Or choix = 5 Then compteur = 0
For ligne = 1 To der_ligne
contenu = tab_cells(ligne - 1)
If (choix = 1 Or choix = 2) And contenu <> "" Then 'Colorer doublons
For i = 1 To der_ligne
If contenu = tab_cells(i - 1) And ligne <> i Then 'Si doublon
nb = nb + 1
If choix = 1 Then
Range(choix2 & ligne).Interior.ColorIndex = 3
Else
Range(ligne & ":" & ligne).Interior.ColorIndex = 3
End If
Exit For
End If
Next
End If
If (choix = 3 Or choix = 4) And ligne > 1 And contenu <> "" Then 'Effacer/supprimer doublons
For i = 1 To ligne - 1
If contenu = tab_cells(i - 1) Then 'Si doublon
nb = nb + 1
If choix = 3 Then
Range(ligne & ":" & ligne).ClearContents
Else
Range(ligne + compteur & ":" & ligne + compteur).Delete
compteur = compteur - 1
End If
Exit For
End If
Next
End If
If choix = 5 And contenu = "" Then 'Lignes vides
Range(ligne + compteur & ":" & ligne + compteur).Delete
compteur = compteur - 1
nb = nb + 1
End If
Next
res_test = Format(Timer - test, "0" & Application.DecimalSeparator & "000")
Application.ScreenUpdating = True
If nb = 0 And choix = 5 Then
MsgBox "Aucune ligne vide trouvée ...", 64, "Résultat"
ElseIf nb = 0 Then
MsgBox "Aucun doublon trouvé dans la colonnne " & UCase(choix2) & " ...", 64, "Résultat"
ElseIf choix = 5 Then
MsgBox nb & " lignes supprimées (en " & res_test & " secondes)", 64, "Résultat"
ElseIf choix = 4 Then
MsgBox nb & " doublons supprimés (en " & res_test & " secondes)", 64, "Résultat"
ElseIf choix = 3 Then
MsgBox nb & " doublons effacés (en " & res_test & " secondes)", 64, "Résultat"
Else
MsgBox nb & " doublons passés en rouge (en " & res_test & " secondes)", 64, "Résultat"
End If
End Sub