Somme ligne variable

Bonjour,

J'aimerais, si possible sans développer de macro, trouver une formule pour copier une somme avec un nombre de ligne variable

le but est de copier la formule "stock" sur toutes les lignes stock



ça parait simple, mais je sèche
cijoint une photo, j'ai pas trouvé le lien pour la pcs jointe xls
Un grand merci par avance pour votre aide

Chaiii

5 réponses

  1. Bonsoir,

    Le nombre de lignes est amené a changer ou il est fixe?
    Pour poster un fichier, tu peux utiliser le site gratuit suivant si jamais : https://www.cjoint.com/
    Ce site génère un lien d'accès pour télécharger le fichier.

    Jc
    0
    1. bonsoir Jc,

      oui le nombre de ligne est amené à changer, c'est là le problème, et il y a env 4000 codes produits...

      merci pour le site de pcs jointe, voici le lien
      https://www.cjoint.com/c/HLjvKbHA3BZ

      Bonne soirée
      Chaiii
      0
      1. Salut Chaiii,

        Pour ma part je vois pas de solution autre qu'en VBA pour avoir une formule adaptative si tu es susceptible d'ajouter des lignes dans ton tableau régulièrement...

        Jc
        0
      2. oui c'est des extracts de logiciel d'entreprise, le nombre de lignes est complètement variables
        en VBA je suis toujours preneur, mais je suis pas expert
        Tu penses à une macro pas trop lourde?
        Chaiii
        0
    2. Contributeur

      Bonjour.

      Peut-être une piste : Il existe une solution efficace et sans macro, la fonction DONNÉES/Sous-Total, pour obtenir en D9 la somme D2:D8.
      Il restera à gérer les reports de stocks ...

      0
      1. Contributeur
        Comment sont renseignées tes lignes ? Une à une au clavier, ou par une procédure d'importation ?
        0
    3. Bonjour,

      Ci-joint une solution avec VBA
      https://www.cjoint.com/c/HLkj0x2hllN

      Le code en question est le suivant :
      Sub ajout_formule_stock()
      Dim der_col As Long, i As Long, deb As Long
      der_col = Range("XV1").End(xlToLeft).Column
      
      For i = 2 To Range("A66536").End(xlUp).Row
          If Range("B" & i) = "stock" Then
          deb = i - 1
              Do While deb > 1 And Range("B" & deb) <> "stock"
              deb = deb - 1
              Loop
          deb = deb + 1
          Range("D" & i).FormulaR1C1 = "=RC[-1]+SUM(R" & deb & "C:R[-1]C)"
          Range("D" & i).AutoFill Destination:=Range(Cells(i, 4), Cells(i, der_col)), Type:=xlFillDefault
          End If
      Next i
      End Sub
      


      Il recherche sur toute la longueur du tableau les cellules qui contiennent le mot "stock" et ajoute sur ces lignes formule somme additionnant les lignes située au dessus jusqu'au précédant "stock" + la valeur de la cellule de gauche de la ligne stock en question. Enfin la formule est recopiée dans toutes les colonnes non vides du tableau en question.

      Bonne journée
      0
      1. Cher Titeuf,

        Quel talent!!!
        un grand MERCI
        je te recontacterai avec plaisir;)
        Bonne soirée
        Chaiii
        0
    4. Bonjour à tous,

      Un SOMMEPROD devrait faire l'affaire.
      En D9, tu mets =SOMMEPROD(($A$2:$A8=$A9)*D$2:D8)+C9 que tu recopies jusqu'en BB9.

      Tu sélectionnes D9:BB9, tu fais un copier (CTRL+C).
      Tu sélectionnes D13, puis en maintenant la touche CTRL enfoncée, tu sélectionnes D20, D24, D32, D38.
      Tu fais un coller (CTRL+V).

      J'espère que tu n'as pas 100.000 lignes à traiter.

      Cordialement
      0