Somme ligne variable

ChaiLee Messages postés 13 Statut Membre -  
ChaiLee Messages postés 13 Statut Membre -
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. titeufdu89 Messages postés 387 Statut Membre 38
     
    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
  2. ChaiLee Messages postés 13 Statut Membre
     
    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. titeufdu89 Messages postés 387 Statut Membre 38
       
      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. ChaiLee Messages postés 13 Statut Membre
       
      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
  3. Raymond PENTIER Messages postés 58211 Date d'inscription   Statut Contributeur Dernière intervention   17 480
     

    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. Raymond PENTIER Messages postés 58211 Date d'inscription   Statut Contributeur Dernière intervention   17 480
       
      Comment sont renseignées tes lignes ? Une à une au clavier, ou par une procédure d'importation ?
      0
  4. titeufdu89 Messages postés 387 Statut Membre 38
     
    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. ChaiLee Messages postés 13 Statut Membre
       
      Cher Titeuf,

      Quel talent!!!
      un grand MERCI
      je te recontacterai avec plaisir;)
      Bonne soirée
      Chaiii
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. JvDo Messages postés 1924 Date d'inscription   Statut Membre Dernière intervention   859
     
    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