XL 2016 Suppression de doublons en VBA et sous conditions

luke3300

XLDnaute Impliqué
Bonjour le forum,

J'ai un fichier dans lequel j'aimerais supprimer des doublons de choix représentés par une "x".
Les colonnes de choix sont les colonnes: E, F, G et H.
Pour certaines lignes, j'ai des "x" dans 2 ou 3 colonnes ce qui me pose problème pour pouvoir les rendre correctement utilisables.
En sachant que les données de la colonne E sont prioritaires, donc que s'il y a une "x" dans une cellule de la colonne E, il ne peut y en avoir pour la même ligne dans les colonnes F, G et H.
En sachant que s'il y a une "x" dans une cellule de la colonne G, il ne peut y en avoir dans les lignes correspondantes des colonnes F et H.
En sachant que s'il y a une "x" dans une cellule de la colonne H, il ne peut y en avoir dans les lignes correspondantes de la colonne F.
Je ne sais pas si je me fais bien comprendre mais en résumé, le contrôle s'effectue comme ceci:
1. si une "x" en E, on la garde et on efface les autres de la même ligne
2. si une "x" en G, on la garde et on efface les autres de la même ligne
3. si une "x" en H, on la garde et on efface les autres de la même ligne

Le nombre de lignes utilisées est très variable, ça peut aller de +/-10 à ...? peut-être choisir dans ce cas un code qui va jusqu'à la dernière ligne contenant des données, non?
Je vous joints mon fichier.

D'ores et déjà, merci à vous tous et toutes pour l'aide que vous pourrez m'apporter.

Bon samedi ;)
 

Pièces jointes

  • Test X.xlsx
    39.3 KB · Affichages: 19

luke3300

XLDnaute Impliqué
Bonjour JHA,
Je viens de regarder ta proposition.
Celle-ci génère l'utilisation d'une colonne en + et de formules, ce que j'essaye d'éviter ... l'idéal serait que le choix s'opère directement dans les cellules des colonnes E à H en effaçant dans chaque ligne ce qui est superflus suivant l'ordre de priorité décrit.
Merci tout de même c'est super sympa :)
Bon WE
 

luke3300

XLDnaute Impliqué
Bonjour pierrejean et merci déjà de te pencher sur mon souci :)
Je viens de regarder et c'est exactement ce style de solution que je recherche. Juste un bémol, quand je filtre la colonne G sur les "x", il y a une ligne qui s'affiche mais elle à 2 x ... une dans la colonne G et une dans la H hors dans ce cas-ci, il ne pouvait plus y avoir de x qu'en G.
Tu vois où pourrais se situer le souci?

Merci encore
 

luke3300

XLDnaute Impliqué
Ne serait-ce pas là que ça coince:

If tablo(n, 6) = "x" Then
For m = 7 To 8
tablo(n, m) = ""
Next
End If
If tablo(n, 7) = x Then tablo(n, 8) = ""
Next

Si je comprends bien, là où il y a 6 en rouge, ce devrait être 7 et là où il y a 7 To 8 ce devrait être 8 et 6.
Ensuite là où il y a le 7 je pense que ce devrait être 8 et là où il y a le 8 ce devrait être un 6 ... enfin je crois :( à votre avis???
 

luke3300

XLDnaute Impliqué
Bonjour pierrejean, le forum,

J'ai corrigé le code en ajoutant les " " mais cela coince toujours ... :oops: lorsque je filtre les"x" dans les colonnes F ou H, il reste des lignes avec 2 "x".
Un peu comme si le code ne tenait pas compte de la priorité 2 et/ou 3 ou du moins pas de manière complète ...
Une idée d'où ça pourrait venir??

Merci déjà pour votre temps ;) et excellent dimanche.
 

luke3300

XLDnaute Impliqué
Re pierrejean,

Voilà et cette fois c'est vrai qu'il ne reste qu'un seul X par ligne. :) Super!

Il y a juste un bémol ... c'est que les priorités ne sont pas respectées ... la colonne G et/ou H sont prioritaires pour conserver le X par rapport à la colonne F et visiblement ce n'est pas le cas ...
Un exemple en image ...
 

Pièces jointes

  • 2019-02-17_12-08-30.jpg
    2019-02-17_12-08-30.jpg
    141.1 KB · Affichages: 14

Discussions similaires

Statistiques des forums

Discussions
312 113
Messages
2 085 426
Membres
102 887
dernier inscrit
MarcVeretz