Rechercher références identiques et concaténer valeur

Bonjour,

Depuis ce matin je cherche une solution à mon problème mais me rend compte que je suis vraiment trop nul sur Excel, malgré les forums visités et les astuces récupérées.

Ce forum revient souvent et des demandes assez proches de la mienne ont trouvé des solutions, alors je me lance.

J'ai un fichier de 20000 lignes avec des références qui reviennent plusieurs fois (5400 réf en tout).

Ces références sont en fait des produits compatibles de produits similaires d'autres marques (comme pour les cartouches d'encre compatibles par exemple).

Ainsi j'ai un tableau de ce genre :

A B C D E

Réf1 RéfCompatibleXYZ MarqueCompatible1 NomDuProduitFR NomDuProduitEN

Réf1 RéfCompatibleABC MarqueCompatible1 NomDuProduitFR NomDuProduitEN

Réf1 RéfCompatibleDEF MarqueCompatible2 NomDuProduitFR NomDuProduitEN

Réf2 RéfCompatibleGHI MarqueCompatible3 NomDuProduitFR NomDuProduitEN

Réf5400 RéfCompatibleKLM MarqueCompatible180 NomDuProduitFR NomDuProduitEN

J'aimerais trouver une solution pour réduire mon tableau de 20000 lignes au nombre de références que j'ai (soit 5400) tout en gardant l'ensemble des informations des colonnes séparées par des virgules.

Ca donnerait :

A B C D E

Réf1 RéfCompatibleXYZ, RéfCompatibleABC, RéfCompatibleDEF MarqueCompatible1, MarqueCompatible2 NomDuProduitFR NomDuProduitEN

Réf2 RéfCompatibleGHI MarqueCompatible3 NomDuProduitFR NomDuProduitEN

Réf5400 RéfCompatibleKLM MarqueCompatible180 NomDuProduitFR NomDuProduitEN

J'aimerais que ce soit possible via une formule car ce serait plus simple pour moi mais une macro bien expliquée, je prends volontiers aussi. (J'ai essayé de reprendre des macros mais je n'ai jamais réussi meme à les lancer sur un fichier. J'ai réussi à ouvrir VBA avec Alt+F11 mais ca s'arrete là en gros ).

J'espère que l'un de vous saura m'aider.

Merci d'avance

Salut Chrisfooxx,

tout d'abord, il me semble, à l'instar des autres membres, qu'un petit fichier, même un morceau, avec des flèches et un semblant de ce que tu veux sur base de ce fichier serait bien utile pour t'aider.

Cela dit, je ne comprends pas très bien l'exemple de résultat que tu donnes avec ceci :

Réf1 RéfCompatibleXYZ, RéfCompatibleABC, RéfCompatibleDEF MarqueCompatible1, MarqueCompatible2

Cela ne devrait-il pas être :

Réf1 RéfCompatibleXYZ, RéfCompatibleABC, MarqueCompatible1

Réf1 RéfCompatibleDEF MarqueCompatible2

Comme quoi, chacun sa logique!

Explique-toi mieux!

Bien à toi.

Oooopss,

Réf1 RéfCompatibleXYZ, RéfCompatibleABC, MarqueCompatible1

Réf2 RéfCompatibleDEF MarqueCompatible2

Hum...

Bonjour,

Merci de votre retour

Désolé, je pensais que c'etait plus clair.

En fait non il n'y a pas d'erreur dans mon schéma.

Je supprime les 2 dernières colonnes qui ne changent rien au problème :

A B C

Réf1 RéfCompatibleXYZ MarqueCompatible1

Réf1 RéfCompatibleABC MarqueCompatible1

Réf1 RéfCompatibleDEF MarqueCompatible2

Réf2 RéfCompatibleGHI MarqueCompatible3

Réf5400 RéfCompatibleKLM MarqueCompatible180

J'aimerais trouver une solution pour réduire mon tableau de 20000 lignes au nombre de références que j'ai (soit 5400) tout en gardant l'ensemble des informations des colonnes séparées par des virgules.

Ca donnerait :

A B C

Réf1 RéfCompatibleXYZ, RéfCompatibleABC, RéfCompatibleDEF MarqueCompatible1, MarqueCompatible2

Réf2 RéfCompatibleGHI MarqueCompatible3

Réf5400 RéfCompatibleKLM MarqueCompatible180

