Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Excel Discussion :

Transformation d'une liste


Sujet :

Excel

  1. #1
    Futur Membre du Club
    Transformation d'une liste
    Bonjour,

    J'espère que vous allez bien.

    Mes données sont en PJ. C'est une liste avec des fournisseurs avec les noms des apporteurs d'affaires. Lorsqu'un fournisseur est amené par plusieurs apporteurs d'affaire, il y a une ligne par fournisseur du type :
    001 Fournisseur1 Nicolas
    001 Fournisseur1 Jeannot
    001 Fournisseur1 Olivia

    J'aimerais transformer cette liste pour avoir une ligne par fournisseur et le nom de tous les apporteurs d'affaire dans un même champs (séparé par une virgule et un espace). Par exemple :
    001 Fournisseur1 Nicolas, Jeannot, Olivia
    Comment puis-je faire svp ?

    Pour info, dans le fichier en PJ, j'ai un onglet avec ma liste de départ et un onglet avec le résultat que j'aimerais obtenir.

    Bonne journée,

  2. #2
    Responsable Arduino et Systèmes Embarqués

    Bonsoir,

    Citation Envoyé par Kikou77 Voir le message
    001 Fournisseur1 Nicolas
    001 Fournisseur1 Jeannot
    001 Fournisseur1 Olivia

    J'aimerais transformer cette liste pour avoir une ligne par fournisseur et le nom de tous les apporteurs d'affaire dans un même champs (séparé par une virgule et un espace). Par exemple :
    001 Fournisseur1 Nicolas, Jeannot, Olivia
    Solution ici Concaténer plusieurs enregistrements dans une seule colonne

  3. #3
    Community Manager

    Salut,

    Je pense que la question est relative à Excel. Non ?

    Si oui, une solution avec un TCD, peut-être que cela vous conviendrait.
    Vous avez envie de contribuer au sein du Club Developpez.com ? Contactez-nous maintenant !
    Vous êtes passionné, vous souhaitez partager vos connaissances en informatique, vous souhaitez faire partie de la rédaction.
    Il suffit de vous porter volontaire et de nous faire part de vos envies de contributions :
    Rédaction d'articles/cours/tutoriels, Traduction, Contribution dans la FAQ, Rédaction de news, interviews et témoignages, Organisation de défis, de débats et de sondages, Relecture technique, Modération, Correction orthographique, etc.
    Vous avez d'autres propositions de contributions à nous faire ? Vous souhaitez en savoir davantage ? N'hésitez pas à nous approcher.

  4. #4
    Expert confirmé
    Bonjour,

    Autre proposition:


    le code
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    Sub Repartition()
        Dim DerLig As Long, i As Long, j As Long
        Application.ScreenUpdating = False
        DerLig = Range("A" & Rows.Count).End(xlUp).Row
     
        'Marquage pour modifier l'ordre des données et retrouver dans l'ordre initial à la fin
        Range("D2").Value = "1"
        Range("D2").AutoFill Destination:=Range("D2<img src="images/smilies/icon_biggrin.gif" border="0" alt="" title=":D" class="inlineimg" />" & DerLig), Type:=xlFillSeries
     
        'Tri par N° fournisseur et par source
        Range("A2<img src="images/smilies/icon_biggrin.gif" border="0" alt="" title=":D" class="inlineimg" />" & DerLig).Sort [A1], 1
        Range("A2<img src="images/smilies/icon_biggrin.gif" border="0" alt="" title=":D" class="inlineimg" />" & DerLig).Sort [B1], 1
     
        Lig = 2
        For i = 2 To DerLig
            If Cells(i, "B") <> Cells(i + 1, "B") Then
                Cells(Lig, "E") = Cells(i, "B")
                Cells(Lig, "F") = Cells(i, "C")
                Cells(Lig, "G") = Cells(i, "A")
                Lig = Lig + 1
            Else
                Cells(Lig, "E") = Cells(i, "B")
                Cells(Lig, "F") = Cells(i, "C")
                Cells(Lig, "G") = Cells(i, "A")
                j = i + 1
                Do While Cells(j, "B") = Cells(i, "B")
                    If Cells(j, "A") <> Cells(j - 1, "A") Then
                        Cells(Lig, "G") = Cells(Lig, "G") & ", " & Cells(j, "A")
                    End If
                    j = j + 1
                Loop
                Lig = Lig + 1
                i = i + 1
            End If
        Next i
        Range("E1").Value = Range("B1").Value
        Range("F1").Value = Range("C1").Value
        Range("G1").Value = Range("A1").Value
        'Tri pour retrouver la configuration initiale
        Range("A2<img src="images/smilies/icon_biggrin.gif" border="0" alt="" title=":D" class="inlineimg" />" & DerLig).Sort [D1], 1
        Columns(4).ClearContents
    End Sub


    Cdlt

  5. #5
    Community Manager

    Salut,

    @ARTURO83 : Belle démonstration
    Vous avez envie de contribuer au sein du Club Developpez.com ? Contactez-nous maintenant !
    Vous êtes passionné, vous souhaitez partager vos connaissances en informatique, vous souhaitez faire partie de la rédaction.
    Il suffit de vous porter volontaire et de nous faire part de vos envies de contributions :
    Rédaction d'articles/cours/tutoriels, Traduction, Contribution dans la FAQ, Rédaction de news, interviews et témoignages, Organisation de défis, de débats et de sondages, Relecture technique, Modération, Correction orthographique, etc.
    Vous avez d'autres propositions de contributions à nous faire ? Vous souhaitez en savoir davantage ? N'hésitez pas à nous approcher.

  6. #6
    Futur Membre du Club
    Bonjour,

    merci pour vos réponses.
    La discussion a été déplacée. Elle était initialement dans Access / Requête et SQL.

    Je travaille sous Access et je souhaite mettre en forme une table de manière à passer d'un apporteur d'affaire par ligne et par compagnie à une ligne par compagnie avec tous les apporteur d'affaire sur la même ligne. Est-ce possible de transformer une table pour obtenir ce résultat sous Access 2016 ?

    Merci d'avance pour vos retours,

  7. #7
    Community Manager

    Salut Kikou77,

    Dans ta demande initiale, vous n'aviez pas précisé que vous travaillez avec Access, surtout que vous avez mis en pièce jointe un fichier Excel : ce qui porte à confusion.
    Également poster un fichier dès le début du fil est contraire aux règles du Club.

    Par ailleurs f-leb a fourni un lien vers la FAQ Access qui pourrait répondre à ta problématique. Sinon, je vous invite à créer un nouveau fil dans le forum Access et expliquer, comme vous venez de le faire avec capture d'écran, ce que vous souhaitez.

    et bon courage

    Malick
    Vous avez envie de contribuer au sein du Club Developpez.com ? Contactez-nous maintenant !
    Vous êtes passionné, vous souhaitez partager vos connaissances en informatique, vous souhaitez faire partie de la rédaction.
    Il suffit de vous porter volontaire et de nous faire part de vos envies de contributions :
    Rédaction d'articles/cours/tutoriels, Traduction, Contribution dans la FAQ, Rédaction de news, interviews et témoignages, Organisation de défis, de débats et de sondages, Relecture technique, Modération, Correction orthographique, etc.
    Vous avez d'autres propositions de contributions à nous faire ? Vous souhaitez en savoir davantage ? N'hésitez pas à nous approcher.

###raw>template_hook.ano_emploi###