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

jenor Messages postés 51 Date d'inscription   Statut Membre Dernière intervention   -  
ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   -
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 :-)
A voir également:

2 réponses

ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
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
jenor Messages postés 51 Date d'inscription   Statut Membre Dernière intervention  
 
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
ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
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