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

Fermé
jenor Messages postés 51 Date d'inscription mercredi 10 juin 2015 Statut Membre Dernière intervention 24 juillet 2015 - Modifié par jenor le 22/07/2015 à 14:29
ccm81 Messages postés 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 - 24 juil. 2015 à 16:43
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 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 2 404
22 juil. 2015 à 19:15
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 mercredi 10 juin 2015 Statut Membre Dernière intervention 24 juillet 2015
Modifié par jenor le 24/07/2015 à 10:57
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 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 2 404
Modifié par ccm81 le 24/07/2015 à 16:45
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