IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Insertion d'une ligne sous-total à chaque changement d'année [Toutes versions]


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 6
    Points : 5
    Points
    5
    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

  2. #2
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 207
    Points : 14 362
    Points
    14 362
    Par défaut
    Bonjour, tu ajoutes une formule en colonne G :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    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

  4. #4
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 207
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 207
    Points : 14 362
    Points
    14 362
    Par défaut
    En suivant mon idée, le libellé peut se rajouter par macro :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Merci c exactement ce que je voulais!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 25/04/2015, 16h37
  2. [XL-2007] Insertion d'une ligne avec sous-totaux
    Par VIPNO dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 09/02/2012, 16h41
  3. Datagrid - rajouter une ligne sous chaque enregistrements
    Par slacky dans le forum Windows Presentation Foundation
    Réponses: 0
    Dernier message: 21/07/2011, 13h44
  4. comment faire insertion par une transaction sous access
    Par iam dans le forum Bases de données
    Réponses: 1
    Dernier message: 26/04/2006, 14h34
  5. Requete insertion dans une table sous delphi?
    Par EssaiEncore dans le forum Bases de données
    Réponses: 5
    Dernier message: 09/01/2006, 15h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo