Comment gérer les doublons sur deux colonnes VBA

Résolu/Fermé
h.bendaoud Messages postés 21 Date d'inscription vendredi 27 mars 2015 Statut Membre Dernière intervention 10 avril 2015 - 30 mars 2015 à 14:51
h.bendaoud Messages postés 21 Date d'inscription vendredi 27 mars 2015 Statut Membre Dernière intervention 10 avril 2015 - 7 avril 2015 à 09:42
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


A voir également:

8 réponses

ccm81 Messages postés 10854 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 26 avril 2024 2 404
31 mars 2015 à 15:52
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
h.bendaoud Messages postés 21 Date d'inscription vendredi 27 mars 2015 Statut Membre Dernière intervention 10 avril 2015
31 mars 2015 à 15:53
Merci ccm81
Bon après midi également
0
h.bendaoud Messages postés 21 Date d'inscription vendredi 27 mars 2015 Statut Membre Dernière intervention 10 avril 2015
3 avril 2015 à 12:00
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
ccm81 Messages postés 10854 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 26 avril 2024 2 404
4 avril 2015 à 10:19
Pour la couleur de la cellule
Range(coCod & lili & ":" & coSta & lili).Interior.ColorIndex = 4

Cdlmnt
2
h.bendaoud Messages postés 21 Date d'inscription vendredi 27 mars 2015 Statut Membre Dernière intervention 10 avril 2015
7 avril 2015 à 09:42
Merci ccm
0
ccm81 Messages postés 10854 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 26 avril 2024 2 404
30 mars 2015 à 15:16
Bonjour

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

Cdlmnt
1
h.bendaoud Messages postés 21 Date d'inscription vendredi 27 mars 2015 Statut Membre Dernière intervention 10 avril 2015
30 mars 2015 à 15:19
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
ccm81 Messages postés 10854 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 26 avril 2024 2 404
30 mars 2015 à 15:48
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
h.bendaoud Messages postés 21 Date d'inscription vendredi 27 mars 2015 Statut Membre Dernière intervention 10 avril 2015
30 mars 2015 à 15:50
c'est les même donc pas d'importance que ce soit le premier ou le second
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ccm81 Messages postés 10854 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 26 avril 2024 2 404
30 mars 2015 à 16:01
Un début de réponse à adapter

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

Cdlmnt
1
h.bendaoud Messages postés 21 Date d'inscription vendredi 27 mars 2015 Statut Membre Dernière intervention 10 avril 2015
30 mars 2015 à 16:11
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
ccm81 Messages postés 10854 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 26 avril 2024 2 404
30 mars 2015 à 16:15
juste une petit question je fais comment pour modifier les colonnes ? à place de la colonne "D" je marque "F"
Oui
1
h.bendaoud Messages postés 21 Date d'inscription vendredi 27 mars 2015 Statut Membre Dernière intervention 10 avril 2015
30 mars 2015 à 16:17
ça fonctionne Merci beaucoup ccm81
0
ccm81 Messages postés 10854 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 26 avril 2024 2 404
Modifié par ccm81 le 30/03/2015 à 16:18
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
h.bendaoud Messages postés 21 Date d'inscription vendredi 27 mars 2015 Statut Membre Dernière intervention 10 avril 2015
30 mars 2015 à 16:20
Oui, il y a pour le moment 700 lignes d'accord j'ajoute ca
0
ccm81 Messages postés 10854 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 26 avril 2024 2 404
30 mars 2015 à 16:23
Si c'est fini, merci de mettre le sujet à Résolu (en haut à droite de ton premier message)

Bonne fin de journée
1
h.bendaoud Messages postés 21 Date d'inscription vendredi 27 mars 2015 Statut Membre Dernière intervention 10 avril 2015
31 mars 2015 à 09:07
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
ccm81 Messages postés 10854 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 26 avril 2024 2 404
3 avril 2015 à 16:09
Que veux tu dire par surbrillance
Si c'est caractère gras
Range(coCod & lili & ":" & coSta & lili).Font.Bold = True

Cdlmnt
1
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