Fusion de table VBA

Fermé
doulab_sy Messages postés 9 Date d'inscription vendredi 22 juillet 2016 Statut Membre Dernière intervention 27 juillet 2016 - Modifié par doulab_sy le 26/07/2016 à 16:12
doulab_sy Messages postés 9 Date d'inscription vendredi 22 juillet 2016 Statut Membre Dernière intervention 27 juillet 2016 - 27 juil. 2016 à 11:32
Bonjour,
je souhaiterai fusionner deux bases cote à cote. J'ai réussi via un code VBA à copier coller les deux bases avec chacune sa feuille. Ce que je voudrai moi c'est de les avoir les deux sur une seule feuille ( base2016 !! base2015).
Est ce que quelqu'un pourrait m'aider.
En espérant être compris.

image de la base2015


voici une image du résultat que j'attends après avoir réussi à merger les deux bases



image de la base2016


voici mon code si cela pourrait vous aider:

Public Sub Modalites()

Dim i, j As Integer

finBASE20152016 = Worksheets("BASE20152016").Cells(Rows.Count, "A").End(xlUp).Row

j = 1

For i = 1 To finBASE20152016

If Worksheets("BASE20152016").Cells(i, 1).Value <> Worksheets("BASE20152016").Cells(i + 1, 1).Value Then
Worksheets("Calcul").Cells(j, 1).Value = Worksheets("BASE20152016").Cells(i + 1, 1).Value
Worksheets("Calcul").Cells(j, 2).Value = i + 1
j = j + 1
End If

Next i

fincalcul = Worksheets("Calcul").Cells(Rows.Count, "A").End(xlUp).Row

For i = 1 To fincalcul
Worksheets("Calcul").Cells(i, 3).Value = Worksheets("Calcul").Cells(i + 1, 2) - Worksheets("Calcul").Cells(i, 2)
Next i

Dim finreference, fincolonne As Integer
Dim k, m, l As Integer

finreference = Worksheets("Feuil4").Cells(Rows.Count, "A").End(xlUp).Row
fincolonne = Worksheets("BASE20152016").Cells(1, Columns.Count).End(xlToLeft).Column

For i = 1 To fincalcul
For j = 1 To finreference
If Worksheets("BASE20152016").Cells(j, 1).Value = Worksheets("Calcul").Cells(i, 1).Value Then
For m = 2 To fincolonne
l = j
For k = Worksheets("Calcul").Cells(i, 2).Value To Worksheets("Calcul").Cells(i + 1, 2).Value - 1
Worksheets("Feuil4").Cells(l + 2, m - 1).Value = Worksheets("BASE20152016").Cells(k, m).Value
l = l + 1
Next k
Next m
End If
Next j
Next i

Worksheets("feuil4").Cells(i, 18).Value = Worksheets("feuil4").Cells(i, 10).Value / Worksheets("feuil4").Cells(i, 2) - 1
For i = 8 To finligne
If Worksheets("feui4").Cells(i, 2).Value <> Worksheets("feuil4").Cells(i + 1, 1).Value Then


Worksheets("feuil4").Cells(i, 18).Value = Worksheets("feuil4").Cells(i, 10).Value / Worksheets("feuil4").Cells(i, 2) - 1

End If
Next i


End Sub
            
                
A voir également:

3 réponses

thev Messages postés 1883 Date d'inscription lundi 7 avril 2008 Statut Membre Dernière intervention 6 novembre 2024 691
26 juil. 2016 à 16:56
Bonjour,

ci-dessous code pour fusionner vos 2 feuilles dans Feuil4


Dim nb_col_base2015 As Long

With Sheets("base2015").UsedRange 'plage utiliséé
nb_col_base2015 = .Columns.Count 'nombre de colonnes utilisées de base2015
Sheets("Feuil4").Cells.Resize(.Rows.Count, .Columns.Count).Value = .Cells.Value
End With
With Sheets("base2016").UsedRange 'plage utiliséé
Sheets("Feuil4").Cells.Resize(.Rows.Count, .Columns.Count).Offset(, nb_col_base2015).Value = .Cells.Value
End With


--
 
0
doulab_sy Messages postés 9 Date d'inscription vendredi 22 juillet 2016 Statut Membre Dernière intervention 27 juillet 2016
26 juil. 2016 à 17:18
THEV est ce que vous pensez que je dois changer du coup mon code un peu plus en haut ou pas?
0
doulab_sy Messages postés 9 Date d'inscription vendredi 22 juillet 2016 Statut Membre Dernière intervention 27 juillet 2016
26 juil. 2016 à 17:26
car im signale que y'a une instruction incorrecte à l'extérieur d'une procédure.
0
thev Messages postés 1883 Date d'inscription lundi 7 avril 2008 Statut Membre Dernière intervention 6 novembre 2024 691
26 juil. 2016 à 17:57
Je n'ai pas spécialement étudié votre code car je suis parti de votre demande :
feuille 1 = Base 2015
feuille 2 = Base 2016
feuille 4 = Base 2015 + Base 2016
Mon code sert juste à fusionner côte à côte les 2 bases en supposant qu'elle soient de structure identique.

Si votre code traite un décalage de structure, vous devez apporter les précisions nécessaires en fournissant un extrait des bases 2015 et 2016.
0
doulab_sy Messages postés 9 Date d'inscription vendredi 22 juillet 2016 Statut Membre Dernière intervention 27 juillet 2016
26 juil. 2016 à 18:14
les bases sont de structure identique et je dois faire à priori la fusion afin de rendre facile la copie coller dans la feuille4 (REPORTING).
Si vous avez bien regardé mon code je fais une sorte de copie coller de la base fusionnée.
0
thev Messages postés 1883 Date d'inscription lundi 7 avril 2008 Statut Membre Dernière intervention 6 novembre 2024 691
26 juil. 2016 à 19:50
Dans votre code, vous effectuez des opérations supplémentaires à la fusion à partir de votre feuille "Calcul".

Mettez mon code au début et travaillez ensuite seulement au niveau des feuilles : "Feuil4" et "Calcul", la feuille "BASE20152016" n'a a priori plus de raison d'y figurer.
0
doulab_sy Messages postés 9 Date d'inscription vendredi 22 juillet 2016 Statut Membre Dernière intervention 27 juillet 2016
27 juil. 2016 à 11:32
merci thev pour ta disponibilité j'ai pu régler la fusion.
Cependant je souhaiterai calculer des taux de variations notamment sur les variables nbveh et prime_moyen_cie sur les deux années.
plus précisément (V_2016/V_2015) - 1= %
0