Comment gérer les doublons sur deux colonnes VBA

Résolu
h.bendaoud Messages postés 21 Statut Membre -  
h.bendaoud Messages postés 21 Statut Membre -
Bonjour,

Je travaille actuellement sur un fichier excel pour mes études et cela fait maintenant deux semaines que je bloque, je cherche sur les forum des solutions mais aucune ne convient.

Alors je vous explique, je cherche dans un premier temps à identifier des doublons mais selon des critères particuliers:

Je cherche à identifier des doublons en les surlignant par rapport à la colonnes A et D petite information les doublons apparaissent lors d'injections d'autres fichiers

Donc si il y a deux numéro identiques dans la colonne A et que dans la colonne D les statuts sont les même je voudrais qu'il soit supprimer par contre si dans la colonne D les statut sont différent je voudrais qu'il apparaissent en vert par exemple ( si possible le premier identifier en vert et le second en rouge ).

Voilà ce que j'aimerais obtenir



J'aimerais également ajouter un bouton permettant d'effectuer cette action en cliquant dessus

En espérant que vous pourrez m'aider,

Cordialement

8 réponses

  1. ccm81 Messages postés 11033 Statut Membre 2 434
     
    Option Explicit
    
    Const coCod = "A"   ' colonne code
    Const coSta = "D"   ' colonne statut
    Const lideb = 2     ' premiere ligne des données
    Const vert = 50     ' code couleur
    Const rouge = 3     ' idem
    
    Private Sub btOK_Click()
    Dim li As Long, lifin As Long, cod As Long, sta As String, lili As Long
    Dim obj As Object, plage As Range
    ' inhibe la maj de la feuille après chaque modification
    Application.ScreenUpdating = False
    ' derniere ligne non vide de la colone cocod
    lifin = Range(coCod & Rows.Count).End(xlUp).Row
    ' boucle sur les lignes en partant de la dernière (à cause des suppressions eventuelles de lignes
    For li = lifin To lideb + 2 Step -1
      ' plage où on va rechercher le code cod
      Set plage = Range(coCod & lideb & ":" & coCod & li - 1)
      ' code et statut ligne i
      cod = Range(coCod & li).Value
      sta = Range(coSta & li).Value
      ' recherche cod dans plage
      Set obj = plage.Find(cod, , , xlWhole)
      ' si cod est trouvé
      If Not obj Is Nothing Then
        ' on recupere sa ligne
        lili = obj.Row
        ' si le statut ligne lili = statut ligne i alors on supprime la ligne li
        If Range(coSta & lili).Value = sta Then
          Rows(li).Delete
        ' sinon on met en rouge la ligne lili et en vert la ligne li
        Else
          Range(coCod & lili & ":" & coSta & lili).Font.ColorIndex = rouge
          Range(coCod & li & ":" & coSta & li).Font.ColorIndex = vert
        End If
      End If
    Next li
    ' activation de la maj de la feuille
    Application.ScreenUpdating = True
    End Sub

    Bon après midi
    3
    1. h.bendaoud Messages postés 21 Statut Membre
       
      Merci ccm81
      Bon après midi également
      0
    2. h.bendaoud Messages postés 21 Statut Membre
       
      Bonjour ccm81,

      Pourrait-tu m'indiquer comment appliquer une règle de surbrillance à la place de la couleur du texte.

      Merci d'avance
      Cordialement
      0
  2. ccm81 Messages postés 11033 Statut Membre 2 434
     
    Pour la couleur de la cellule
    Range(coCod & lili & ":" & coSta & lili).Interior.ColorIndex = 4

    Cdlmnt
    2
    1. h.bendaoud Messages postés 21 Statut Membre
       
      Merci ccm
      0
  3. ccm81 Messages postés 11033 Statut Membre 2 434
     
    Bonjour

    Peut il y avoir des "triplons" ou plus ? Si oui, que doit on en faire ?

    Cdlmnt
    1
    1. h.bendaoud Messages postés 21 Statut Membre
       
      Non logiquement il ne devrait pas y en avoir car si il y a un doublon et que le statut ne change pas d'état il est supprimé.
      0
  4. ccm81 Messages postés 11033 Statut Membre 2 434
     
    Donc si il y a deux numéro identiques dans la colonne A et que dans la colonne D les statuts sont les même je voudrais qu'il soit supprimer
    lequel ? le premier ou le second ?
    1
    1. h.bendaoud Messages postés 21 Statut Membre
       
      c'est les même donc pas d'importance que ce soit le premier ou le second
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. ccm81 Messages postés 11033 Statut Membre 2 434
     
    Un début de réponse à adapter

    https://www.cjoint.com/?3CEqnVADpI6

    Cdlmnt
    1
    1. h.bendaoud Messages postés 21 Statut Membre
       
      Merci ccm81

      j'ai du mal a comprendre ce que t'as fait mais je vais me pencher dessus.
      juste une petit question je fais comment pour modifier les colonnes ? à place de la colonne "D" je marque "F" ou il faut que je change d'autre chose dans les lignes ?
      0
  7. ccm81 Messages postés 11033 Statut Membre 2 434
     
    juste une petit question je fais comment pour modifier les colonnes ? à place de la colonne "D" je marque "F"
    Oui
    1
    1. h.bendaoud Messages postés 21 Statut Membre
       
      ça fonctionne Merci beaucoup ccm81
      0
    2. ccm81 Messages postés 11033 Statut Membre 2 434
       
      Si tu as beaucoup de lignes, ajoutes ceci pour inhiber la maj de la feuille pendant l'exécution
      Après les déclarations de variables
      Application.ScreenUpdating = False
      Avant End
      Application.ScreenUpdating = True
      0
    3. h.bendaoud Messages postés 21 Statut Membre
       
      Oui, il y a pour le moment 700 lignes d'accord j'ajoute ca
      0
  8. ccm81 Messages postés 11033 Statut Membre 2 434
     
    Si c'est fini, merci de mettre le sujet à Résolu (en haut à droite de ton premier message)

    Bonne fin de journée
    1
    1. h.bendaoud Messages postés 21 Statut Membre
       
      Bonjour ccm81,

      J'essaye de comprendre le code que tu m'as envoyé hier mais j'ai un peu de mal
      pourrais-tu m'aider en mettant des commentaires à coté des lignes stp ?
      0
  9. ccm81 Messages postés 11033 Statut Membre 2 434
     
    Que veux tu dire par surbrillance
    Si c'est caractère gras
    Range(coCod & lili & ":" & coSta & lili).Font.Bold = True

    Cdlmnt
    1
    1. H.bendaoud
       
      Bonjour ccm,

      Je parle de la couleur de la cellule sur excel quand on veut faire ceci il y a marqué regle de surbrillance.

      Merci

      Cordialement
      0