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

Excel Discussion :

Somme plage cellules sous condition sur plusieurs feruilles


Sujet :

Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    electro-mecanicien
    Inscrit en
    Janvier 2019
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lot (Midi Pyrénées)

    Informations professionnelles :
    Activité : electro-mecanicien
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2019
    Messages : 3
    Par défaut Somme plage cellules sous condition sur plusieurs feruilles
    Bonjour à tous,
    je viens vers vous pour résoudre mon problème.
    J'ai un tableau identique sur 12 onglets (JANVIER à DECEMBRE). Colonne A2 à A53 = des chiffres Colonne B2 à B53 des noms.
    Je voudrai, sur un onglet Compte, en B3 renseigner un nom et en D3 avoir la somme de tous les chiffres correspondants à ce nom ( et non pas la somme des noms!).
    Que ce soit une formule Excel ou de la Macro, je prends.
    Espérant m'être fais comprendre, je remercie par avance toute l'aide que vous m'apporterez.

    jfada

  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, et bonne année

    là comme ça vite fait plusieurs solutions s'offre à toi avec des formules


    1) =SOMME.SI()
    =SOMME.SI.ENS()

    2)=BDSOMME()

    3) faire un TCD

    4) A condtion que ton tableau soit par nom tu peux aussi utiliser la fonction SOUS-TOTAL (Donnés - plan - Sous-total)

    5) la formule =SOUS.TOTAL()

    6) =SOMMEPROD()

    et la liste n'est pas exaustive



    voilà à toi de voir

    et donne nous plus de détail pour te conseiller sur quelle formule plutôt qu'une autre
    si tu peux (pas de donées sensible) envoi une(des) capture(s) écran(s)


    A bientôt

  3. #3
    Futur Membre du Club
    Homme Profil pro
    electro-mecanicien
    Inscrit en
    Janvier 2019
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lot (Midi Pyrénées)

    Informations professionnelles :
    Activité : electro-mecanicien
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2019
    Messages : 3
    Par défaut
    Bonjour et bonne année Igloobel,
    merci pour tes réponses.
    Alors j'ai essayé ça =SOMME.SI(B2:B53;K14;A2:A53), mais cela ne compte que sur une feuille.
    en macro j'ai essayé ç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
    20
    21
    22
    23
    24
    25
    26
    27
    Sub Macropag1()
     
        Dim MesPlages(1 To 12)  As Range
        Dim NbrOccurrence As Long
        Dim i As Integer
     
        Set MesPlages(1) = ThisWorkbook.Worksheets("JANVIER").Range("B2:B53")
        Set MesPlages(2) = ThisWorkbook.Worksheets("FEVRIER").Range("B2:B53")
        Set MesPlages(3) = ThisWorkbook.Worksheets("MARS").Range("B2:B53")
        Set MesPlages(4) = ThisWorkbook.Worksheets("AVRIL").Range("B2:B53")
        Set MesPlages(5) = ThisWorkbook.Worksheets("MAI").Range("B2:B53")
        Set MesPlages(6) = ThisWorkbook.Worksheets("JUIN").Range("B2:B53")
        Set MesPlages(7) = ThisWorkbook.Worksheets("JUILLET").Range("B2:B53")
        Set MesPlages(8) = ThisWorkbook.Worksheets("AOUT").Range("B2:B53")
        Set MesPlages(9) = ThisWorkbook.Worksheets("SEPTEMBRE").Range("B2:B53")
        Set MesPlages(10) = ThisWorkbook.Worksheets("OCTOBRE").Range("B2:B53")
        Set MesPlages(11) = ThisWorkbook.Worksheets("NOVEMBRE").Range("B2:B53")
        Set MesPlages(12) = ThisWorkbook.Worksheets("DECEMBRE").Range("B2:B53")
     
     
        For i = 1 To UBound(MesPlages, 1)
            NbrOccurrence = NbrOccurrence + WorksheetFunction.CountIf(MesPlages(i), "pag1")
        Next i
     
        Workbooks("teststock.xlsm").Sheets("Compte").Range("D35").Value = NbrOccurrence
     
    End Sub
    Et là ça compte que le nombre de mot clé. Je précise que je suis un vrai débutant! Donc, éventuellement quelques explications seraient les bien venues!
    Merci

    jfada

  4. #4
    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
    pour passer d'une feuille à une autre je te conseille de faire une boucle du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub Nom_Feuille()
        For Each Sheet In Sheets
            MsgBox Sheet.Name
        Next
    End Sub
    tu testes

    et dans chaque feuille tu fais ta somme que tu ajoutes dans une variable cumul

    Bien evidemment il faudra tester le nom de chaque feuille pour inclure que de Janvier à Décembre

    tu dis

    A+

  5. #5
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 475
    Par défaut
    Bonjour,

    Avec SOMME.SI au lieu de NB.SI :
    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
    Option Explicit
    Sub Macropag1()
    Dim f As Worksheet
    Dim r As Range
    Dim s As Variant
    Dim i As Integer
    Dim NbrOccurrence As Long
      s = "pag1"
      For i = 1 To 12
        Set f = Worksheets(UCase(Replace(Replace(Format(DateSerial(2000, i, 1), "mmmm"), "é", "e"), "û", "u")))
        Set r = f.Range("B2:B53")
        NbrOccurrence = NbrOccurrence + WorksheetFunction.SumIf(r, s, r.Offset(0, -1))
      Next i
      Worksheets("Compte").Range("D35").Value = NbrOccurrence
    End Sub
    Edit : pour ne traiter que les feuilles choisies :
    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
    Option Explicit
    Sub Macropag1()
    Dim r As Range
    Dim m As Variant
    Dim s As Variant
    Dim i As Integer
    Dim o As Long
      m = Array("JANVIER", "FEVRIER", "MARS", "AVRIL", "MAI", "JUIN", "JUILLET", "AOUT", "SEPTEMBRE", "OCTOBRE", "NOVEMBRE", "DECEMBRE")
      s = "pag1"
      For i = LBound(m) To UBound(m)
        Set r = Worksheets(m(i)).Range("B2:B53")
        o = o + WorksheetFunction.SumIf(r, s, r.Offset(0, -1))
      Next i
      Worksheets("Compte").Range("D35").Value = o
    End Sub

  6. #6
    Membre extrêmement actif
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    1 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 1 369
    Par défaut
    Bonjour,

    Somme 3D : Janvier à décembre (Exemple en PJ)

    Noms en colonne A et montants en colonne B:

    =SOMMEPROD(SOMME.SI(INDIRECT(TEXTE(DATE(;LIGNE($1:$12);1);"mmmm")&"!A2:A100");A2;
    INDIRECT(TEXTE(DATE(;LIGNE($1:$12);1);"mmmm")&"!B2:B100")))

    Boisgontier
    Fichiers attachés Fichiers attachés

  7. #7
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 475
    Par défaut
    Bonjour,


    Un autre formule 3D, proche de celle de Jacques, qui permet d'utiliser des noms de feuilles quelconques(par exemple les mois sans les accents) :
    =SOMMEPROD(SOMME.SI(INDIRECT({"JANVIER";"FEVRIER";"MARS";"AVRIL";"MAI";"JUIN";"JUILLET";"AOUT";"SEPTEMBRE";"OCTOBRE";"NOVEMBRE";"DECEMBRE"}&"!B2:B53");"pag1";INDIRECT({"JANVIER";"FEVRIER";"MARS";"AVRIL";"MAI";"JUIN";"JUILLET";"AOUT";"SEPTEMBRE";"OCTOBRE";"NOVEMBRE";"DECEMBRE"}&"!A2:A53")))

  8. #8
    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
    Certe sommeProd fonctionne très bien même si je maitrise mal

    je l'avais proposer dans mon premier post comme solution possible

    mais en VBA c'est simple aussi

    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 Nom_Feuille()
        Dim Cumul_Val As Double
     
        Cumul_Val = 0
        For Each Sheet In Sheets
     
            Select Case Sheet.Name
                Case "JANVIER", "FEVRIER", "MARS", "AVRIL", "MAI", "JUIN", "JUILLET", "AOUT", "SEPTEMBRE", _
                "OCTOBRE", "NOVEMBRE", "DECEMBRE"
                    For lign = 2 To 53
                        If Cells(lign, 1).Value = Cells(14, 11).Value Then
                            Cumul_Val = Cumul_Val + Cells(lign, 2).Value
                        End If
                    Next
            End Select
        Next
        Workbooks("teststock.xlsm").Sheets("Compte").Range("D35").Value = Cumul_Val
    End Sub
    jfada il te reste à choisir formule ou macro

    tu dis

  9. #9
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 475
    Par défaut
    Citation Envoyé par Igloobel Voir le message
    mais en VBA c'est simple aussi
    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
    Sub Nom_Feuille()
        Dim Cumul_Val As Double
        Cumul_Val = 0
        For Each Sheet In Sheets
            Select Case Sheet.Name
                Case "JANVIER", "FEVRIER", "MARS", "AVRIL", "MAI", "JUIN", "JUILLET", "AOUT", "SEPTEMBRE", _
                "OCTOBRE", "NOVEMBRE", "DECEMBRE"
                    For lign = 2 To 53
                        If Cells(lign, 1).Value = Cells(14, 11).Value Then
                            Cumul_Val = Cumul_Val + Cells(lign, 2).Value
                        End If
                    Next
            End Select
        Next
        Workbooks("teststock.xlsm").Sheets("Compte").Range("D35").Value = Cumul_Val
    End Sub
    Simple mais pas fonctionnel !

  10. #10
    Futur Membre du Club
    Homme Profil pro
    electro-mecanicien
    Inscrit en
    Janvier 2019
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lot (Midi Pyrénées)

    Informations professionnelles :
    Activité : electro-mecanicien
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2019
    Messages : 3
    Par défaut
    Bonjour à tous et merci pour vos réponses rapides.
    J'ai testé ceci de Patrice 740

    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
    Option Explicit
    Sub Macropag1()
    Dim r As Range
    Dim m As Variant
    Dim s As Variant
    Dim i As Integer
    Dim o As Long
      m = Array("JANVIER", "FEVRIER", "MARS", "AVRIL", "MAI", "JUIN", "JUILLET", "AOUT", "SEPTEMBRE", "OCTOBRE", "NOVEMBRE", "DECEMBRE")
      s = "pag1"
      For i = LBound(m) To UBound(m)
        Set r = Worksheets(m(i)).Range("B2:B53")
        o = o + WorksheetFunction.SumIf(r, s, r.Offset(0, -1))
      Next i
      Worksheets("Compte").Range("D35").Value = o
    End Sub

    Et ça marche à merveille!
    Cordialement.

    jfada

  11. #11
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Salut.

    Mon grain de sel.

    Ca n'a pas de sens de travailler avec des onglets Janvier-décembre. Il faut séparer les données de leur traitement et les stocker dans un seul onglet, au sein d'un tableau structuré. Tu pourras alors utiliser les fonctions natives d'Excel sans devoir passer par ce genre de contorsions. Contourner l'obstacle à coup de "formules 3D" ou de VBA alors qu'une bonne conception simplifie le classeur et, ce qui n'est pas plus mal, le sécurise et le pérennise. Parmi les nombreux outils d'Excel que tu auras alors à ta disposition, je cite de manière non exhaustive les fonctions d'ensemble (xxx.SI.ENS, BDxxx), les filtres (automatiques et avancés), les TCD...

    Pour préparer le travail sur base de ta conception, tu pourrais, selon ta version XL, utiliser PowerQuery qui peut effectuer la consolidation pour toi, toujours en respectant une bonne conception de départ.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

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

Discussions similaires

  1. [XL-2007] Copie cellule sous condition d'une feuille sur une autre en VBA
    Par Natchway dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 25/01/2015, 17h12
  2. Somme de cellule sous condition de couleur et de texte
    Par azerkb dans le forum Conception
    Réponses: 1
    Dernier message: 20/12/2013, 11h48
  3. [XL-2010] insérer une image sous condition sur plusieurs lignes
    Par jesslab dans le forum Excel
    Réponses: 2
    Dernier message: 06/12/2013, 09h35
  4. [XL-2010] Somme de valeur suivant condition sur cellule
    Par EricBOG dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 16/07/2013, 11h30
  5. Réponses: 3
    Dernier message: 13/04/2008, 10h52

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