FUSIONNER / CONCATENER des DOUBLONS

Ctrl-Alt-Suppr

XLDnaute Junior
Bonsoir à tous,

Votre forum est vraiment très complet, mais après 1h de recherche, je me suis inscrits car je n'ai pas trouvé mon "bonheur".
En fait, ce que j'aimerai faire ne me parait pas très compliqué, mais pourtant je colle ...


Imaginez que je cherche à comparer des voitures ... (ex. complétement fictif)

colonneA ___ colonneB

PORSCHE ___ cuir
PORSCHE ___ 12 airbags
PORSCHE ___ 400 ch
SKODA _____ tissu
SKODA _____ 1 moitié d'airbag
SKODA _____ 1 cheval
SKODA _____ 1 attache-remorque


Ce que j'aimerai, c'est remettre sur une même ligne (si possible en rajoutant des caractères de séparation) les valeurs des "doublons" de la colonne A.

En clair :

PORSCHE ___ cuir / 12 airbags / 400 ch
SKODA _____ tissu / 1 moitié d'airbag / 1 cheval / 1 attache-remorque

J'ai bien essayé avec des SI(xxxx) et des & ... mais mon problème c'est que le nombre de "caractérisitiques pour chaque voiture" est différent, donc ma formule n'est pas recopiable.
Oui, car en tout, j'ai au moins 15.000 lignes ...


A savoir, je ne suis pas du tout programmeur (VBA, macros ...)
Toute aide, même partielle est la bienvenue car c'est assez important ...
Si cela doit se faire en plusieurs étapes (genre sur 3 colonnes supplémentaires) ce n'est pas génant.


En espérant que certains prendront le peine de m'aider ...
D'avance, merci !

Cordialement.
 

ninbihan

XLDnaute Impliqué
Re : FUSIONNER / CONCATENER des DOUBLONS

Bonsoir Ctrl Alt Del, bonsoir le forum

Sans VBA je ne vois pas, mais je suis loin d'être le plus qualifié sur ce site.
Petite question est ce que tous les 'Porsche" sont de rang ou peut on en trouver ligne 1 et ligne 14599 ?
 

JYLL

Nous a quitté
Repose en paix
Re : FUSIONNER / CONCATENER des DOUBLONS

Bonsoir CTRL-ALT-SUP, ninbihan et le forum,

En effet une solution par macro avec ce code et classeur joint.

Code:
Sub Concatener()
Dim Ligne As Long, I As Long, J As Byte, Mémoire As String, Mot As String
For I = 1 To Range("A65536").End(xlUp).Row + 1
    If Left(Cells(I, 1), 8) <> Mémoire Then
    Mémoire = Left(Cells(I, 1), 8)
    If Ligne > 0 Then Cells(Ligne, 2) = Mot
        Ligne = Ligne + 1
        Mot = ""
        Mot = Cells(I, 1)
    Else
        J = Len(Cells(I, 1))
        While Mid$(Cells(I, 1), J, 1) <> "_"
            J = J - 1
        Wend
        Mot = Mot & " / " & Mid$(Cells(I, 1), J + 1, Len(Cells(I, 1)) - J + 1)
    End If
Next I
End Sub
Bon test.
 

Pièces jointes

  • Concatener.zip
    7.8 KB · Affichages: 278
  • Concatener.zip
    7.8 KB · Affichages: 243
  • Concatener.zip
    7.8 KB · Affichages: 260

Ctrl-Alt-Suppr

XLDnaute Junior
Re : FUSIONNER / CONCATENER des DOUBLONS

Je ne suis pas sûr d'avoir bien compris la question ...
Mais je peux trier les "voitures"

AAAA
AAAA
BB
BB
BB
CCC
CCC


D'ailleurs, je l'ai déjà fait, puisque j'ai aussi tenté avec des RechercheV.
Sinon sans VBA ça doit être faisable, enfin je pense.
J'en suis pas loin, mais mon souci c'est comme je le disais plus haut, de ne pas connaitre le nombre de "caractéristiques" possibles.



____________________________________________________________
Une solution qui pourrait fonctionner, c'est qu'a chaque changement de véhicule, il faudrait insérer 20 lignes.
Comme ça, dans la colonne C je renverrai les valeurs de la colonne A + celles sur 12 de haut. Etant donné qu'il n'y a jamais plus de 10~12 caractéristiques.

AAA __ valeur 1
AAA __ valeur 2
AAA __ valeur 3 _____ = valeur 3 / valeur 2 / valeur 1 / ....



