yass3400
Messages postés1Date d'inscriptionlundi 16 janvier 2012StatutMembreDernière intervention16 janvier 2012
-
16 janv. 2012 à 19:29
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 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
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018209 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
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018209 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
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018209 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
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018209 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