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 :

Calcul de sommes répétées toutes les 3 lignes


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Octobre 2015
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2015
    Messages : 15
    Points : 7
    Points
    7
    Par défaut Calcul de sommes répétées toutes les 3 lignes
    Bonjour,
    Je souhaite que les totaux de plusieurs lignes soient calculés automatiquement dans une cellule d'une colonne différente.
    Je joins un fichier Excel avec les sommes en jaune à calculer automatiquement.
    Merci par avance pour votre aide.
    Stéphane
    Fichiers attachés Fichiers attachés

  2. #2
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 240
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 240
    Points : 5 655
    Points
    5 655
    Par défaut
    Bonjour,
    Formule à utiliser en celluleF7, et à tirer vers le bas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI($D7="total";INDIRECT("E"&LIGNE()-2)+INDIRECT("E"&LIGNE()-1);"")
    Cdlt

  3. #3
    Membre émérite Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Points : 2 594
    Points
    2 594
    Par défaut
    Bonjour Stéphane, bonjour le forum,

    Essaie comme ça :
    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
    Sub Macro1()
    Dim O As Worksheet 'déclare la variable O (Onglet)
    Dim DL As Integer 'déclare la variable DL (Dernière Ligne)
    Dim PL As Range 'déclare la variable PL (PLage)
    Dim T As Double 'déclare la variable T (Total)
    Dim CEL As Range 'déclare la variable CEL (CELlule)
     
    Set O = Worksheets("Feuil1") 'définit l'onglet O
    DL = O.Cells(Application.Rows.Count, "D").End(xlUp).Row 'définit la dernière ligne éditée de la colonne D de l'onglet O
    Set PL = O.Range("D5:D" & DL) 'définit la plage PL
    For Each CEL In PL 'boucle sur toutes les cellules CEL de la plage PL
        If CEL.Value = "montant" Then 'condition : si la cellule vaut "montant"
            T = T + CEL.Offset(0, 1).Value 'définit le total T
        Else 'sinon
            CEL.Offset(0, 2).Value = T 'envoie de total dans la colonne F
            T = 0 'vide le total
        End If 'fin de la condition
    Next CEL ' prochaine cellule de la boucle
    End Sub
    À plus,

    Thauthème

    Je suis Charlie

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Octobre 2015
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2015
    Messages : 15
    Points : 7
    Points
    7
    Par défaut
    Bonjour Thautheme,
    Merci pour ta réponse,

    Cela fonctionne très bien à partir du moment où on retient le terme "montant" que j'ai indiqué (peut-être à tort) dans le fichier test.
    Est-ce modifiable si le libellé de chaque cellule n'est pas systématiquement "montant" mais un libellé aléatoire ? Le libellé "Total" reste inchangé par contre.

    Merci.

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Octobre 2015
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2015
    Messages : 15
    Points : 7
    Points
    7
    Par défaut
    Bonjour Arturo83,
    Merci pour ton aide.

  6. #6
    Membre émérite Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Points : 2 594
    Points
    2 594
    Par défaut
    Bonjour le fil, bonjour le forum,

    Alors comme ça :

    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
    Sub Macro1()
    Dim O As Worksheet 'déclare la variable O (Onglet)
    Dim DL As Integer 'déclare la variable DL (Dernière Ligne)
    Dim PL As Range 'déclare la variable PL (PLage)
    Dim T As Double 'déclare la variable T (Total)
    Dim CEL As Range 'déclare la variable CEL (CELlule)
     
    Set O = Worksheets("Feuil1") 'définit l'onglet O
    DL = O.Cells(Application.Rows.Count, "D").End(xlUp).Row 'définit la dernière ligne éditée de la colonne D de l'onglet O
    Set PL = O.Range("D5:D" & DL) 'définit la plage PL
    For Each CEL In PL 'boucle sur toutes les cellules CEL de la plage PL
        If CEL.Value <> "Total" Then 'condition : si la cellule ne vaut pas "Total"
            T = T + CEL.Offset(0, 1).Value 'définit le total T
        Else 'sinon
            CEL.Offset(0, 2).Value = T 'envoie de total dans la colonne F
            T = 0 'vide le total
        End If 'fin de la condition
    Next CEL ' prochaine cellule de la boucle
    End Sub
    À plus,

    Thauthème

    Je suis Charlie

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Octobre 2015
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2015
    Messages : 15
    Points : 7
    Points
    7
    Par défaut
    Génial, c'est exactement ce que je voulais.
    Un grand merci pour ton aide et ta réactivité.

  8. #8
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re
    bonjour je te propose en vba ceci
    l'avantage comme ma demo animée le montre tu peux avoir des plage différente en terme de nombre de lignes pour chaque sommes
    bien entendu je ne prends en consideration que les cellules"Total" comme tu l'a demandé
    le code n'est pas tres compliqué
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub test()
        Dim CEL1 As Range, CEL2 As Range, i As Long
        Set CEL1 = [D5]    'on precise la premiere cellule en "D" contenant le mot"Montant" ou autre(c'est celle qui doit etre prise en compte pour le calcul somme de la premiere plage
        For i = 5 To Cells(Rows.Count, "D").End(xlUp).Row
            If Cells(i, "D") = "Total" Then
                Set CEL2 = Cells(i - 1, "D")
                Cells(i, "D").Offset(0, 2).Formula = "=SUM(" & Replace(Range(CEL1.Offset(0, 1), CEL2.Offset(0, 1)).Address, "$", "") & ")"
                Set CEL1 = Cells(i + 1, "D")
            End If
        Next
    End Sub
    demo animée
    Nom : demo5.gif
Affichages : 120
Taille : 227,3 Ko
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Octobre 2015
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2015
    Messages : 15
    Points : 7
    Points
    7
    Par défaut Macro VBA pour calcul et addition de sommes répétées toutes les 3 lignes
    Bonjour le forum,
    Je reviens sur le sujet pour une demande complémentaire si une aide est possible.

    L'objectif est de sommer les lignes de totaux calculés, peu importe le nombre de lignes dès lors qu'elles ont la même classification. Je mets un exemple pour clarifier mon propos.

    Merci par avance pour votre aide.
    Stéphane
    Fichiers attachés Fichiers attachés

  10. #10
    Futur Membre du Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Octobre 2015
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2015
    Messages : 15
    Points : 7
    Points
    7
    Par défaut
    Bonjour le forum,
    Personne pour m'aider ?
    Merci par avance.
    Stéphane

Discussions similaires

  1. Réponses: 2
    Dernier message: 24/03/2017, 15h22
  2. Faire une somme toutes les n lignes
    Par collosus dans le forum R
    Réponses: 3
    Dernier message: 30/04/2013, 14h19
  3. La somme de toutes les lignes extrait d'un fichier
    Par nancy169 dans le forum kettle/PDI
    Réponses: 1
    Dernier message: 18/06/2012, 09h08
  4. Numérotation automatique toutes les 5 lignes
    Par sfournis dans le forum Mise en forme
    Réponses: 3
    Dernier message: 10/12/2008, 15h08
  5. Calculer la somme de tous les champs texte
    Par Maroxye dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 26/06/2008, 14h32

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