Au départ on a 3 fois Réf1, à la fin il ne doit rester qu'une ligne pour cette référence.

Comme la référence compatible est différente pour les 3, il y a forcément 3 variables dans la colonne 2 pour cet exemple (RéfCompatibleXYZ, RéfCompatibleABC, RéfCompatibleDEF).

Dans la colonne C en revanche on a 2 fois MarqueCompatible1 et 1 fois MarqueCompatible2 pour Réf1. Du coup les doublons sont éliminés et il reste 2 variables différentes (MarqueCompatible1 et MarqueCompatible2 séparés par une virgule).

J'espère que c'est un peu plus clair. Je vous joins également un fichier avec en rouge les éléments concernés par la fusion pour que ce soit bien concret.

Merci

PS : si je mets tout dans une seule ligne c'est parce que je dois ensuite importer ce fichier avec une seule référence par ligne.

Bonjour chrisfooxx, curulis57

Je ne comprends pas bien l'objectif

Pourquoi ne pas utiliser les filtres ?

andrea73 a écrit :

Je ne comprends pas bien l'objectif

Pourquoi ne pas utiliser les filtres ?

Bonjour,

L'idée est de pouvoir importer ce fichier en csv dans une base de données ensuite où un seul produit par Réf sera créé et j'ai besoin des RéfCompatibles au format texte dans la description du produit, de même pour les marquesCompatibles.

En fait le tableau a été créé autour des RefCompatibles (identifiants uniques dans le tableau) et je veux créer un tableau basé sur mes Réfs (actuellement non uniques).

Salut Chrisfooxx,

que penses-tu de ça ?

Pour tester sur mon fichier-test, tu effaces le contenu de la feuille2 et tu enclenches la macro via le bouton de commande.

A+

27fichier-concat.xlsm (23.32 Ko)

Hello Curulis57,

C'est juste génial !

Merci beaucoup.

Comment je peux faire pour l'appliquer à mon fichier de 20000+ lignes ?

J'ai essayé d'ajouter 2 lignes identiques dans ton fichier test et je vois qu'elles restent dupliquées en feuille 2. Il y a donc surement un paramètre à modifier dans la macro pour compter les lignes peut être??. Est ce que tu peux m'expliquer comment je peux trouver ca ?

De même dans les MarquesCompatibles je vois des " ; " au lieu de " , " entre les variables. Est ce qu'on peut proposer une virgule là aussi. (ca me fait penser que je vais devoir revoir certaines références qui ont des virgules avant d'appliquer la macro...).

Comme je l'ai mis plus haut je suis une quiche dans ce domaine. Si je pouvais avoir un process "pour les nuls" pour finaliser le fichier ce serait super.

Merci encore

Salut Chrisfooxx,

ravi que tu sois satisfait!

Pour ce qui est du point-virgule, c'est une bêtise (voir ligne AJOUT2$ = ) que j'avais remarquée après t'avoir envoyé le fichier : c'est corrigé.

Pour boucler jusqu'à la dernière ligne de ton fichier, c'est fait (FOR...NEXT)! Voir code plus bas.

Public Sub Réduction()
'
Lig2 = 1
LigTest = 0
[u][b]For Lig = 1 To Range("A" & Rows.Count).End(xlUp).Row[/b][/u]
    If Range("A" & Lig) = "" Then Exit For
    '
    Feuil2.Range("A" & Lig2).Value = Range("A" & Lig).Value
    Feuil2.Range("B" & Lig2).Value = Range("B" & Lig).Value
    Feuil2.Range("C" & Lig2).Value = Range("C" & Lig).Value
    Feuil2.Range("D" & Lig2).Value = Range("D" & Lig).Value
    Feuil2.Range("E" & Lig2).Value = Range("E" & Lig).Value
    '
    For LigTest = Lig + 1 To Range("A" & Rows.Count).End(xlUp).Row[/b][/u]
        If Range("A" & LigTest).Value = Range("A" & Lig).Value Then
            Ajout1$ = Feuil2.Range("B" & Lig2).Value & ", " & Range("B" & LigTest).Value
            Ajout2$ = Feuil2.Range("C" & Lig2).Value &[u][b] ", " [/b][/u]& Range("C" & LigTest).Value
            Feuil2.Range("B" & Lig2).Value = Ajout1$
            Feuil2.Range("C" & Lig2).Value = Ajout2$
        Else
            Lig = LigTest - 1
            Lig2 = Lig2 + 1
            Exit For
        End If
    Next
