[RESOLU] Macro : suppression des doublons avec une condition de date

  • Initiateur de la discussion Initiateur de la discussion V.MAOT
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

V.MAOT

XLDnaute Nouveau
Bonjour à tous,

Votre site et son forum m'ont beaucoup aidé sur les macros, seulement, malgré mes recherches je n'arrive pas à réaliser un code en particulier. Je me permets donc de solliciter votre aide.

J'aimerais, avec l'utilisation d'un bouton, pouvoir supprimer (dans une base de données) les doublons en fonction de la date de création de la ligne.

Le fichier excel est automatisé par un formulaire, qui par macro, vient copier les données dans le tableau. Les données sont copiées à la suite et sans prendre compte des doublons.
Mon objectif est simplement de pouvoir "nettoyer" la base de données avec une ligne par Nom et ce en fonction de la date la plus récente.

Pour illustrer, j'attache une base test.

Merci encore pour votre aide!

Victor
 

Pièces jointes

Dernière modification par un modérateur:
Re : Macro : suppression des doublons avec une condition de date

Bonjour TheBenoit59,

C'est exactement ça, j'aimerais pouvoir manipuler les données individuellement et collectivement. Pour ce faire, je dois retrouver une ligne par nom.

Seulement je ne sais pas comment faire étant donné que il peut y avoir plusieurs lignes et ce à des dates différentes.
Dans l'échantillon, je souhaiterai donc trouver une ligne par nom, en fonction de la date la plus récente.

Merci beaucoup pour ta réponse.
Victor
 
Re : Macro : suppression des doublons avec une condition de date

Je te joins le travail réalisé sur ton fichier.

J'ai utilisé la méthode suivante :
  • Nous trions la colonne A du plus récent au plus ancien
  • Nous examinons dans la colonne C s'il existe plusieurs valeurs de la cellule en question
  • S'il existe plus d'une valeur nous supprimons la ligne, étant donné qu'elle sera plus ancienne
 

Pièces jointes

Re : Macro : suppression des doublons avec une condition de date

Re,

Je te remercie pour ton aide, mais manuellement, je connais cette méthode.
Le tableau final devrait représenter 2 à 300 lignes.

Mon problème est de l'automatiser avec un bouton de commande par macro.
L'opérateur doit permettre à l'utilisateur final de pouvoir nettoyer la base en un clique pour faire des analyses statistiques.

Victor
 
Re : Macro : suppression des doublons avec une condition de date

C'est super cela fonctionne à merveille !
Je te remercie car je n'avais pas vu le problème sous cet angle. Je vais garder ton code précieusement.
J'ai un petit problème, peut-être que tu peux m'aider.

Comme ce tableau excel sera utilisé par plusieurs personnes (qui possèdent toutes un compte Windows distingué par leurs initiales), j'ai intégré une macro à l'ouverture, mais celle-ci ne fonctionne pas. Le but d'identifié l'auteur automatiquement avec son identifiant windows.

Ci-dessous, le code utilisé:

Code:
Private Sub Workbook_Open()
Sheets("V1").Select
ActiveSheet.Range("T2").Value = Environ("UserName")
End Sub

Est-ce le bon code ?

Merci d'avance pour ton aide supplémentaire, qui est vraiment la bienvenue !

Victor
 
Re : Macro : suppression des doublons avec une condition de date

Je peux te proposer ça :
L'option 1, bête et méchant ça ajoute le nom, même si la cellule contient déjà du texte.
L'option 2, ne remplace pas le nom si existant.
L'option 3, ajoute à la suite le nom.

Private Sub Workbook_Open()
' Option 1 : Inscrire le nom de l'utilisateur, même si la cellule comprend déjà du texte
'Worksheets("V1").Range("A1") = Environ("UserName")

' Option 2 : N'inscris pas le nom si la cellule n'est pas vide
'If Worksheets("V1").Range("A1") = "" Then
'Worksheets("V1").Range("A1").FormulaLocal = Environ("UserName")
'End If

' Option 3 : Inscris les différents utilisateurs les uns à la suite des autres
If Worksheets("V1").Range("A1") = "" Then
Worksheets("V1").Range("A1").FormulaLocal = Environ("UserName")
Else: Worksheets("V1").Range("A1").FormulaLocal = Worksheets("V1").Range("A1").Value & " // " & Environ("Username")
End If


End Sub
 
Re : Macro : suppression des doublons avec une condition de date

Bonsoir à tous, 🙂

Pour répondre à la question du post #1

VB:
Option Explicit

Sub Nettoyer()
Dim dico As Object, a, i As Long, x As Range
    Set dico = CreateObject("Scripting.Dictionary")
    With Sheets("Consolidation").Range("a1").CurrentRegion
        .Offset(2).Resize(.Rows.Count - 2).Interior.ColorIndex = xlNone
        a = .Value
        For i = 3 To UBound(a, 1)
            If Not dico.exists(a(i, 2)) Then
                dico(a(i, 2)) = VBA.Array(a(i, 1), i)
            Else
                If a(i, 1) >= dico(a(i, 2))(0) Then
                    dico(a(i, 2)) = VBA.Array(a(i, 1), i)
                End If
            End If
        Next
        For i = 3 To UBound(a, 1)
            If dico.exists(a(i, 2)) Then
                If a(i, 1) <= dico(a(i, 2))(0) And i <> dico(a(i, 2))(1) Then
                    If x Is Nothing Then
                        Set x = .Rows(i)
                    Else
                        Set x = Union(x, .Rows(i))
                    End If
                End If
            End If
        Next
    End With
    If Not x Is Nothing Then
        x.Interior.ColorIndex = 42    'surligne
     Else
        MsgBox "Aucune ligne à supprimer"
    End If
    'If Not x Is Nothing Then x.EntireRow.Delete 'supprime
    Set x = Nothing
End Sub
klin89
 
Dernière édition:
Re : Macro : suppression des doublons avec une condition de date

bonjour tous 🙂🙂
on peut utiliser removeduplicates si excel 2007 & >

Code:
Sub es()
With Range("a3:ac" & Cells(Rows.Count, 1).End(3).Row)
.Sort Key1:=Range("a3"), Order1:=xlDescending, Header:=xlYes
.RemoveDuplicates Columns:=Array(3)
End With
End Sub
 
Re : Macro : suppression des doublons avec une condition de date

Bonjour à tous,

Merci beaucoup pour vos réponses.
J'ai oublié de clore mon poste, mais en relisant vos solutions, je ne comprends pas quelles différences il y a entre chacune des macros. Celle de Benoit fonctionne parfaitement pour l'instant donc je la conserve.

Cela dit, peut-être que les autres sont plus optimisées/fiables ?
Peut-être pouvez-vous m'expliquer leurs différences ?

Merci d'avance pour votre aide.
Victor
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
1
Affichages
270
Réponses
33
Affichages
809
Retour