Aligner sur une ligne des infos qui sont sur plusieurs ligne

Bonjour,

Je vais essayer d'être clair....

Je voudrai aligner sur une même ligne des infos qui sont sur plusieurs lignes.

Primo :

J'ai un fichier clients avec un compte client par ligne.

Si un compte client contient deux infos différentes pour un même champ, j'aurai deux lignes pour le même compte client, voir 3 ou 4.

Ex :

N° client Nom Ville CP

12345 Dupont Paris 75000

12345 Dupont Lille 59000

12345 Dupont Marseille 13000

Je voudrai avoir comme résultat ceci :

N° Client Nom Ville 1 CP1 Ville 2 CP 2 Ville 3 CP 3

12345 Dupont Paris 75000 Lille 59000 Marseille 13000

C'est plus clair dans le fichier joint.

1er onglet le fichier source avec les différentes lignes

2ème onglet le résultat à atteindre.

S'il existe une formule pour faire ça vous m'enlevez une énorme épine du pied !!!

J'en ai plusieurs centaines à faire !!

Merci pour votre aide.

33classeur1.xlsx (10.65 Ko)

Bonjour,

ébauche de code, à compléter par la mise en page

Sub test()
    col = 1
    i = 3
    ref = 2
    While Cells(i, 1) <> ""
        If Cells(i, 1) = Cells(ref, 1) Then
            col = col + 1
            Cells(1, col * 2 + 2) = "CP " & col
            Cells(1, col * 2 + 1) = "Ville " & col
            Cells(ref, col * 2 + 2) = Cells(i, 3)
            Cells(ref, col * 2 + 1) = Cells(i, 4)
            Rows(i).Delete shift:=xlUp
        Else
            i = i + 1
            ref = i
            col = 1
        End If
    Wend
End Sub
Sub toto()
    j = 1
    With Sheets("Source")
        For i = 2 To .Range("A" & .Rows.Count).End(xlUp).Row
            If .Range("A" & i) <> num Then
                j = j + 1
                num = .Range("A" & i)
                Sheets("Résultat à atteindre").Cells(j, 1) = num
                Sheets("Résultat à atteindre").Cells(j, 2) = .Range("B" & i)
                Sheets("Résultat à atteindre").Cells(j, 3) = .Range("C" & i)
                Sheets("Résultat à atteindre").Cells(j, 4) = .Range("D" & i)
                k = 5
            Else
                num = .Range("A" & i)
                Sheets("Résultat à atteindre").Cells(j, k) = .Range("C" & i)
                Sheets("Résultat à atteindre").Cells(j, k + 1) = .Range("D" & i)
                k = k + 2
            End If
        Next i
    End With
End Sub

Merci pour votre aide.

Je ne m'attendais pas à des macros.

J'ai bêtement essayé d'enregistrer et de l'appliquer mais ça ne colle pas.

En fait j'ai simplifié le schéma, mais j'ai des tas de colonnes à rapatrier.... Du coup la macro ne fonctionne pas.

Je m'attendais à une formule que j'aurai pu répéter sur plusieurs colonnes.

Personne n'a ça en stock

Rechercher des sujets similaires à "aligner ligne infos qui"