XL 2016 consolidation plusieurs feuilles

gds77

XLDnaute Occasionnel
Bonjour à vous tous,
Je vais essayer d'être claire:cool:. Sur le fichier joint je dispose de 3 feuilles pour mes banques et pour lesquelles je souhaiterais sur la feuille synthèse consolider les colonnes G "montant" et les colonnes F "catégorie" en fonction des années 2017 et 2018. Mon point d'entrée serait la colonne E "émetteur".

Merci d'avance pour votre aide.;):)
 

Pièces jointes

  • Banques 2017.xlsx
    51.9 KB · Affichages: 43

job75

XLDnaute Barbatruc
Re,
Sur mon fichier d'origine, les cellules en colonne "E" ne sont pas toutes sous le même format (trop compliqué pour l'analyse). Pour simplifier, Est il possible donc de supprimer cette colonne et de n'afficher que les catégories.
Vous changez d'idée comme de chemise mais bon pas de problème, voyez le fichier (3) et la macro (un peu plus simple) :
Code:
Private Sub Worksheet_Activate()
Dim a, annee1, annee2, d1 As Object, d2 As Object, d3 As Object, d4 As Object, i%, derlig&, j&, v1#, v2#, v3#, v4#, x$
a = Array("BP", "BCP", "CDN") 'feuilles à consolider
annee1 = [E3]: annee2 = [G3]
Set d1 = CreateObject("Scripting.Dictionary")
Set d2 = CreateObject("Scripting.Dictionary")
Set d3 = CreateObject("Scripting.Dictionary")
Set d4 = CreateObject("Scripting.Dictionary")
d1.CompareMode = vbTextCompare 'la casse est ignorée
d2.CompareMode = vbTextCompare
d3.CompareMode = vbTextCompare
d4.CompareMode = vbTextCompare
For i = 0 To UBound(a)
    With Sheets(a(i))
        derlig = .Range("E" & .Rows.Count).End(xlUp).Row
        For j = 6 To derlig
            If IsDate(.Cells(j, 2)) Then 'sécutité
                v1 = 0: v2 = 0: v3 = 0: v4 = 0
                If IsNumeric(.Cells(j, 7)) Then 'sécurité
                    If Year(.Cells(j, 2)) = annee1 Then
                        If .Cells(j, 7) > 0 Then v1 = .Cells(j, 7) Else v2 = .Cells(j, 7)
                    ElseIf Year(.Cells(j, 2)) = annee2 Then
                        If .Cells(j, 7) > 0 Then v3 = .Cells(j, 7) Else v4 = .Cells(j, 7)
                    End If
                End If
                x = .Cells(j, 6)
                d1(x) = d1(x) + v1: d2(x) = d2(x) + v2
                d3(x) = d3(x) + v3: d4(x) = d4(x) + v4
            End If
        Next j
    End With
Next i
Application.ScreenUpdating = False
Range("C5:H" & Rows.Count).ClearContents
If d1.Count = 0 Then Exit Sub 'sécurité
[D5].Resize(d1.Count) = Application.Transpose(d1.keys) 'Transpose est limitée à 65536 lignes
[E5].Resize(d1.Count) = Application.Transpose(d1.items)
[F5].Resize(d2.Count) = Application.Transpose(d2.items)
[G5].Resize(d3.Count) = Application.Transpose(d3.items)
[H5].Resize(d4.Count) = Application.Transpose(d4.items)
[D5].Resize(d1.Count, 5).Sort [D5], xlAscending, Header:=xlNo 'tri
Columns("D:H").AutoFit 'ajustement largeur
End Sub
A+
 

Pièces jointes

  • Banques 2017(3).xlsm
    69.6 KB · Affichages: 37

gds77

XLDnaute Occasionnel
Bonjour Job 75,
Et non je ne change pas d'avis, étant novice je pense que vos solutions sont complémentaires. Mais depuis hier soir j'essaye de faire fonctionner votre macro. Mais comme j'ai rajouter une banque, impossible de l'intégrer dans les résultats.

Merci d'avance
 

sousou

XLDnaute Barbatruc
Pour ajouter une banque en l'état, tu modifies la ligne
Banques=array("BP",...) en ajoutant le nom de la feuille représentant la banque,

On pourrait faire mieux si par exemple pour reconnaitre les feuilles banques elle était appelée (exemple: Banque BP, Banque CA.... ect)
Je vais d'envoyer un exmple
Dans ce cas tu pourrais ajouter des feuilles banque et il n'y aurait pas de modification à faire
autre solution: mettre le nom de tes feuilles quelque part dans le fichier
 

gds77

XLDnaute Occasionnel
En fait mes banques existent déjà sur une table. J'ai réussi à prendre en compte mon autre banque, via la consolidation, j'ai du recopier toutes les lignes. Il y a surement un autre chemin pour que la feuille consolidation soit automatique, et la mise à jour à la dernière saisie mais je ne trouve pas.
 

job75

XLDnaute Barbatruc
Bonjour gds77, le forum,

Dans ce fichier (4) j'ai mis 2 feuilles SYNTHESE, vous garderez celle(s) que vous vous voulez.

Les 2 macros ont été revues :

- toutes les feuilles sont étudiées sauf la feuille "Table" et les feuilles SYNTHESE, plus besoin de liste

- les lignes TOTAL et S/TOTAL sont insérées avec leurs formules

- les bordures sont appliquées (plus de MFC).

Enfin j'ai effacé les formules des cellules K2 des feuilles des banques qui créaient des références circulaires.

A+
 

Pièces jointes

  • Banques 2017(4).xlsm
    76.8 KB · Affichages: 29

gds77

XLDnaute Occasionnel
Bonjour Job75,

Merci pour ce nouveau fichier. Mais ce Weekend j'ai essayé la macro sur mon fichier d'origine qui contient d'autres feuilles que mes 4 banques. Et le résultat affiché intègre le montant total des feuilles présentes. Etant non sachant en macro, je n'ai pas pu modifier vos sources de calcul.

A+
 

gds77

XLDnaute Occasionnel
Bonjour à tous,
Je reviens avec mon souci de consolidation de donnée automatique. Sur l'option d'un TCD, je voulais que ma feuille consolidation se mette à jour en fonction des infos des différentes banques(sans avoir à ressaisir). Mais la macro 'bug" et j'avoue que malgré des heures passées ce WE, je ne maitrise vraiment pas l'outil.
Merci d'avance
 

Discussions similaires

Réponses
7
Affichages
292

Membres actuellement en ligne

Statistiques des forums

Discussions
311 725
Messages
2 081 941
Membres
101 846
dernier inscrit
Silhabib