Recherche de doublon la chaîne de caractère d'une cellule

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

Jean Roc

XLDnaute Nouveau
Bonjour,

Suite à un précédent sujet et une proposition faites par jocelyn, j'utilise la macro MoreFunc pour opérer une concaténation conditionnelle de plusieurs cellules selon la valeur d'une correspondante d'une autre colonne.

Cela me permet d'obtenir dans un second tableau des lignes A : 1;2;3/ B : 4;5 là où le premier tableau affichait A:1 / A:2 / A:3 /...

Le souci est que cette solution convient aux chiffres mais ne suffit pas lorsque s'y greffe une nouvelle colonne avec du texte ayant des valeurs similaires dans plusieurs cellules :

A:1:vert/A:2:vert/A:3:rouge/... ->
A:1;2;3:vert;vert;rouge

Le même terme peut alors se retrouver concaténé une dizaine de fois dans une seule chaîne de caractères. J'ai chercher une fonction pour la recherche de doublons (plus d'une quarantaine de pages pour ce seul forum !) mais la quasi-totalité opèrent en comparant les valeurs de différentes cellules et non pas les valeurs d'une même cellule.

Pour clarifier le propos, voici une feuille xls utilisant les fonction mconcat et substitue (une copie des valeurs y est disponible pour ceux n'ayant pas cette macro)

Il est possible de générer un tableau comportant une occurence de chaque terme du tableau général mais je ne vois pas comment l'utiliser pour servir de référence pour une chaîne de caractères.

Bonne fin de journée à tous !
 

Pièces jointes

Re : Recherche de doublon la chaîne de caractère d'une cellule

Merci de vos réponses, je répond au fur et à mesure de mes essais 🙂

bebert > si je lance cette macro en ayant simplement décalé la plage de valeurs concerné pour s'attaquer à la liste de ton fichier qui se situe de J13 à J20, les cellules sont effacés (le rôle du ClearContents) sans que de nouvelles valeurs soient ajoutées. Voici le code où juste la plage de valeurs est changée.

Code:
Public Sub ElimDoublon() 'Function
Feuil1.Activate
#cette ligne efface les valeurs produites par MCONCAT sur la plage de cellules spécifiées
plg = Range("J13:J20"): Range("J13:J20").ClearContents
#création d'un dico stockant les valeurs séparées par un ;
 Set x = CreateObject("Scripting.Dictionary")
For i = 1 To UBound(plg, 1)
tbl = Split(plg(i, 1), ";")
For j = 0 To UBound(tbl)
    If Not x.Exists(tbl(j)) Then x.Add (tbl(j)), CStr(tbl(j))
        Next j
#là je ne sais pas    
 For Each Item In x.items
Range("J" & i + 3) = Range("J" & i + 3) & Item & ";"
Next Item
Range("J" & i + 3) = Left(Range("J" & i + 3), Len(Range("J" & i + 3)) - 1)
Next i

End Sub
 
Re : Recherche de doublon la chaîne de caractère d'une cellule

Paritec > j'ai du mal à discerner quels sont les valeurs qu'il faut modifier pour changer la plage de valeurs, par exemple il est indiqué Cells(2, 1) alors que ces lignes ne comportent pas de valeurs, pareillement pour Cells(i, 2).

Bonne après-midi,
jean roc
 
Re : Recherche de doublon la chaîne de caractère d'une cellule

Jean Roc bonjour,
moi ce que je me demande c'est :*
est-ce que le résultat obtenu dans le fichier que tu avais donné est bon ou pas?????????????????????????????????????????????????????
Réponse : oui non (rayer la mention inutile)
après pour l'adaptation a ton autre fichier on fera.
a+
Papou 🙂
 
Re : Recherche de doublon la chaîne de caractère d'une cellule

Oui oui c'était exactement ça, le but dans l'exemple était de limiter le nombre d'occurrence d'une valeur dans une chaîne de caractère à un seul exemplaire, sur ce point mission réussie (si avec ça les moteurs de recherche n'arrivent pas à indexer cette page !).
 
Re : Recherche de doublon la chaîne de caractère d'une cellule

re bonjour jean roc le forum,
Bon alors si cela te convient donnes moi un fichier ou sont correctement positionnées tes données et je te modifie la macro
a+
Papou 🙂


PS: Autre choses Cells(2, 1) signifie cellule 2ème ligne colonne 1 donc A2 et cells(i,2) cellule ligne variable i et colonne 2
 
Dernière édition:
Re : Recherche de doublon la chaîne de caractère d'une cellule

Je te propose décaler les 2 tableaux de ton fichiers de manière à avoir A1 en B25, de cette manière je pourrais observer les paramètres que tu dois modifier lors d'un décalage colonne/cellule. Comme ça si j'arrive à saisir les différences je pourrais les reproduire dans d'autres situations.
 
Re : Recherche de doublon la chaîne de caractère d'une cellule

Bonsoir Jean Roc le forum,
je ne voudrais pas dire mais tu ne sais pas ce qu'est cells(2,1) et tu me demandes de modifier pour regarder ce qui va être différent, bon alors je l'ai fait mais je ne suis pas sur que tu arriveras a exploiter pour toi
enfin voilà le fichier avec ton tableau en B25
a+
Papou 🙂

EDIT bonjour Bebere
 

Pièces jointes

Dernière édition:
Re : Recherche de doublon la chaîne de caractère d'une cellule

Paritec > par l'expérimentation ! Et aussi par c'est quand même plus amusant de décortiquer une procédure pour bien la comprendre 🙂 Merci pour le fichier, je m'y plonge.

edit : vous avez replacé le tableau de résultat à la même position ce qui fait qu'il n'y eu qu'à modifier Feuil1.Range("B65536") alors si le tableau de résultat avait été décalé de plusieurs lignes/colonnes les changements auraient plus étendu. Je voudrais appliquer cette méthode à d'autres tables n'ayant pas la même organisation ou taille que celle de l'exemple, c'est pour ça que je voulais voir quels modifs ça impliquait. Je crois commencer à comprendre le rapport entre For i et Cells(i 🙂

bebere > dans ton document tu as fait figurer un tableau avec les valeurs no-réduites dans la plage J13:J20, c'est sur ça que je voudrais transposer ta macro.

Si je rentre les lignes suivantes j'ai une erreur de compilation qui indique une utilisation incorrecte de la propriété :
Code:
plg = Range("J13:J20"): Range ("J13:J20")
Range ("J13:J20"): Range("J13:J20").ClearContents
 
Dernière édition:
- 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

Retour