Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 12/12/2011, 14h05   #1
Invité de passage
 
Homme
Inscription : décembre 2011
Messages : 6
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : décembre 2011
Messages : 6
Points : 0
Points : 0
Par défaut Insertion d'une ligne sous-total à chaque changement d'année

Bonjour,

J'utilise une macro afin de calculer un tableau d'amortissement et je n'arrive pas à écrire une macro afin d'insérer une ligne de sous total après chaque changement d'année.
Le problème étant que l'insertion de cette ligne doit prendre en considération le mois. Je m'explique. La toute première ligne de sous total ne s'insère pas obligatoirement toujours au même endroit, tout dépend du nombre de mois qui reste avant la fin de l'année.

Ex: Date de souscription: 02/05/2011 il reste 7 mois avant la fin de l'année ; l'insertion se fait donc à la 7ème ligne... 04/09/2011 il reste 3 mois avant la fin de l'année ; l'insertion se fait donc à la 3ème ligne etc ....

Vous trouverez en fichier joint le tableau d'amortissement pour une meilleur compréhension.

J'ai passé le week end dessus et je n'arrive toujours pas à trouver une solution qui marche, je commence à désespérer...

Merci beaucoup pour vos réponses!

projet.rar
guillaume30c est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2011, 14h50   #2
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
Bonjour, tu ajoutes une formule en colonne G :

Code :
1
2
3
Dim Plage As Range
Set Plage = Range([A10], Cells(Rows.Count, 1).End(xlUp))
Plage.Offset(, 6).FormulaR1C1 = "=Year(RC1)"
Tu inclues la colonne G dans le tableau servant aux sous-totaux et tu fais la rupture dessus.
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2011, 15h31   #3
Invité de passage
 
Homme
Inscription : décembre 2011
Messages : 6
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : décembre 2011
Messages : 6
Points : 0
Points : 0
Merci pour cette réponse aussi rapide!
C'est une bonne idée de vouloir se référencer à la colonne G seulement je souhaite intégrer la ligne Total dans le même tableau et non sur un autre:

Période --- Capital Mensualité Intérêt Amortissement K restant

10/09/11 --- 50000 -- 500 --- 100 ---- 400 ------- 49600
10/10/11 --- 49600 -- 500 --- 90 ---- 410 ------- 49190
10/11/11 --- 49190 -- 500 --- 80 ---- 420 ------- 48810
10/12/11 --- 48810 -- 500 --- 70 ---- 430 ------- 48370

Total année 2011 --- 2000 --- 360 .......

10/01/12 etc....

C'est pas évident mais je pense qu'il doit bien y avoir une astuce!

Merci
guillaume30c est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2011, 16h03   #4
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
En suivant mon idée, le libellé peut se rajouter par macro :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Sub SousTotaux()
    Dim Plage As Range, c As Range
    Set Plage = Range([A9], Cells(Rows.Count, 1).End(xlUp))
    Plage.Offset(, 6).FormulaR1C1 = "=Year(RC1)"
    Columns(7).NumberFormat = "0000"
    [G9] = ""
    Set Plage = Plage.Resize(, 7)
    Plage.RemoveSubtotal
    Plage.Subtotal GroupBy:=7, Function:=xlSum, TotalList:=Array(3, 4, 5), _
        Replace:=True, PageBreaks:=False, SummaryBelowData:=True
    Set Plage = Plage.Resize(Plage.Rows.Count + 2, 1)
    For Each c In Plage
        If Left(c.Offset(, 6).Value, 5) = "Total" Then
            c.Offset(, 6).Copy c
        End If
    Next c
    Columns(7).Hidden = True
End Sub
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 12/12/2011, 16h17   #5
Invité de passage
 
Homme
Inscription : décembre 2011
Messages : 6
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : décembre 2011
Messages : 6
Points : 0
Points : 0
Merci c exactement ce que je voulais!
guillaume30c est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h35.


 
 
 
 
Partenaires

Hébergement Web