Alignement sur plusieurs colonnes avec insertion de lignes

Bonjour,

Petite nouvelle sur le forum (et pas très douée sur excel), j'ai grandement besoin d'aide car je n'ai trouvé aucun post qui pourrait répondre à ma question.

Je voudrais classer des données dans un tableau contenant 3 sous tableaux et aligner les valeurs identiques présentes dans 1 colonne de chaque sous tableau (colonnes "name"), sachant que les autres colonnes doivent restées "attachées" à leur colonne "name".

J'attache un petit extrait de mon tableau de données pour que ce soit plus explicite:

Je voudrais donc aligner les valeurs des colonnes B, F et J (les 3 colonnes "name") des trois sous tableaux, sachant que les colonnes A, C et D sont associées à la colonne B, idem pour les colonnes E, G et H qui sont associées à la colonne F et les colonnes I, K et L à la colonne J.

Je voudrais insérer des lignes pour les valeurs qui ne seraient pas présentes dans les différents sous tableaux, et donc avoir une ligne pour chaque valeur de "name", et des cellules vides si ces valeurs ne sont pas présentes dans chaque sous tableau.

J'espère avoir été assez claire, et un immense merci à qui pourra m'aider!

87matrice-3-6-16.xlsx (11.40 Ko)

Bonjour,

C'est pas très facile à faire (en tout cas pour moi), et comme personne ne répond, pas même les cadors du forum, j'en déduis que ça n'est simple pour personne...

En revanche, si tu nous disais ce que tu veux faire au final avec ces données (pourquoi cette disposition, au départ et à l'arrivée), ça nous laisserait peut-être des pistes de résolution ?

Cordialement, Daniel

Bonsoir,

Aie, moi qui pensais que c'était juste parce que je n'étais pas assez douée sur Excel...

Alors pour plus d'explications, ces données sont des données de sortie d'une étude de réseaux de communautés bactériennes sur des sites de différents âges (3, 6 et 16 ans), et donc des corrélations (interaction dans le tableau) entre ces différentes communautés (OTUn dans les tableaux). Je n'ai pas le choix sur le format initial des tableaux, qui sont initialement dans des fichiers indépendants (c'est moi qui les ai combinés dans la même feuille excel). Le logiciel me donne juste toutes les interactions 2 à 2 (OTUn_interaction_OTUk) par ordre alphabétique pour chacun de mes sites.

L'idée c'est de voir si le nombre et la nature des corrélations varient au cours du temps et d'étudier ensuite plus en détails les corrélations communes à 2 ou 3 âges.

J'ai réussi assez facilement à aligner les sous tableaux pour 2 des 3 âges mais je voudrais avoir une idée des corrélations présentes dans l'ensemble de mes sites, et c'est là que cela devient complexe!

Ca me permettrait notamment de faire un diagramme de Venn avant de regarder plus en détails les interactions qui pourraient avoir un intérêt au sens biologique...

Voilà, j'espère que c'est plus clair?

En tout cas, merci pour le coup de main...

Laetitia

Bonjour titiatitia, Dan42153

Essaie ceci :

Option Explicit

Sub aligner()
Dim a, i As Long, j As Long, k As Long, w(), x As Object
    With Sheets("Feuil1").Range("a3").CurrentRegion
        a = .Value:
        With CreateObject("System.Collections.SortedList")
            For j = 1 To UBound(a, 2) Step 4
                For i = 2 To UBound(a, 1)
                    If a(i, j + 1) <> "" Then
                        If Not .Contains(a(i, j + 1)) Then
                            ReDim w(1 To UBound(a, 2))
                        Else
                            w = .Item(a(i, j + 1))
                        End If
                        For k = j To j + 3
                            w(k) = a(i, k)
                        Next
                        .Item(a(i, j + 1)) = w
                    End If
                Next
            Next
            Set x = .Clone
        End With
        'restitution en feuil2
        Application.ScreenUpdating = False
        With Sheets("Feuil2").Range("a1")
            .CurrentRegion.Clear
            With .Resize(, UBound(a, 2))
                .Value = Application.Index(a, 1, 0)
                For i = 0 To x.Count - 1
                    .Rows(i + 2).Value = x.GetByIndex(i)
                Next
            End With
            With .CurrentRegion
                .Font.Size = 10
                With .Rows(1)
                    .Font.Bold = True
                    .BorderAround Weight:=xlThin
                End With
                .BorderAround Weight:=xlThin
                .Borders(xlInsideVertical).Weight = xlThin
                .VerticalAlignment = xlCenter
                .Columns.AutoFit
            End With
            .Parent.Activate
        End With
    End With
    Application.ScreenUpdating = True
End Sub

klin89

Bonjour Klin89,

Wow, merci merci merci! Ca tourne niquel en 2 petites secondes!!! Les mots me manquent

Tu viens de m'épargner des semaines de galère à essayer de le faire à la main...!

Encore merci!

Rechercher des sujets similaires à "alignement colonnes insertion lignes"