Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Recherche Somme Cumulé d'un code article

Guillaume8975

XLDnaute Nouveau
Bonjour à tous,

Je suis à la recherche d'une astuce sous excel pour me permettre de rechercher un article dans plusieurs onglets d'un même fichier Excel et de copier la somme cumulé se rapportant à cet article dans une autre feuille.

Excel A :
10 onglets = 10 Produits différents
Dans chaque onglet plusieurs colonnes de plusieurs composants.
Dans une colonne, un article correspondant à un composant, sous ce dernier, plusieurs lignes de volumes différents sur une période donnée. Un même composants peut se retrouver dans plusieurs produits et donc plusieurs onglets.

Excel B
Colonne A Liste des composants
Colonne B Volume de chaque composant quelque soit le produit. Je cherche cette formule me permettant de faire la synthèse de l'ensemble des produits !

Merci d'avance pour votre aide !

Guillaume
 

Guillaume8975

XLDnaute Nouveau
Vous trouverez ci-joint un exemple de ce que je souhaite avoir. j'ai synthétiser sur un seul excel en rajoutant une feuille. J'imagine que la formule sera identique si la réponse doit apparaitre sur un autre fichier
 

Pièces jointes

  • Classeur1.xlsx
    11.6 KB · Affichages: 51

Paf

XLDnaute Barbatruc
Bonjour Guillaume8975, gosselien,

une essai macro. Tel qu'il est, le code fonctionne sur le fichier joint

VB:
Private Sub CommandButton1_Click()
Dim TabTot, TabP, i As Long, ii As Long, j As Long, jj As Long, Ok As Boolean
Dim WBprod As Workbook, WComp As Worksheet, Ws As Worksheet, DerC As Long, DerL As Long
Set WComp = ActiveWorkbook.Worksheets("Liste Composants")
TabTot = WComp.Range("A2:B" & WComp.Range("A" & Rows.Count).End(xlUp).Row)
'Set WBprod = Workbooks.Open(ThisWorkbook.Path & "\nomfichier.xlsx") ' noms à adapter
For i = LBound(TabTot) To UBound(TabTot)
'    For j = 2 To WBprod.Worksheets.Count
    For j = 2 To Worksheets.Count
        Set Ws = Worksheets(j)
        DerC = Ws.Cells(2, Columns.Count).End(xlToLeft).Column
        DerL = Ws.Range("B" & Rows.Count).End(xlUp).Row
        TabP = Ws.Range(Ws.Cells(2, 2), Ws.Cells(DerL, DerC))
        For jj = 1 To DerC - 1
            If TabP(1, jj) = TabTot(i, 1) Then
                For ii = LBound(TabP, 1) + 1 To UBound(TabP, 1)
                   TabTot(i, 2) = TabTot(i, 2) + TabP(ii, jj)
                Next
            End If
        Next
        Erase TabP
        Set Ws = Nothing
    Next
Next
'WBprod.Close
WComp.Range("A2").Resize(UBound(TabTot, 1), 2) = TabTot
End Sub

Si les feuilles produits sont dans un autre classeur :
activer les lignes en commentaires
mettre en commentaire la ligne For j = 2 To Worksheets.Count

adapter les noms de répertoire et de fichier dans la ligne:
Set WBprod = Workbooks.Open(ThisWorkbook.Path & "\nomfichier.xlsx")

Attention dans la feuille "Produit B ", les données commencent 2 lignes plus bas que dans les autres , ce qui provoque un décalage et des résultats erronés .

A+
 

Guillaume8975

XLDnaute Nouveau
Bonjour à tous,

Merci pour votre retour.
Malheureusement le tableau croisé dynamique ne fonctionne pas car je reçois un fichier avec des fusions de ligne

Vous trouverez ci-joint le fichier que je reçois et la synthèse que j'aimerai recevoir.

Pensez-vous qu'une formule Excel suffit ou je dois passer par une macro ?
 

Pièces jointes

  • Classeur3.xlsx
    27 KB · Affichages: 41

Guillaume8975

XLDnaute Nouveau
En faite, j'ai du retravailler l'exemple aujourd'hui l'exemple représentatif pour enlever les données.
Il faudra que j'ajoute une ligne dans chaque onglet (20) je (dé)fusionne quelques lignes/colonnes.
Je reçois ce fichier chaque semaine, ça devient compliqué pour traiter l'information.
 
Dernière édition:

Guillaume8975

XLDnaute Nouveau
Bonjour PaF,

Je tiens à m'excuser pour l'envoi tardif du fichier.
Est ce qu'une macro peut modifier chaque onglet pour copier sur une seule feuille de calcul.
On pourrait partir alors sur un tableau croisé dynamique pour faire une synthèse des données.
 
Dernière édition:

Guillaume8975

XLDnaute Nouveau
En me levant ce matin, j'ai eu une idée.
Je pourrais faire un copier coller de cellule, le format ne change jamais. Il me faut just en lever la fusionn de la ligne 3.
Depuis l'onglet Liste composants, je fais un copier coller de F3 et G5 de l'onglet Product A. Puis cette formule doit decaler de +4 , soit J3 + K5.

Le nom de l'onglet ne change jamais ce qui facilite la copie des données d'une semaine à l'autre.

Existe t-il une formule qui permet de se décaler (+4 colonnes) ?

Merci
 

Guillaume8975

XLDnaute Nouveau
Merci Chris !!!
C'est exactement ce que je cherchais.
Il semble que ca plante lorsque je rajoute des composants dans un produit (voir onglet C).
Je peux me retrouver avec 20 composants par onglet.

Peux tu préciser les points suivants:
2 des titres cohérents dans les onglets : chaque composant doit avec les même titres sur la ligne 3
3 formule en A2 différente des autres

C'est normale les formules en colonne F dans liste composants ?

Un grand merci en tout cas.
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…