Fusion par ligne /permutation ?

bonjour

j'ai dans un fichier les données suivantes :

Voiture 1 Voiture 2 Voiture 3 Voiture 4 CA Km Prix

Opel Renault Ford Peugeot 10 20 50

Peugeot Opel Renault Ford 15 30 52

dans l'exemple donné les voitures de la ligne 2 = les voitures de la ligne 3, je souhaite les fusionner et sommer les valeurs CA, Km, Prix.

Ce qui donnerait (Ford, Peugeot, Opel, Renault) 25 50 102

mon fichier contient jusqu'à 20 voitures différentes et sur 7000 lignes ....

est-ce possible avec excel ?

Merci de votre aide.

Matthieu

Bonjour,

c'est possible en triant sur chaque ligne, les voitures par ordre alphabétique. puis en utilisant un somme.si ou un Tableau croisé dynamique.

Il est possible d'automatiser les tris et les sommes via macro.

dans les 2 cas, pour t'aider, un fichier exemple indiquant la manière dont les données sont organisées, est nécessaire.

bonjour

je joins un fichier d'exemple.

merci de votre aide.


Effectivement si j'arrivais à trier les lignes puis faire un TCD, ce serait parfait mais je n'arrive pas à trier !

mathieu

19exemple.xlsx (8.88 Ko)

Bonjour,

voici une macro qui met les données en forme pour une exploitation via TCD.

Sub misenforme()
' ws identifiant de la feuille on travaille sur la feuille active
    Set ws = ActiveSheet
    ' on recherche la colonne contenant CA, la colonne précédente est la dernière colonne voiture
    Set re = ws.Range("A1:ZZ1").Find("CA", lookat:=xlWhole)
    If re Is Nothing Then
        MsgBox "colonne CA non trouvée en ligne 1 dans ce fichier"
        Exit Sub
    End If
    ' dcws = dernière colonne voiture
    dcws = re.Column - 1
    'dlws dernière ligne du fichier
    dlws = ws.Range("A" & Rows.Count).End(xlUp).Row
    ' on va créer une nouvelle colonne avec la concaténation de toutes les voitures trouvées sur la ligne
    ' cette nouvelle colonne pourra être utilisée pour la construction du TCD
    ws.Cells(1, dcws + 4) = "identifiant ligne"
    ' on trie chaque ligne en ordre alphabétique sur les voitures
    For i = 2 To dlws
        rg = Cells(i, 1).Address & ":" & Cells(i, dcws).Address
        With ws.Sort
            .SortFields.Clear
            .SortFields.Add Key:=ws.Range(rg), _
                            SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
            .SetRange ws.Range(rg)
            .Header = xlGuess
            .MatchCase = False
            .Orientation = xlLeftToRight
            .SortMethod = xlPinYin
            .Apply
        End With
        st = ""
        ' on crée la concaténation de toutes les voitures
        For j = 1 To dcws
            st = st & ws.Cells(i, j)
        Next j
        ws.Cells(i, dcws + 4) = st
    Next i
    Set ws = Nothing
End Sub

Merci beaucoup h2so4 !

c'est exactement ça, et ça marche impec !

Bonne journée

Rechercher des sujets similaires à "fusion ligne permutation"