XL 2019 somme d'une plage après chaque saut de ligne

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Kaganaias

XLDnaute Nouveau
Bonjour,

J'ai 3 colonnes (A , B et C)
A est le nom du produit (produit 1, 2 etc.)
B est une donnée chiffrée associée au produit.

Les données chiffrées concernent le produit en A qu'entre deux espaces.

Problème: je veux faire la somme des données chiffrées du nom du produit en C (uniquement sur la ligne où "Produit" est renseigné) mais la plage de donnée est "aléatoire". Je souhaite que la formule somme "à tirer en C" s'adapte au "nombre" de chiffres.

En pièce jointe un exemple.

Je vous remercie,
 

Pièces jointes

Bonjour
Ce type de tableau sera inexploitable en dehors de la somme...

Crée plutôt un tableau structuré, avec une répétition du produit (masquée par une MFC) et une formule
Ainsi tu pourras ajouter des lignes, trier par produit, sans risquer des erreurs
 

Pièces jointes

Bonjour
merci pour votre réponse, il s'agit d'un tableau qui sort comme ça (je ne le construit pas).
Votre solution semble fonctionner mais je n'ai pas de connaissances sur la façon d'enregistrer les éléments que vous avez balisés comme Tableau1, [#Cette ligne];[PRODUIT ] etc. dans votre formule.

Je ne souhaite pas qu'il y ait répétition du produit à chaque ligne car cela implique que je le copie colle manuellement (or ce tableau m'est livré tel quel)

Merci.
 
RE

On peut retraiter en quelques clics par PowerQuery intégré à Excel et restituer un TCD
1720720174457.png

Sinon explique l'intérêt d'ajouter les sommes au tableau initial...
 
Bonsoir @Kaganaias et bienvenue sur XKD 🙂,
Bonsoir à tous 😉,

La formule suivante en C2 à recopier vers le bas :
=SI(A2="";"";SOMMEPROD(DECALER(B2;0;0;SIERREUR(EQUIV("*";A3:A999;0);999);1)))

nota : si un produit peut avoir plus de 999 lignes alors il faudra augmenter cette valeur.
 

Pièces jointes

Hello le fil

une autre possibilité par macro VBA
VB:
Sub CalculTotaux()
Dim Tabdata() As Variant

    With ActiveSheet
        LastLine = .Range("B" & .Rows.Count).End(xlUp).Row + 1
        Tabdata = .Range("A2:C" & LastLine).Value
        
        For i = LBound(Tabdata, 1) To UBound(Tabdata, 1)
            If Tabdata(i, 1) <> "" Or Tabdata(i, 2) <> "" Then
                Total = Total + Tabdata(i, 2)
            Else
                Tabdata(i, 3) = Total
                Total = 0
            End If
        Next i
        Range("A2:C" & LastLine) = Tabdata
    End With
End Sub
 
RE

On peut retraiter en quelques clics par PowerQuery intégré à Excel et restituer un TCD
Regarde la pièce jointe 1200424
Sinon explique l'intérêt d'ajouter les sommes au tableau initial...
Bonjour,
Je vous remercie,
j'ai mal balisé mon post: je ne suis pas sur une version tableur qui dispose de cette fonctionnalité (en réalité, je suis sur libre office calc, j'enregistre automatiquement les classeurs en .xlsx).

Je serai curieux de tester Power Query quand je pourrai me procurer une version récente d'excel.

Effectivement, je vais également proposer à l'initiateur du tableur de faciliter le travail sur le tableau: pas de sauts de lignes et la référence face au chiffre.

Cordialement
 
Bonsoir @Kaganaias et bienvenue sur XKD 🙂,
Bonsoir à tous 😉,

La formule suivante en C2 à recopier vers le bas :
=SI(A2="";"";SOMMEPROD(DECALER(B2;0;0;SIERREUR(EQUIV("*";A3:A999;0);999);1)))

nota : si un produit peut avoir plus de 999 lignes alors il faudra augmenter cette valeur.
Bonjour,
Je vous remercie, cette formule fonctionne parfaitement.
C'est précisément ce que je recherchais.

Je comprends que la fonction SOMMEPROD n'a qu'une matrice.
La fonction DECALER n'est usitée que pour la hauteur (les autres arguments de la formule étant: ligne 0, colonne 0, largeur 1)
Pour l'argument de la hauteur de la fonction DECALER, vous avez utilisé la formule EQUIV (assortie d'un SIERREUR) afin d'avoir une hauteur qui s'adapte à la "distance" entre les présences de caractères dans la colonne A ("Produit").

==> Pourquoi un SOMMEPROD et non un SOMME tout court? Vous l'avez mis dans l'hypothèse où j'aurais plus de critères que le seul produit?
==> pour quelle raison le SIERREUR ?
==> peu familier de la fonction EQUIV, pouvez vous m'indiquer pour quelle raison le 1er argument (valeur_cherchée) est "*" ?

Merci d'avance,
Cordialement
 
Hello le fil

une autre possibilité par macro VBA
VB:
Sub CalculTotaux()
Dim Tabdata() As Variant

    With ActiveSheet
        LastLine = .Range("B" & .Rows.Count).End(xlUp).Row + 1
        Tabdata = .Range("A2:C" & LastLine).Value
       
        For i = LBound(Tabdata, 1) To UBound(Tabdata, 1)
            If Tabdata(i, 1) <> "" Or Tabdata(i, 2) <> "" Then
                Total = Total + Tabdata(i, 2)
            Else
                Tabdata(i, 3) = Total
                Total = 0
            End If
        Next i
        Range("A2:C" & LastLine) = Tabdata
    End With
End Sub
Bonjour je vous remercie,
Comme l'indique chris, j'aurais dû préciser dans mon post que je n'utilise pas microsoft excel à proprement parler..
J'utilise calc. Dès lors, le VBA ne peut pas être reporté tel quel sur le module macro de libreoffice (LibreOffice Basic).
Je vais tout de même essayer avec l'option VBA support.
Cordialement
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 Tableau
Réponses
24
Affichages
1 K
Réponses
3
Affichages
485
Retour