OVH Cloud OVH Cloud

Comment compiler deux tableaux ayant une colonne de reference comm

1 réponse
Avatar
BeCoCo
J'ai deux tableaux differents, ayant tous deux une colonne generique commune.

Je souhaite regrouper ces deux tableaux, en prenant comme reference les
données identiques de la colonne commune.

Je schematise :

Tableau 1

A B C D E
1 x ! ! ! !
2 y ! ! ! !
3 f ! ! ! !
4 g ! ! ! !

A R T Y
1 t . . .
2 y . . .
3 n . . .
4 f . . .
5 a . . .

La "colonne commune" serait dans ce cas la A.
Les valeurs qu'on retrouve dans cette colonne sont d'ordre numerique,
toutefois ses valeurs peuvent etre identiques (c'est celle que je souhaite
regrouper ou bien on pourra retrouver une valeur de la colonne A uniquement
dans un seul des tableau).

Le but est d'obtenir un tableau du type :

A B C D E R T Y
1 x ! ! ! !
2 y ! ! ! ! . . .
3 f ! ! ! ! . . .
4 g ! ! ! !
5 t . . .
6 n . . .
7 a . . .

Les x,y, f sont des valeurs numeriques les ! et . points sont des données.

Merci de votre aide

1 réponse

Avatar
h2so4
voici une macro qui fait la "compilation de 2 tableaux dans un troisième :

Sub fusion()

'----- paramètres à adapter

x = "Feuil1": ' première feuille
y = "Feuil2": ' 2ème feuille
z = "Feuil3": ' feuille résultat (doit exister)

ncolx = 4: ' nombre de colonne sur la feuille 1
ncoly = 4: ' nombre de colonne sur la feuille 2

'
' la colonne 1 de de feuille 1 et 2 et la clé de fusion
' des 2 feuilles

'----- fin des paramètres

With Worksheets(x)
i = 1
While .Cells(i, 1) <> ""
For j = 1 To ncolx
Worksheets(z).Cells(i, j) = .Cells(i, j)
Next j
i = i + 1
Wend
End With

With Worksheets(y)
i = 1
While .Cells(i, 1) <> ""
k = 1
mergefound = False
While Worksheets(z).Cells(k, 1) <> "" And Not mergefound
If .Cells(i, 1) = Worksheets(z).Cells(k, 1) Then
mergefound = True
Else
k = k + 1
End If
Wend
Worksheets(z).Cells(k, 1) = .Cells(i, 1)
For j = 2 To ncoly
Worksheets(z).Cells(k, j + ncolx - 1) = .Cells(i, j)
Next j
i = i + 1
Wend
End With
End Sub


--
h2so4