Comment compiler deux tableaux ayant une colonne de reference comm
1 réponse
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.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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
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
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