Insertion de lignes avec copie de formules et remise à zéro

jenor Messages postés 51 Statut Membre -  
ccm81 Messages postés 11033 Statut Membre -
Bonjour,

Dans le tableau excel que vous pourrez trouver ci-joint, je suis un paramètre x (colonne (X)) et je souhaite qu'un cumul de celui-ci soit fait (colonne (cumul de x)).
L'objet de ma demande consiste à insérer des lignes au tableau selon deux cas différents (ajout de type A ou ajout de type B : à faire grâce aux boutons correspondants)

Les deux premières lignes du tableaux montrent l'exemple (ajout de ligne de type A), on voit que le cumul de x se fait correctement (j'ai copié la formule à la main quoi) . Dans la troisième ligne tout est vide lorsque la ligne est ajoutée (ajout de type B). Dans la quatrième ligne, se trouve ce qui fait suite à un ajout de type B. C'est à dire que la colonne [cumul de x] prend comme nouvelle base la cellule de la colonne [x] de la même ligne.

J'espère avoir été assez clair ... sinon dites le moi.

Voici le fichier : https://www.cjoint.com/c/EGwmuV6M8Pg

Merci d'avance pour vos réponses :-)

2 réponses

  1. ccm81 Messages postés 11033 Statut Membre 2 434
     
    Bonjour

    As tu vraiment besoin de vba ?
    E19=SI(A19="";"";SI(B19="A";D19+E18;D19))
    devrait aller, du moins si j'ai compris

    Cdlmnt
    0
    1. jenor Messages postés 51 Statut Membre
       
      J'ai essayé avec ta formule, mais elle ne se copie pas correctement avec ma macro.
      Voici ma macro d'ailleurs (que j'ai légèrement modifié après qu'elle m'ait été donnée par un internaute) :


      Private Sub PutFormulas(cas As Integer)

      Dim z As Integer
      Dim i As Integer

      z = Sheets("Feuil1").Cells(65000, 1).End(xlUp).Row
      With ActiveSheet.Range("F" & z)
      i = z - 1

      .EntireRow.Insert

      Select Case cas
      Case 1
      Range("F" & z) = Range("F" & i)
      .Offset(0, -1).Formula = .Offset(-1, -1).Formula
      .Offset(0, -2).ClearContents
      .Offset(0, -3).Formula = .Offset(-1, -3).Formula
      Range("B" & z) = "A"
      .Offset(0, -5).ClearContents

      Case 2
      Range("F" & z) = Range("F" & i)
      'c'est là que je bloque, je ne vois pas comment remettre à zéro le cumul

      End Select
      End With
      End Sub

      Private Sub CommandButton1_Click()
      PutFormulas 1
      End Sub

      Private Sub CommandButton2_Click()
      PutFormulas 2
      End Sub

      0
  2. ccm81 Messages postés 11033 Statut Membre 2 434
     
    Je verrai ceci
    Bonjour

    Je verrai comme ceci

    Private Sub PutFormulas(cas As Byte)
    Dim z As Long, i As Long
    z = Sheets("Feuil1").Cells(Rows.Count, 1).End(xlUp).Row
    Rows(z).Insert
    i = z - 1
    With ActiveSheet
      Select Case cas
        Case 1
          .Range("F" & z) = .Range("F" & i)
          .Range("B" & z) = "A"
        Case 2
          .Range("B" & z) = "B"
          .Range("D" & z) = 0
        End Select
        .Range("E" & i).AutoFill Destination:=.Range("E" & i & ":E" & z)
      End With
    End Sub

    RQ. Je n'ai pas compris les .ClearContents qui s'appliquent à des cellules déjà vides
    http://www.cjoint.com/c/EGyoTDO7V5R

    Cdlmnt
    0