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 :

Faire des totaux en colonnes par type d'articles [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 113
    Par défaut Faire des totaux en colonnes par type d'articles
    Bonjour,

    J'ai le tableau suivant, et je voudrais calculer la somme pour tous les types similaires de fleurs

    ex :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Fleur      Prix    Nombre
    tulipe      10    2
    rose      8    2
    rose      12    3
    rose      16    4
    orchidée      22    4
    je voudrais obtenir :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Fleur      Prix    Nombre
    tulipe      10    2
    Total      10    2
    rose      8    2
    rose      12    3
    rose      16    4
    Total      36    9
    orchidée      22    4
    Total      22    4
    Quelqu'un saurait-il la procédure à suivre ?

    Je peux avoir beaucoup de noms de fleurs différents, donc je ne peux pas faire l'identification par nom.

    Merci d'avance pour votre aide !

  2. #2
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Ceci est prévu dans excel sans passer par vba
    tu trie tes données sur la colonne fleurs
    tu sélectionne ta plage de données
    puis
    Données>Sous totaux
    c'est tout

    PS: l'enregistreur de macro te donnera l'équivalent vba (à optimiser)

    Edit: le titre est loin du contenu

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 113
    Par défaut
    Merci,

    Je suis quand même passé par VBA pour coder cette petite fonctionnalité, voilà, si cela intéresse quelqu'un :

    Avec k = nombre de lignes:
    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
     
    While j <> k + k
        i = 1
           'Tant que la condition ci-dessous est vraie, on boucle
           If Cells(j, 1).Value <> "total" And _
           Cells(j, 1).Value <> "" And _
           Cells(j, 1).Value <> Cells(j - 1, 1).Value Then
                For Each cellule In Range(Cells(2, 1), Cells(k + k, 1))
                If Cells(j, 1).Value = Cells(j + i, 1).Value Then i = i + 1
                Next
                Rows(i + j).Insert
                Cells(i + j, 1).Value = "total"
                Cells(i + j, 1).HorizontalAlignment = xlHAlignLeft ' texte centré à gauche
                Cells(i + j, 4).Value = Application.WorksheetFunction.Sum(Range(Cells(i + j - 1, 4), Cells(j, 4))) 'calculer les totaux
                x = x + Cells(i + j, 4).Value
                Range(Cells(i + j, 4), Cells(i + j, 5)).HorizontalAlignment = xlHAlignRight 'centrer horizontalement
                Range(Cells(i + j, 4), Cells(i + j, 5)).Interior.ColorIndex = 30 ' mettre la cellule en bordeau
                Range(Cells(i + j, 4), Cells(i + j, 5)).Font.ColorIndex = 2 ' mettre en blanc
                Range(Cells(i + j, 1), Cells(i + j, 5)).Select
                With Selection
                .Font.Bold = True 'mets en gras
                .Borders(xlEdgeTop).Weight = xlMedium
                .Borders(xlEdgeTop).ColorIndex = 30
                .Borders(xlEdgeBottom).Weight = xlMedium
                .Borders(xlEdgeBottom).ColorIndex = 30
                End With
                j = j + 1
     
                Else: j = j + 1
     
            End If

  4. #4
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Ci joint la proposition des sub-totaux (déjà excel permet cela) traduite en vba (à l'aide de l'enregistreur de macros)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Dim plage As Range
    Dim LastLig As Long
    LastLig = Cells(Columns(1).Cells.Count, 1).End(xlUp).Row
    Set plage = Range("A1:C" & LastLig)
    With plage
        .RemoveSubtotal
        .Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal
        .Subtotal GroupBy:=1, Function:=xlSum, TotalList:=Array(2, 3), Replace:=True, SummaryBelowData:=True
    End With
    Set plage = Nothing
    Il faut trier d'abord les données (même pour ton code)

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 12/08/2013, 19h17
  2. Faire des calculs et choix du type de variables
    Par Boule2Bois dans le forum Débuter
    Réponses: 14
    Dernier message: 10/09/2012, 19h39
  3. faire des sommes de colonnes de plusieurs tables
    Par davidovski dans le forum Requêtes
    Réponses: 3
    Dernier message: 31/08/2012, 13h12
  4. comment faire des totaux mensuels
    Par gogo85 dans le forum MS SQL Server
    Réponses: 25
    Dernier message: 13/10/2011, 19h06
  5. [AC-2003] comment faire des totaux
    Par mangouste dans le forum IHM
    Réponses: 1
    Dernier message: 19/07/2011, 15h45

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