Des suggestions pour transposer ces données?

Y compris Power BI, Power Query et toute autre question en lien avec Excel
P
PireNobel
Jeune membre
Jeune membre
Messages : 11
Inscrit le : 26 janvier 2016
Version d'Excel : 2013 FR

Message par PireNobel » 16 décembre 2016, 19:35

Bonjour,

Je me suis retrouvé devant ce problème un peu démuni. Je pensais que ça serait facile mais je ne trouve pas vraiment de solution.
Je suis ouvert à tout, formules ou VBA.

Il y a dans la première colonne des numéros clients.
Pour chaque numéro client il peut y avoir plusieurs adresses mails.
L'objectif c'est d'arriver à ce qu'il n'y ait plus qu'une seule ligne par numéro client, avec les adresses mails en colonnes les unes à côté des autres.

:D
Mails Lignes.xlsx
(56.98 Kio) Téléchargé 24 fois
Avatar du membre
Steelson
Fanatique d'Excel
Fanatique d'Excel
Messages : 10'931
Appréciations reçues : 539
Inscrit le : 13 octobre 2014
Version d'Excel : 2013 FR

Message par Steelson » 16 décembre 2016, 20:24

J'ai un peu décortiqué les formules pour être compréhensible !

Pour avoir la liste unique des clients, tu peux partir d'un TCD.
Mails Lignes.xlsx
(12.31 Kio) Téléchargé 12 fois

O.o°• ♪♪♫ °º¤ø,¸¸,ø¤º°`°º¤ø,¸ O.o°• ♪♪♫ °º¤ø,¸¸,ø¤º°`°º¤ø,¸
PI = 3.14159 26535 89793 23846 26433 83279 50288 41971 69399 37510 58209 74944 59230 78164 06286 20899 86280

( ͡• ͜ʖ ͡• )
Avatar du membre
curulis57
Membre impliqué
Membre impliqué
Messages : 2'826
Appréciations reçues : 90
Inscrit le : 4 janvier 2016
Version d'Excel : 2013 FR

Message par curulis57 » 16 décembre 2016, 20:37

Bonsoir le forum, Pire Nobel, Steelson,

pour ne pas changer, une solution VBA ;;) et un petit bouton pour lancer la fête!

A+
Mails Lignes.xlsm
(22.45 Kio) Téléchargé 11 fois
T
Theze
Passionné d'Excel
Passionné d'Excel
Messages : 3'513
Appréciations reçues : 242
Inscrit le : 26 janvier 2011
Version d'Excel : 2007

Message par Theze » 16 décembre 2016, 20:53

Bonsoir,

Une piste de plus avec un dictionnaire :
Sub Dico()

    Dim Fe As Worksheet
    Dim Plage As Range
    Dim Cel As Range
    Dim Dico As Object
    Dim Cle
    Dim I As Integer
    
    Set Fe = Worksheets("Sheet1")
    Set Dico = CreateObject("Scripting.Dictionary")
    
    With Fe: Set Plage = .Range(.Cells(2, 1), .Cells(.Rows.Count, 1).End(xlUp)): End With

    For Each Cel In Plage: Dico(Cel.Value) = Dico(Cel.Value) & ";" & Cel.Offset(, 1).Value: Next Cel
    
    I = 2
    
    For Each Cle In Dico.keys
        
        Range(Cells(I, 4), Cells(I, 4 + UBound(Split(Dico(Cle), ";")))).Value = Split(Dico(Cle), ";")
        Cells(I, 4).Value = Cle
        
        I = I + 1

    Next Cle

End Sub
Il vaut mieux un qui sait que cent qui cherchent :wink:

Ce forum étant un lieu de partage, je n'accepte pas les messages privés !
P
PireNobel
Jeune membre
Jeune membre
Messages : 11
Inscrit le : 26 janvier 2016
Version d'Excel : 2013 FR

Message par PireNobel » 16 décembre 2016, 20:56

Steelson a écrit :J'ai un peu décortiqué les formules pour être compréhensible !

Pour avoir la liste unique des clients, tu peux partir d'un TCD.

Je m'étais dit qu'utiliser INDEX et EQUIV serait une bonne solution, mais tout ça ne me vient pas naturellement du tout... :(

Merci beaucoup en tous cas c'est génial!

curulis57 a écrit :Bonsoir le forum, Pire Nobel, Steelson,

pour ne pas changer, une solution VBA ;;) et un petit bouton pour lancer la fête!

A+

Et quelle fête! Je suis toujours étonné de la facilité avec lesquelles certaines personnes sortent un code comme ça sur le pouce.
Merci infiniment! :D
P
PireNobel
Jeune membre
Jeune membre
Messages : 11
Inscrit le : 26 janvier 2016
Version d'Excel : 2013 FR

Message par PireNobel » 16 décembre 2016, 22:00

Theze a écrit :Bonsoir,

Une piste de plus avec un dictionnaire :
Ca marche parfaitement. Merci beaucoup.
Je suis un peu dégoûté de faire un métier qui ne me donne ni le temps d'apprendre VBA comme je voudrais, ni suffisamment d'opportunités. C'est juste génial.
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message