Problème : macro ou formule?

Bonjour à tous,

J'ai besoin de votre aide :

J'ai une base de données avec 3 colonnes :

1) Produit

2) Composant

3) Surface

Le même produit A, a plusieurs composants a, b, c...

J'aimerai, via une macro ou une formule, automatiser l'addition des surfaces des différents composants d'un même produit.

Je joins le fichier ça sera peut être plus clair...

Merci d'avance à tous ceux qui auraient une idée...

Martin

9classeur2.xlsx (8.94 Ko)

Bonjour,

La proposition habituelle.

Les données mises sous forme de tableau et l'utilisation d'un TCD (tableau croisé dynamique).

Cdlt.

5classeur2.xlsx (19.43 Ko)

Bonsoir

Ci joint le fichier devrait vous convenir

Je l'ai commenté pour vous expliquer les détails

Sub Lecture_de_nomenclatures()

'Recherche derniere ligne de produite renseignée en colonne G
Derniere_cellule_G = Range("G65536").End(xlUp).Row

'Recherche derniere ligne de produite renseignée en colonne A
Derniere_cellule_A = Range("A65536").End(xlUp).Row

'Surface en type décimal
Dim surface As Double

'On efface les lignes deja presentes en colonne H et I sauf les titres
Sheets("Feuil1").Range("H2:I" & Derniere_cellule_G).Delete

' J'initialise les variables
composant_additionne = ""
surface = 0

'On boucle sur les produits à traiter
For Each c In Sheets("Feuil1").Range("G2:G" & Derniere_cellule_G)

        'Produit n est pas vide ( cellule non vide )
        If c <> "" Then

            'Je balaie les nomenclatures
            For Each d In Sheets("Feuil1").Range("A2:A" & Derniere_cellule_A)

            'Si ma lettre en colonne G est dans une des nomenclatures
            If c = d Then

                        If composant_additionne <> "" Then
                        'si on accumule les noemnclatures
                        composant_additionne = composant_additionne & " + " & d.Offset(0, 1)
                        Else
                        'si on ajoute le premier composant
                        composant_additionne = d.Offset(0, 1)
                        End If
            ' je somme les surfaces
            surface = surface + CDbl(d.Offset(0, 2).Value)
            End If

            Next

        End If
'je reporte mes valeurs et totaux => offset (0,1) veut dire je me decale d'une case à droite par rapport à c ( etant la colonne G)
c.Offset(0, 1) = composant_additionne
c.Offset(0, 2) = surface

'je repasse à vide pour ne pas sommer ma prochaine recherche
composant_additionne = ""
surface = 0

Next

End Sub

Cdt,

7nomenclature.xlsm (20.41 Ko)

Re,

J'ai apporté 2 modifications au fihier initial.

1 - Ajout bouton +/- pour développer ou réduire le champ Composant

2 - Actualisation automatique (VBA) à l'activation de la feuille TCD.

A te relire.

Cdlt.

4martincl.xlsm (25.70 Ko)

Bonjour, Salut à tous !

Une simple formule suffit :

=SOMME.SI($A$2:$A$22;G2;$C$2:$C$22)

Cordialement.

Erreur !...

bonjour

une contribution intégralement automatisée

7martincl.xlsx (9.53 Ko)

cordialement

Rechercher des sujets similaires à "probleme macro formule"