Next
'
End Sub

Maintenant, les deux lignes que tu as ajoutées qui sont restées non classées...

Avais-tu refait un tri de ta feuille après ces ajouts, condition sine qua non pour que la macro fonctionne ?!

Si oui, envoie-le moi (en m'indiquant quelles lignes tu as ajoutées) que je regarde ça de plus près.

Avant d'appliquer ce code à ton fichier-maître, je te conseille quand même d'en faire une copie sous un autre nom et de faire un test grandeur nature sur ce fichier doublon, histoire d'éviter les catastrophes.

Pour faire, tu insères un bouton sur ta feuille (Menu INSERER puis choix de l'outil Bouton) et de lui accoler la macro REDUIRE.

Enjoy! 8)

Bien à toi.

Bonjour à tous,

un essai ici

edit: le bouton à cliquer est en feuille 3, sorry

P.

21fichier-concat.xlsm (29.61 Ko)

Bonsoir,

En effet je n'avais pas pensé retrier le fichier avant d'utiliser la macro quand j'ai ajouté les 2 lignes. C'est donc nickel.

Pour le ; en effet j'avais fini par trouver le code de la macro.

Et pour les copies, oui pas d'inquiétude j'ai des sauvegardes

Une petite chose encore. Est ce qu'il est possible de supprimer les doublons dans une même cellule ensuite via la même macro ou pas ? Je pourrais tout à fait me contenter de ce que tu m'as proposé donc inutile de passer trop de temps là-dessus. C'est déjà très bien. Mais si c'est possible facilement ce serait cool.

Exemple: quand on obtient "Marques > ABC, Marques > DEF, Marques > ABC" dans une cellule, il supprimerait le deuxième item "Marques > ABC".

Merci encore du temps passé !

Chris

Bonsoir Chrisfooxx,

oui, bien sûr, tout est possible en VBA!

J'avais même songé à ce que le mot MARQUES n'apparaisse qu'une fois dans la cellule .

Ce ne sera pas pour aujourd'hui, hélàs mais sait-on jamais qu'un autre membre ne termine le travail ce soir encore!

Sinon, je m'y mets demain, dès que je peux.

Bien à toi.

Bonjour,

Je dois reconnaitre que ce forum est particulièrement efficace et amical.

Merci

Salut Chrisfooxx,

je ne t'ai pas oublié mais... pas encore eu le temps!

Encore un petit peu de patience? Merci!

A+

Aucun souci, ej te suis deja bien reconnaissant de prendre le temps pour le faire

Bonjour Chrisfooxx,

je crois qu'on y est!

Vois si cela te convient!

Bonne journée!

A+

Salut Curulis57,

Encore une fois un grand merci.

Malheureusement toutes les mentions "Marques >" sont également supprimées du coup .

Il y a moyen de faire qqch ou ca pose un vrai problème ? Si c'est le cas, je me débrouillerais sans, il ne faut pas non plus que tu y passes des heures.

Merci

Salut Chrisfooxx,

figure-toi que je m'en doutais!

Je me suis posé la question en me disant que tu savais quand même bien que c'était la colonne des marques

Non, pas de problème : 5 secondes de travail! 8)

Voilà, ainsi que tu le souhaites!

A+

Salut,

Désolé mais c'est pas encore ca. Ca devrait faire :

Marques > COMPAIR, Marques > ULTRAFILTER DONALDSON

En fait c'est pour créé un fichier d'import. Donc oui perso je sais que ce sont les marques, mais le robot qui va lire le fichier a besoin qu'on lui dise pour chaque élément à créer où il va se trouver.

==> créer COMPAIR dans la catégories Marques, créer ULTRAFILTER DONALDSON dans la catégories Marques également...

Encore 5 petites secondes alors SVP

Merci

Ciao

Salut Chrisfooxx,

aaaahhhhhhhhhhhhh, booooooooooonnnnn !!!!!!

La communication, ce n'est pas toujours facile, hein!

Donc, 5 secondes plus tard...

A+

10fichier-concat.xlsm (25.26 Ko)
Rechercher des sujets similaires à "rechercher references identiques concatener valeur"