Microsoft 365 Questions Doublons, triplons selon des conditions(VBA ou formule)

  • Initiateur de la discussion Initiateur de la discussion kondabalo
  • 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 !

kondabalo

XLDnaute Nouveau
Bonjour à tous,

Je travaille actuellement sur une base contenant des individus et quelques informations les concernant. Il y à présence de doublons et jusque-là ce n’est pas l’identification des doublons qui pose un problème.

J’ai 7 colonnes en tout : Nom Complet ; Prénom ; Nom de Famille ; Téléphone ; Courier électronique ; Fonction et Nom de la Société

La colonne qui est le plus important pour moi est la colonne des courriers électroniques. Sur cette colonne j’ai donc appliqué une « mise en forme conditionnelle » pour pouvoir identifier mes doublons que j’ai mis en couleur rouge puis j’ai trié cette colonne de A à Z afin de mieux voir les doublons se suivre.

Mon but n’est pas de supprimer ces doublons ou triplon mais plutôt leur attribuer dans une nouvelle colonne l’expression « A supprimer » ou « Employé » selon trois conditions.

Première condition = Si j’ai des doublons dans la colonne courriers électroniques sur deux lignes je veux que l’une des lignes de doublon prenne l’expression « A supprimer » si cette ligne est s’elle qui a le moins d’information en fonction des autres colonnes (cellules vide).

Deuxième condition = Si j’ai des triplons dans la colonne courriers électroniques donc j’aurais à attribuer l’expression « A supprimer » sur deux lignes des triplons bien évidemment les lignes qui ont des informations manquantes dans certains de leurs cellules.

Troisième condition = Mais si pour des doublons j’ai sur ces deux lignes toutes les informations remplies, on peut attribuer l’expression « A supprimer » à n’importe lequel des deux. Pareil pour les triplons, on attribuera l’expression « à supprimer » à deux d’entre eux si les triplons ont tous les informations complètes.

Je me suis inscrit sur ce site sous peu pour m’améliorer en VBA car je comprends un peu la syntaxe. Si quelqu’un à un petit temps à accorder à ce problème. Merci d’avance. Même si vous avez d’autres formule en dehors des codes VBA ce serait que génial.

Vous trouverez en pièce jointe un exemplaire de fichier Excel expliquant un peu mieux ce je cherche à obtenir. Merci d’avance
 

Pièces jointes

Bonjour @kondabalo 🙂,

Un essai en VBA. Le code est dans le module de la feuille "Feuil1".
Cliquer sur le bouton Hop!
Le code du fichier est commenté.

nota : j'ai laissé tomber le traitement des lignes sans adresse e-mail puisque rien n'a été demandé pour ces lignes.

Code dans le module de la feuille "Feuil1":
VB:
Sub OterDoublon()
Dim dico As Object, t, i&, n&, j&

   Set dico = CreateObject("scripting.dictionary")
   t = Me.ListObjects(1).DataBodyRange
   For i = 1 To UBound(t)
      t(i, 5) = LCase(Trim(t(i, 5)))
      If t(i, 5) <> "" Then
         n = 0: For j = 1 To UBound(t, 2) - 1: n = n - (t(i, j) <> ""): Next
         If Not dico.Exists(t(i, 5)) Then
            dico.Add t(i, 5), Array(i, n)
         Else
            If n > dico(t(i, 5))(1) Then dico(t(i, 5)) = Array(i, n)
         End If
      End If
   Next i
   For i = 1 To UBound(t)
      t(i, 8) = Empty
      If t(i, 5) <> "" Then
         If i <> dico(t(i, 5))(0) Then t(i, 8) = "A supprimer"
      End If
   Next i
   Me.ListObjects(1).DataBodyRange.Columns(8).ClearContents
   Me.ListObjects(1).DataBodyRange.Columns(8).Value = Application.Index(t, 0, 8)
End Sub
 

Pièces jointes

Dernière édition:
Bonjour @sylvanu et bonjour @mapomme 😊 , je tiens d'abord à vous remercier du temps que vous avez pu accorder à ma problématique et vos proposions de réponses répondent à mes exigences.

Cependant j'aimerais vous demandez une dernière requête. Cela concerne une conditions supplémentaire aux autres.

En effet concernant la condition ou l'on attribut de manière aléatoire l'expression " A supprimer " à des doublons ou triplons qui ont tous les informations remplie, j'aimerais obtenir dans ces cas que le code vba donne la priorité à celui qui dans sa colonne un " Numéro de téléphone " mobile.

C'est-à-dire que si j'ai deux doublons qui ont tous les informations remplie, j'aimerais que celui qui sera à supprimer sera celui disposant d'un numéro de téléphone fixe (03...... ou 04....... ou 02....... ou 02.........). Tous ceux qui ont un numéro de téléphone mobile comme 06 , 07 seront Employé ou n'auront rien à leur attribuer comme l'a fait @mapomme
 
En effet concernant la condition ou l'on attribut de manière aléatoire l'expression " A supprimer " à des doublons ou triplons qui ont tous les informations remplie, j'aimerais obtenir dans ces cas que le code vba donne la priorité à celui qui dans sa colonne un " Numéro de téléphone " mobile.
Bonjour @kondabalo 🙂 ,

Voir le fichier joint...
 

Pièces jointes

- 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
2
Affichages
338
Réponses
1
Affichages
269
Réponses
20
Affichages
946
Retour