BB __ valeur 1
BB __ valeur 2
BB__ valeur 3 _____ = valeur 3 / valeur 2 / valeur 1 / ....

(je me rends compte que c'est difficile d'expliquer par ecrit ...)
Mais en gros, cette solution m'irait très bien, car j'ai une petite macro pour supprimer les doublons (de la colonne A)
Il me suffirait de concatener toutes les valeurs (cf. plus ou moins mon exemple)
Puis de filter afin de ne recopier que les lignes qui m'intéressent.

Problème, 15.000 lignes, à 5~10 caractéristiques, c'est impossible de faire des insertions "à la main" aux bons endroits ...
Et sans faire ces insertions, je suis piégé (~ je me retrouve avec des caractéristiques d'une autre voiture)

Désolé si je ne suis pas clair, mais dans le cas présent, je n'arrive pas à rentranscrire mes idées par écrit ...


Merci pour cette réponse rapide.
Cordialement
 

Ctrl-Alt-Suppr

XLDnaute Junior
Re : FUSIONNER / CONCATENER des DOUBLONS

Je n'avais pas vu la réponse de JYLL

Un grand merci !

Ca fonctionne avec l'exemple mais c'est pas tout à fait ce à quoi je m'attendais ... (ça ne travail que sur 1 colonne)


J'ai testé ce sur quoi je devais vraiment effectué cette manip, et ça ne fonctionne pas. J'ai sois des erreurs (debogueur qui se lance) soit rien ne se passe.

Serait-il possible d'avoir un peu près la même chose, mais en plus flexible.
A savoir, je suis "débutant" dans le sens où je suis incapable d'écrire 2 lignes d'une macro, mais sélectionner une zone et lancer une macro toute faite, j'y arrive ;).
Donc pas besoin d'un gros bouton en plein milieu.

Par ailleurs, j'entends pas félxibilité, quelquechose qui travaillerait par colonne.

ColonneA | ColonneB | ColonneC | ColonneD | ColonneE | ColonneF
AAAAAAA | valeur.01 | ............ | AAAAAAA | valeur.01 | valeur.02
AAAAAAA | valeur.02 | ............ | BBBBBBBB | valeur.01 | valeur.02
BBBBBBBB | valeur.01 |
BBBBBBBB | valeur.02 |


D'avance, merci.
 
Dernière édition:

JYLL

Nous a quitté
Repose en paix
Re : FUSIONNER / CONCATENER des DOUBLONS

re Bonsoir Ctrl-Alt-Suppr et le Forum,

J'avais mal interpréter ton exemple, j'ai modifié le classeur pour travailler sur deux colonnes et écrire le résultat dans la 4ième.

Code:
Sub Concatener()
Dim Ligne As Long, I As Long, J As Byte, Mémoire As String, Mot As String
For I = 1 To Range("A65536").End(xlUp).Row + 1
    If Left(Cells(I, 1), 8) <> Mémoire Then
    Mémoire = Left(Cells(I, 1), 8)
    If Ligne > 0 Then Cells(Ligne, 4) = Mot
        Ligne = Ligne + 1
        Mot = ""
        Mot = Cells(I, 1) & "  /  " & Cells(I, 2)
    Else
        Mot = Mot & " / " & Cells(I, 2)
    End If
Next I
End Sub

Bon test.
 

Pièces jointes

  • Concatener.zip
    7.9 KB · Affichages: 200
  • Concatener.zip
    7.9 KB · Affichages: 186
  • Concatener.zip
    7.9 KB · Affichages: 190

Ctrl-Alt-Suppr

XLDnaute Junior
Re : FUSIONNER / CONCATENER des DOUBLONS

Merci ... (j'ai l'impression qu'on se croise, en décallage..)

J'ai testé la 2ème version.
Mais tout est concatener dans la 1ère ligne (4ème colonne)

Dans les colonnes A et B, j'utilise des expressions assez longues et toute contiennent des \
Est-ce-que cela influence le résultat ?
 

JYLL

Nous a quitté
Repose en paix
Re : FUSIONNER / CONCATENER des DOUBLONS

Re Bonsoir Ctrl-Alt-Suppr et le Forum,

Je pense que tu as trié par ordre croissant la colonne "A". Alors si toutes lesBMW se suivent c'est pour cela que tu as tout dans ligne 1 colonne 4.

Le mieux c'est de mettre un classeur avec 100 ou 200 lignes comme cela je vais pouvoir adapter ma macro. Il faut arriver à trouver un changement entre deux modèles qui se suivent. Je répond au fur et à mesure en fonction des éléments que tu me donnes.

A te lire.
 

Ctrl-Alt-Suppr

XLDnaute Junior
Re : FUSIONNER / CONCATENER des DOUBLONS

Bonjour au forum, (oui, on est un nouveau "jour" ...)

Ci-joint un exemple concret.
Celui-ci est "ludique", si besoin je reposterai du bureau, mais c'est très similaire (pour des sujets totalement différents...)

Cordialement.
 

Pièces jointes

  • 2007.04.17_00h42_Test.xls
    29 KB · Affichages: 249
  • 2007.04.17_00h42_Test.xls
    29 KB · Affichages: 231
  • 2007.04.17_00h42_Test.xls
    29 KB · Affichages: 243

ninbihan

XLDnaute Impliqué
Re : FUSIONNER / CONCATENER des DOUBLONS

Bonsoir tout le monde,

Bon ben voilà ce que j'ai fais aussi par VBA
Voir colonne E et F
Bonne nuit à tous,

Ninb
 

Pièces jointes

  • 2007.04.17_00h42_Test.xls
    47.5 KB · Affichages: 300
  • 2007.04.17_00h42_Test.xls
    47.5 KB · Affichages: 275
  • 2007.04.17_00h42_Test.xls
    47.5 KB · Affichages: 251

Ctrl-Alt-Suppr

XLDnaute Junior
Re : FUSIONNER / CONCATENER des DOUBLONS

@ ninbihan

A une toute petite nuance près (des espaces de chaque côté du / "séparateur") c'est exactement le résultat que j'escomptais …
Est-ce-que la "routine VBA" est facilement utilisable ?

Y-a-t'il des restrictions particulières ?
Ex. si mes cases de la colonne A contiennent des "expressions" plus grandes, ou plus courtes ? ou encore avec des caractères spéciaux ?


Sur ce, il se fait tard, et je me permets de vous souhaiter une bonne nuit, à tous, et surtout à toi, petit forum (… enfin presque petit)

Encore merci !

@ demain ….
 

ninbihan

XLDnaute Impliqué
Re : FUSIONNER / CONCATENER des DOUBLONS

Bonsoir ctrl alt sup

Pour lancer la macro, tape Alt F8 et double clique sur concatenerdoublons
Les données doivent toujours se trouver dans colonnes A et B et sont concatenées dans E et F si tu répétes la macro plusieurs fois les données sont copiées à la suite et n'écrasent pas les précédentes.
Voilà, j'espère que cela pourra t'aider.

Si tu veux plus d'info n'hésite pas.

Bonne Soirée,

Ninb
 

Pièces jointes

  • 2007.04.17_00h42_Test.xls
    42.5 KB · Affichages: 321
  • 2007.04.17_00h42_Test.xls
    42.5 KB · Affichages: 320
  • 2007.04.17_00h42_Test.xls
    42.5 KB · Affichages: 349

Ctrl-Alt-Suppr

XLDnaute Junior
Re : FUSIONNER / CONCATENER des DOUBLONS

Un grand MERCI à toi pour cette "commande".

J'ai en une petite soirée presque fini tout ce que j'avais à faire.
C'était inespéré !! Non vraiment, merci beaucoup ça me facilite la tâche ...
:cool:

Je ne sais pas comment te renvoyer l'ascenseur.
Donc si tu as besoin de quelques chose, hésites pas à demander (même par MP)
sur tout et n'importe quel sujet ... sait-on jamais, je pourrais peut-être t'aider d'une manière ou d'une autre (pas forcement en informatique d'ailleurs...)


Peut-être à bientôt sur le forum (en tout cas, il est ajouté à mes "marques-pages" ...)

Cordialement.
 

ninbihan

XLDnaute Impliqué
Re : FUSIONNER / CONCATENER des DOUBLONS

Bonsoir a toi,

Saches que je suis ravi d'avoir pu t'aider. En fait, je me suis mis au VBA il y'a quelques mois et j'ai découvert ce forum seulement récemment. J'essaie d'aider les autres en furetant dans les archives du forum et depuis que je fais cela, je pense avoir progressé. Si tu as une autre problématique rigolote comme celle là n'hésite pas !!!

Bonne soirée (ou nuit) et longue vie à XLD
 
Dernière édition:

Statistiques des forums

Discussions
312 305
Messages
2 087 080
Membres
103 457
dernier inscrit
fab2614