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

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

  • exemple.xls
    24 KB · Affichages: 91
  • exemple.xls
    24 KB · Affichages: 84
  • exemple.xls
    24 KB · Affichages: 94

Paritec

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

Bonsoir Bebere, Jeanroc, le forum
bon moi j'ai fait un petit fichier regardes cliques sur le bouton test et dis moi si je suis dans le vrai
a+
papou :)
 

Pièces jointes

  • Classer les rouge.zip
    15.6 KB · Affichages: 53
Dernière édition:

Jean Roc

XLDnaute Nouveau
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
 

Jean Roc

XLDnaute Nouveau
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
 

Paritec

XLDnaute Barbatruc
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 :)
 

Jean Roc

XLDnaute Nouveau
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 !).
 

Paritec

XLDnaute Barbatruc
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:

Jean Roc

XLDnaute Nouveau
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.
 

Paritec

XLDnaute Barbatruc
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

  • Classer les rougeV2.zip
    14.8 KB · Affichages: 49
Dernière édition:

Jean Roc

XLDnaute Nouveau
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:

Discussions similaires

Statistiques des forums

Discussions
314 653
Messages
2 111 578
Membres
111 205
dernier inscrit
Adrien25