Insérer Sous Totaux VBA

yass3400 Messages postés 1 Date d'inscription lundi 16 janvier 2012 Statut Membre Dernière intervention 16 janvier 2012 - 16 janv. 2012 à 19:29
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 - 17 janv. 2012 à 10:10
Bonjour Amis développeurs,

Je fais appel à vous afin de résoudre un petit problème que je rencontre !

Je construis actuellement sous VBA, un tableau d'amortissement d'emprunt.

Je souhaiterai insérer des sous totaux par année. Étant donné que chaque ligne correspond a un mois, je voudrais insérer une ligne "sous total de l'année x" toutes les 12 lignes à partir de A11. Les sous totaux concernent seulement les colonnes C,D,E (Intérêt, Amortissement, Mensualité).

Je me doute qu'il faut faire une boucle, mais je débute en VBA, et jai beaucoup de mal. Cela devrait être un jeu d'enfant pour vous

Merci d'avance

4 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 231
16 janv. 2012 à 19:55
Bonjour,

Oui ===>> Bon ===>>
qu'as-tu au moins commencé/tenté ?
sais-tu au moins (il faudra bien commencer par là) comment insérer une ligne toutes les 12 lignes ?
Deux indices :
1) il te faudra commencer par insérer la dernière ligne à insérer et remonter jusqu'à la première à insérer
2) comment savoir où commencer ? ===>> regarde ceci :
derligne = Range("A" & Rows.Count).End(xlUp).Row
  MsgBox "la dernière ligne remplie de la colonne A est la ligne " & derligne
  ou = (derligne \ 12) * 12
  MsgBox "la dernière ligne à insérer devra être insérée sous la ligne " & ou


=>> Montre nous, partir de cela, comment tu déterminerais les autres lignes à insérer (avec une boucle For ... to ... Next utilisant step -12)

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 231
16 janv. 2012 à 20:18
et (juste pour t'éveiller un peu) :
J'aurais pu écrire :
ou = derligne - derligne Mod 12

à la place de :
ou = (derligne \ 12) * 12


Voilà ! (l'essentiel est toujours d'accepter de commencer par le commencement)

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 231
16 janv. 2012 à 20:27
et si "à partir de la ligne 11" et pas depuis ligne 1 ===>> juste un peu d'arithmétique élémentaire ===>>>
ou = derligne - (derligne - 11) Mod 12


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 231
17 janv. 2012 à 10:10
Alors : tu avances un peu ?

Regarde :
Private Sub CommandButton1_Click()
  Static deja As Boolean
  Dim prem As Integer, derligne As Long, ou As Long, i As Long
  If deja Then Exit Sub ' ===>> pour ne pas risquer d'insérer lignes si déjà insérées une fois
  
  prem 11 '>> ici : la ligne ou figure ton tout premier mois
  derligne = Range("A" & Rows.Count).End(xlUp).Row
  ou = derligne - ((derligne - prem) Mod 12)
  For i = ou To prem + 12 Step -12
    Range("A" & i).Insert Shift:=xlShiftDown
  Next
  deja =  True
End Sub


Cela t'insérera une ligne après le 12ème mois de chaque groupe, le 1er groupe commençant à la ligne 11 de la colonne A.
Contrainte (évidente) : chaque groupe doit contenir les 12 mois et aucun blanc en colonne A entre la ligne 11 et la dernière ligne remplie.
Je t'ai ajouté une booléenne (deja) dont le rôle est d'éviter de réinsérer si déjà fait.

Te reste quoi ? ===>> à insérer maintenant sur chaque ligne tes formules Excel (et j'espère que tu sais au moins faire cela par VBA)


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0