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 :

Grouper par trimestre automatiquement mais pour une année définie-VBA [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2017
    Messages : 49
    Par défaut Grouper par trimestre automatiquement mais pour une année définie-VBA
    Bonjour,

    Je souhaite grouper automatiquement les dates que j'ai en trimestre: J'ai des date allant de 2015 jusqu'en 2018.
    Je veux grouper en trimestre que les dates de 2017.
    Par exemple je vais avoir ce genre:
    <2017, Q1, Q2, Q3, Q4, >2017
    j'ai pu grouper tout automatiquement, mais la date automatique est par défaut la première date de ma liste donc 2015 et la dernière est 2018.
    alors dans ce cas je modifie le champ manuellement!

    Comment je peux faire? je veux pas la date automatique de defaut, mais comment choisir la date début :01/01/2017 et fin : 31/12/2017? je peux le faire manuellement mais j'ai bcp de tableaux, je préfère avec le code VBA

    voici le code que j'utilise:

    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    Sub CreatePivotTableCompte()
    'PURPOSE: Creates a brand new Pivot table on a new worksheet from data in the ActiveSheet
     
    Dim sht As Worksheet
    Dim pvtCache As PivotCache
    Dim pvt As PivotTable
    Dim StartPvt As String
    Dim SrcData As String
    Dim y As Workbook
     
    Set y = Workbooks.Open("Z:\Base_de_données\Base_Para.xlsx")
    'Determine the data range you want to pivot
      lastrow = y.Sheets("TbCrx").Range("C" & Rows.count).End(xlUp).Row
      SrcData = y.Sheets("TbCrx").Name & "!" & Range("B1:F" & lastrow).Address(ReferenceStyle:=xlR1C1)
     
    'Open a new worksheet
      Set sht = y.Sheets("Compte")
     
    'Where do you want Pivot Table to start?
      StartPvt = sht.Name & "!" & sht.Range("A3").Address(ReferenceStyle:=xlR1C1)
     
    'Create Pivot Cache from Source Data
      Set pvtCache = ActiveWorkbook.PivotCaches.Create( _
        SourceType:=xlDatabase, _
        SourceData:=SrcData)
     
    'Create Pivot table from Pivot Cache
      Set pvt = pvtCache.CreatePivotTable( _
        TableDestination:=StartPvt, _
        TableName:="PivotTable1")
     
     pvt.AddDataField pvt.PivotFields("Montant Final"), , xlSum
     pvt.AddDataField pvt.PivotFields("Montant Tarif"), , xlSum
      'Add item to the Column Labels
        pvt.PivotFields("M/Y").Orientation = xlColumnField
     
      'Add item to the Row Labels
        pvt.PivotFields("Compte").Orientation = xlRowField
     
      'Position Item in list
        pvt.PivotFields("M/Y").Position = 1
     
        sht.PivotTables("PivotTable1").PivotFields("Somme de Montant Final").Caption = ChrW(931) & "Mnt Final"
        sht.PivotTables("PivotTable1").PivotFields("Somme de Montant Tarif").Caption = ChrW(931) & "Tarif"
     
     
     'Group Date Field by Month and Year
     
    pvt.RowAxisLayout xlTabularRow
    Set df = pvt.PivotFields("M/Y")
    df.LabelRange.Group _
    'j'ai mis False car je veux pas la date automatique, mais comment choisir la date début :01/01/2017 et fin : 31/12/2017?
    Start:=False, End:=False, by:=3, Periods:=Array(False, False, False, False, False, True, False)
    df.Caption = "Trimestre"
     
    lastrow2 = y.Sheets("Compte").Range("A" & Rows.count).End(xlUp).Row
    y.Sheets("Compte").Range("B6:O" & lastrow2).Style = "Currency"
     
    Set sht = y.Sheets("Compte")
    sht.Range("B4:J4").replace What:="Trimestre", Replacement:="Q", _
        LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
     
    y.Close savechanges:=True
    MsgBox ("Task Complete")
     
    End Sub
    merci d'avance pour vos aides!
    cheers!

  2. #2
    Membre Expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 871
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Je ne sais pas comment sont organisées tes données, mais si elles sont sous formes de listes tu peux carrément faire un TCD que tu filtre sur 2017 et où tu regroupes tes dates en trimestre (cela se fait tout seul et pas besoin de VBA)

    Dis nous comment sont organisées tes données et que contiennent-elles (c'est le type qui m'interesse car il faut respecter la confidentialité bien sûr).

    Eventuellement une capture d'écran par exemple si c'est possible

    A bientôt

  3. #3
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2017
    Messages : 49
    Par défaut
    Citation Envoyé par Igloobel Voir le message
    Bonjour,

    Je ne sais pas comment sont organisées tes données, mais si elles sont sous formes de listes tu peux carrément faire un TCD que tu filtre sur 2017 et où tu regroupes tes dates en trimestre (cela se fait tout seul et pas besoin de VBA)

    Dis nous comment sont organisées tes données et que contiennent-elles (c'est le type qui m'interesse car il faut respecter la confidentialité bien sûr).

    Eventuellement une capture d'écran par exemple si c'est possible

    A bientôt
    Nom : Date.png
Affichages : 916
Taille : 28,9 Ko


    voila! date format dd/mm/yyyy et j'obtient automatiquement Q1 Q2 Q3 et Q4

  4. #4
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2017
    Messages : 49
    Par défaut
    Citation Envoyé par Igloobel Voir le message
    Bonjour,

    Je ne sais pas comment sont organisées tes données, mais si elles sont sous formes de listes tu peux carrément faire un TCD que tu filtre sur 2017 et où tu regroupes tes dates en trimestre (cela se fait tout seul et pas besoin de VBA)

    Dis nous comment sont organisées tes données et que contiennent-elles (c'est le type qui m'interesse car il faut respecter la confidentialité bien sûr).

    Eventuellement une capture d'écran par exemple si c'est possible

    A bientôt
    et voici la date, j'utilise la colonne B: M/Y
    Nom : Date.png
Affichages : 892
Taille : 11,7 Ko

  5. #5
    Membre Expert
    Avatar de Igloobel
    Homme Profil pro
    Développeur ERP - VBA et Formateur bureautique
    Inscrit en
    Septembre 2005
    Messages
    1 871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur ERP - VBA et Formateur bureautique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 871
    Billets dans le blog
    1
    Par défaut
    Ok

    super !


    Questions subsidiaires :

    Est-ce que ta colonne B est une formule basée sur ta colonne A ?
    Et est-ce que ton deuxième tableau contient tes données sources ?

  6. #6
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Juin 2017
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2017
    Messages : 49
    Par défaut
    Citation Envoyé par Igloobel Voir le message
    Ok

    super !


    Questions subsidiaires :

    Est-ce que ta colonne B est une formule basée sur ta colonne A ?
    Et est-ce que ton deuxième tableau contient tes données sources ?
    oui la colonne B est basé sur la colonne A:
    j'ai mis toutes les date de la colonne A en format mmm-yy mais sachant que la colonne B est initialisé au début du mois à chaque fois!
    par exemple si en A j'ai 23/01/2017 alors en B j'aurais Janv-17 (mais c'est 01/01/2017)
    j'étais obligé à faire ça pour grouper! sans ce changement rien ne se groupe automatiquement!

  7. #7
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 974
    Par défaut
    Bonjour
    par exemple si en A j'ai 23/01/2017 alors en B j'aurais Janv-17 (mais c'est 01/01/2017)
    j'étais obligé à faire ça pour grouper! sans ce changement rien ne se groupe automatiquement!
    Je crois que la fonction standard de excel te permet de récupérer la date format mois/an : à insérer en colonne B
    =TEXTE(MOIS.DECALER(A2;0);"mmm aa")
    puis comme a recommandé Igloobel , un TCD avec des segments et tu aura le bonheur
    Bonne continuation

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 28/01/2010, 11h35
  2. [POO] Equivalent de getElementById mais pour une class ?
    Par boutmos dans le forum Général JavaScript
    Réponses: 19
    Dernier message: 29/04/2008, 10h19
  3. Requete grouper par trimestre
    Par Beamish dans le forum Requêtes et SQL.
    Réponses: 11
    Dernier message: 05/10/2007, 09h48
  4. Réponses: 1
    Dernier message: 24/08/2006, 18h19
  5. grouper par trimestre
    Par lazzeroni dans le forum Oracle
    Réponses: 3
    Dernier message: 30/05/2006, 15h18

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