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!
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!