Calcul sur différentes feuilles avec total

Bonjour,

Bon je suis un peu newbie alors ne m'en veuillez pas trop, je vais essayer de bien expliquer ce que je recherche.

J'ai un tableau de clients + Chiffres d'affaire réparti sur différentes feuilles (une par mois en fait avec une derniere feuille qui recapitule l'ensemble de l'année.

Je souhaite totaliser les client A, B, C... mais ils ne sont pas au meme emplacement de cellule selon les feuilles.

En gros cela donne : Feuille janvier ; client A en A1 et son chiffre d'affaire en B1, Feuille Février Client A en A3 avec son CA en B3...

Comment faire pour totaliser tous le CA de chaque client dans ma feuille récap automatiquement?

Vous remerciant par avance (s'il existe une formule simple à mettre en place je suis preneur car pas très doué )

Mets un exemple de ton fichier en PJ. On comprendra mieux ce que tu veux.

Bonjour Richard,

c'est vrai qu'un fichier (un peu épuré s'il y a des choses confidentielles) pourrait bien aider.

Sinon, ce que je te propose, c'est un peu bourin mais ça devrait marcher.

En gros si tu as une liste de clients dans ta feuille récapitulative, avec la fonction sommeprod, du devrait t'en sortir, le problème c'est que tu dois faire une fonction par feuille mais ça devrait t'éviter de faire une macro VBA...

En clair, cette fonction multiplie des matrices, si tu fais un test dans une partie, le résultat dans la matrice sera 0 ou 1 (résultat du test) et si tu mets une matrice de données (ton CA ici) elle va les sommer en fonction des lignes qui valident le test. Si c'est pas très clair, j'imagine que tu trouveras plus d'infos ailleurs (ce forum, site du zero, ...)

Sinon en gros, en admettant que dans ta feuille récapitulative, tu es une liste de client dans la colonne A et le chiffre d'affaire cumulé que tu veux avoir en B, met en B2 (laisse la ligne pour l'entête ou libre):

=sommeprod((FeuilleJanvier!$A$1:$A$999=A2)*(FeuilleJanvier!$B$1:$B$999))+

sommeprod((FeuilleFevrier!$A$3:$A$999=A2)*(FeuilleFevrier!$B$3:$B$999))+

Et comme ça pour chaque mois, ça devrait marcher, il faut juste bien faire attention que tes matrices ($A$1:$A$999 , ...) soient bien de la même dimension au sein de la même fonction sommeprod

Ici, 999 c'est à titre d'exemple à toi de voir ce qui t'arrangerais le mieux, mais tu peux aussi prendre des cellules vides, ça n'influencera pas ton calcul!

Une fois que cette fonction marche bien en B2 (ou B3, bref...) vérifie les $ des matrices et fais défiler la formule jusqu'à ton dernier client et normalement, tadam!

Voilà, en espérant avoir été assez clair!

Merci pour vos réponses,

Je joins un fichier simplifié; je souhaite simplement que dans ma feuille récap annuelle LA CA par client soit cumilé en sachant que les clients ne sont pas tous situés dans la meme cellule selon les feuilles.

Encore merci pour votre aide

Richard

24analyse-catest.xlsx (17.85 Ko)

Bonjour

Voir fichier joint :

Amicalement

Nad

Bonjour Richard 1360 le forum

voilà la macro pour faire ce que tu veux

a+

papou

Sub copier()
    Dim i&, fin&, aa As Variant, bb As Variant, cc As Variant, Ws As Worksheet, mondico As Object, j&, a&, temp As Variant
    With Feuil5
        .Cells.Clear
        For Each Ws In Worksheets
            If Ws.Name <> "Feuil1" And Ws.Name <> "TOTAL ANNEE" Then
                fin = Ws.Range("A" & Rows.Count).End(xlUp).Row
                Ws.Range("A3:B" & fin).Copy .Range("A" & Rows.Count).End(xlUp).Offset(1, 0)
            End If
        Next Ws
        aa = .Range("A2:B" & .Range("A" & Rows.Count).End(xlUp).Row)
        Set mondico = CreateObject("Scripting.Dictionary")
        For i = 1 To UBound(aa)
            If Not mondico.Exists(aa(i, 1)) Then mondico.Add aa(i, 1), aa(i, 1)
        Next i
        cc = Application.Transpose(mondico.Items)
        For i = 1 To UBound(cc)
            For j = 1 To UBound(cc)
                If cc(i, 1) < cc(j, 1) Then
                    temp = cc(i, 1)
                    cc(i, 1) = cc(j, 1)
                    cc(j, 1) = temp
                End If
            Next j
        Next i
        ReDim bb(UBound(cc), 2)
        For i = 1 To UBound(cc)
            For a = 1 To UBound(aa)
                If cc(i, 1) = aa(a, 1) Then bb(i, 1) = aa(a, 1): bb(i, 2) = bb(i, 2) + aa(a, 2)
            Next a
        Next i
    End With
    fin = Feuil4.Range("A" & Rows.Count).End(xlUp).Row
    If fin < 3 Then fin = 3
    Feuil4.Range("A3:B" & fin).ClearContents
    Feuil4.Range("A3").Resize(UBound(bb), 2) = bb
    Feuil5.Cells.Clear
End Sub

Merci A tous pour vos réponses c'est super!

Spécial thanks à Nad c'est exactement ce que je voulais

Bonne soirée

Richard

PS: je clique ou pour signaler le pb résolu ?

Bonsoir Richard1360 le forum

ton fichier en retour avec les totaux

a+

papou

28richard1360.xlsm (79.14 Ko)
Rechercher des sujets similaires à "calcul differentes feuilles total"