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 :

Comment effectuer une somme par intervalles entre deux textes ? [XL-2013]


Sujet :

Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Ing Genie civil
    Inscrit en
    Février 2020
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Ing Genie civil

    Informations forums :
    Inscription : Février 2020
    Messages : 42
    Points : 19
    Points
    19
    Par défaut Comment effectuer une somme par intervalles entre deux textes ?
    Bonsoir a tous!!

    Besoin d'un coup de main

    J'aimerais faire une recherche sur les lignes comportant certains textes et faire la somme des valeurs situé entre les textes recherché dans la colonne F correspondante. J'ai créer deux variables l et k pour effectuer les recherches. Le soucis c'est que la variable k qui est sensé faire la recherche du mot " SUPERSTRUCTURE" se fige sur la première ligne ou elle trouve le mot. Du coup au lieu d'effectuer la somme entre le texte " SUPERSTRUCTURE" de la variable k et les autres textes de la variable l trouver, il effectue un cumul. Juste rappeler que entre chaque intervalle de mot se trouve plusieurs sous totaux.
    Voici le code.
    MERCI

    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
    SUB SOMME_PAR_INTERVALLE()
     
    Dim l As Long
    Dim k As Long
    Dim ws As Worksheet
    Dim lf As Long
    Set ws = Sheets("Cadre_de_Devis")
    lf = ws.Cells(Rows.count, 2).End(xlUp).row
     
    For l = lf To 9 Step -1
    If InStr(UCase(ws.Cells(l, 2)), UCase("ETAGER")) >= 1 Or InStr(UCase(ws.Cells(l, 2)), UCase("NIVEAU")) >= 1 Or InStr(UCase(ws.Cells(l, 2)), UCase(“RDUC")) >= 1 Then
     
    For k = lf To 9 Step -1
    If InStr(UCase(ws.Cells(k, 2)), UCase(Left("SUPERSTRUCTURE", 20))) >= 1 Then
     
    Range("F" & l).FormulaLocal = "=somme((F" & k + 1 & "): (F" & l - 1 & "))”
     
    End If
    Next k
    End If
    Next l
    END SUB

  2. #2
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 183
    Points : 5 515
    Points
    5 515
    Par défaut
    Bonjour,

    Il faudrait une petite feuille exemple, complétée manuellement, pour bien comprendre le problème.

    Cordialement.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Ing Genie civil
    Inscrit en
    Février 2020
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Ing Genie civil

    Informations forums :
    Inscription : Février 2020
    Messages : 42
    Points : 19
    Points
    19
    Par défaut
    Citation Envoyé par EricDgn Voir le message
    Bonjour,

    Il faudrait une petite feuille exemple, complétée manuellement, pour bien comprendre le problème.

    Cordialement.
    Bonsoir ÉricDgn

    Ci-joint une image en exemple. MERCI
    Images attachées Images attachées  

  4. #4
    Membre averti Avatar de Nain porte koi
    Homme Profil pro
    a
    Inscrit en
    Novembre 2023
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : a

    Informations forums :
    Inscription : Novembre 2023
    Messages : 236
    Points : 319
    Points
    319
    Par défaut
    Dommage que vous ne fournissiez pas une feuille excel, là, ceux qui pourraient vous donner un coup de main doivent recopier vos données et essayer de comprendre votre code avec des variables pas faciles à lire
    J'ai tenté mais pas compris les tenant et aboutissant, si ce n'est que dans la 2ème boucle vous repartez de la fin au lie de repartir de la ligne actuelle
    JièL
    Membre des AMIS
    Anti Macro Inutilement Superfétatoire

  5. #5
    Membre à l'essai
    Homme Profil pro
    Ing Genie civil
    Inscrit en
    Février 2020
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Ing Genie civil

    Informations forums :
    Inscription : Février 2020
    Messages : 42
    Points : 19
    Points
    19
    Par défaut Re
    Citation Envoyé par Nain porte koi Voir le message
    Dommage que vous ne fournissiez pas une feuille excel, là, ceux qui pourraient vous donner un coup de main doivent recopier vos données et essayer de comprendre votre code avec des variables pas faciles à lire
    J'ai tenté mais pas compris les tenant et aboutissant, si ce n'est que dans la 2ème boucle vous repartez de la fin au lie de repartir de la ligne actuelle
    Bonsoir, vous avez parfaitement raison et c'est vraiment l'idéal, sauf que je n'y parviens pas à charger un fichier Excel sur le forum. Je n'y vois aucun icône qui permet de le faire en dehors des images. Pouvez vous me donner plus de directive a ce sujet svp? Merci

  6. #6
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 183
    Points : 5 515
    Points
    5 515
    Par défaut
    A mon avis, vous devriez plutôt encoder vos données dans un tableau structuré et utiliser un tableau croisé dynamique. Un exemple en attaché. Pas besoin de code VBA.

    Pour ajouter un fichier, il y a en dessous de la fenêtre de composition d'un nouveau message un bouton "gérer les pièces jointes". Dans la fenêtre qui s'ouvre cliquer sur "ajouter un fichier", sélectionner votre fichier dans l'explorateur de fichiers, cliquer sur "ouvrir" dans l'explorateur de fichiers, et enfin cliquer sur le bouton "envoyer".

    Cordialement.
    Fichiers attachés Fichiers attachés

  7. #7
    Membre à l'essai
    Homme Profil pro
    Ing Genie civil
    Inscrit en
    Février 2020
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Ing Genie civil

    Informations forums :
    Inscription : Février 2020
    Messages : 42
    Points : 19
    Points
    19
    Par défaut Re
    Citation Envoyé par EricDgn Voir le message
    A mon avis, vous devriez plutôt encoder vos données dans un tableau structuré et utiliser un tableau croisé dynamique. Un exemple en attaché. Pas besoin de code VBA.

    Pour ajouter un fichier, il y a en dessous de la fenêtre de composition d'un nouveau message un bouton "gérer les pièces jointes". Dans la fenêtre qui s'ouvre cliquer sur "ajouter un fichier", sélectionner votre fichier dans l'explorateur de fichiers, cliquer sur "ouvrir" dans l'explorateur de fichiers, et enfin cliquer sur le bouton "envoyer".

    Cordialement.
    Vraiment merci pour votre apport. Concernant l'envoi du fichier, j'ai toujours du mal à le faire. Je respecte la procédure et a la fin je reçois un message d'échec de l'ouverture.

    Concernant mon inquiétude, le tableau en question est un tableau structuré. Mais il est évolutif et les données qu'on a peuvent changer a tout moment et les ligne peuvent varier aussi, mais seulement c'est la structure qui reste la même. Du coup il est quasiment impossible de procéder à un TCD. J'essayerai demain de voir si je peux faire parvenir le fichier, mais seulement si c'est pas trop abusé de votre attention, je solliciterais que vous essayez de reproduire un tableau similaires comme je l'ai présenté en image et d'affecter le code pour mieux comprendre son fonctionnement. Peut être que ça pourrait mieux vous guider. Le vrai problème c'est ma variable k qui reste figée sur la première ligne sur laquelle elle trouve le mot "SUPERSTRUCTURE" . J'aimerais qu'elle parcours l'ensemble du tableau pour récupérer chaque lignes comportant le texte" SUPERSTRUCTURE" et créer un plage avec la ligne Total qui sera trouvé par la variable l. Encore une fois merci pour votre apport.

  8. #8
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 183
    Points : 5 515
    Points
    5 515
    Par défaut
    Bonjour,

    Il n'est pas nécessaire de passer par du code VBA. Il est vraiment préférable d'exploiter la fonction SOMME.SI().

    Nom : SommeSi.png
Affichages : 97
Taille : 11,5 Ko.

    Cordialement.
    Fichiers attachés Fichiers attachés

  9. #9
    Membre à l'essai
    Homme Profil pro
    Ing Genie civil
    Inscrit en
    Février 2020
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Ing Genie civil

    Informations forums :
    Inscription : Février 2020
    Messages : 42
    Points : 19
    Points
    19
    Par défaut
    Citation Envoyé par EricDgn Voir le message
    Bonjour,

    Il n'est pas nécessaire de passer par du code VBA. Il est vraiment préférable d'exploiter la fonction SOMME.SI().

    Nom : SommeSi.png
Affichages : 97
Taille : 11,5 Ko.

    Cordialement.

    bonjour EricDgn

    Encore une fois merci pour votre contribution. Apparemment c'est moi qui ai omis un détail. le tableau en question est vide au départ. il est remplis a travers un transfert de données depuis un autre tableau a travers un formulaire. Donc l'utilisateur na pas accès direct a aucun des classeur. Seuls les formulaires lui servent d'interface. Tout les calculs sont automatisés par les code vba. J'ai réussi a mettre en place un petit code qui me permet de sélectionner le premier intervalle et d'effectuer le calcul. le soucis maintenant c'est comment quitter cette plage pour aller a la plage suivante et jusqu'à la dernière plage trouvée? Quand j'essaie de créer une plage de sélection , le calcul n'est plus effectué

    voici le code

    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
    Sub SOMME_PAR_INTERVALLE()
    Dim l As Long
    Dim k As Long
    Dim ws As Worksheet
    Dim lf As Long
    Dim plage As Range
     
    Set ws = Sheets("Feuil1")
    lf = ws.Cells(Rows.Count, 2).End(xlUp).Row
     
    For l = lf To 1 Step -1
            If UCase(ws.Cells(l, 2)) Like UCase(Left("ETAGER", 7)) Or UCase(ws.Cells(l, 2)) Like UCase(Left("NIVEAU", 7)) Or UCase(ws.Cells(l, 2)) Like UCase(Left("RDUC", 5)) Then
            i = ws.Cells(l, 2).Row
            End If
        Next l
     
    For k = lf To 1 Step -1
            If UCase(ws.Cells(k, 2)) Like UCase(Left("TOTAL*", 7)) Then
            j = ws.Cells(k, 2).Row
            End If
        Next k
     
            Range("B" & i + 1 & ":" & "F" & j - 1).Select
     
             Set plage = Range("B" & i + 1 & ":" & "F" & j - 1)
     
    ' For Each plage In Range("B3:F" & lf)
    '        If Range("B" & i).Value = True And Range("B" & j) = True Then
            Range("F" & j).FormulaLocal = "=somme((F" & i + 1 & ":" & "F" & j - 1 & "))/2"
    '        End If
    '    Next plage
    End Sub
    Ci joint le fichier

    Toutes proposition me sera dune grande utilité. Merci
    Fichiers attachés Fichiers attachés

  10. #10
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 183
    Points : 5 515
    Points
    5 515
    Par défaut
    Un façon de faire:
    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
    Option Explicit
     
    Sub SOMME_PAR_INTERVALLE()
        Dim l As Long, k As Long, ws As Worksheet, lf As Long
        Dim sCell As String, k1 As Long, k2 As Long
        Set ws = Worksheets("Feuil1")                   '<<<
        lf = ws.Cells(Rows.Count, 2).End(xlUp).Row
        For l = 1 To lf
            sCell = UCase(ws.Cells(l, 2))
            If InStr(sCell, "ETAGER") > 0 Or InStr(sCell, "NIVEAU") > 0 Or InStr(sCell, "RDUC") > 0 Then
                k1 = ws.Cells(l, 2).Row + 1
                For k = k1 To lf
                    If InStr(ws.Cells(k, 2), sCell) > 0 Then
                        k2 = ws.Cells(k, 2).Row - 1
                        ws.Range("F" & k).FormulaLocal = "=SOMME(F" & k1 & ":F" & k2 & ")/2"
                        Exit For
                    End If
                Next k
                l = k
            End If
        Next l
    End Sub
    Cordialement.

  11. #11
    Membre à l'essai
    Homme Profil pro
    Ing Genie civil
    Inscrit en
    Février 2020
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Ing Genie civil

    Informations forums :
    Inscription : Février 2020
    Messages : 42
    Points : 19
    Points
    19
    Par défaut RE
    Citation Envoyé par EricDgn Voir le message
    Un façon de faire:
    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
    Option Explicit
     
    Sub SOMME_PAR_INTERVALLE()
        Dim l As Long, k As Long, ws As Worksheet, lf As Long
        Dim sCell As String, k1 As Long, k2 As Long
        Set ws = Worksheets("Feuil1")                   '<<<
        lf = ws.Cells(Rows.Count, 2).End(xlUp).Row
        For l = 1 To lf
            sCell = UCase(ws.Cells(l, 2))
            If InStr(sCell, "ETAGER") > 0 Or InStr(sCell, "NIVEAU") > 0 Or InStr(sCell, "RDUC") > 0 Then
                k1 = ws.Cells(l, 2).Row + 1
                For k = k1 To lf
                    If InStr(ws.Cells(k, 2), sCell) > 0 Then
                        k2 = ws.Cells(k, 2).Row - 1
                        ws.Range("F" & k).FormulaLocal = "=SOMME(F" & k1 & ":F" & k2 & ")/2"
                        Exit For
                    End If
                Next k
                l = k
            End If
        Next l
    End Sub
    Cordialement.

    WAOOOHHHH SUPER!!!!!!!! vraiment grand merci EricDgn, ça fonctionne a merveille. Cependant j'aimerais abusé encore une fois de votre attention et de votre temps. J'aimerai avoir un total général qui tienne compte uniquement que les totaux qui viennent d'être calculé. MERCI
    Fichiers attachés Fichiers attachés

  12. #12
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 774
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 774
    Points : 28 638
    Points
    28 638
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    L'organisation des données dans Excel, c'est comme les fondations d'un bâtiment. Si elles sont mauvaises, cela s'écroule

    Dans l'illustration ci-dessous, à gauche les données dans un tableau structuré à droite la synthèse avec un tableau croisé dynamique (4 clics et c'est emballé)

    Nom : 240225 dvp Data Pivot.png
Affichages : 84
Taille : 42,0 Ko
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  13. #13
    Membre à l'essai
    Homme Profil pro
    Ing Genie civil
    Inscrit en
    Février 2020
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Ing Genie civil

    Informations forums :
    Inscription : Février 2020
    Messages : 42
    Points : 19
    Points
    19
    Par défaut Re
    Citation Envoyé par Philippe Tulliez Voir le message
    Bonjour,
    L'organisation des données dans Excel, c'est comme les fondations d'un bâtiment. Si elles sont mauvaises, cela s'écroule

    Dans l'illustration ci-dessous, à gauche les données dans un tableau structuré à droite la synthèse avec un tableau croisé dynamique (4 clics et c'est emballé)

    Nom : 240225 dvp Data Pivot.png
Affichages : 84
Taille : 42,0 Ko
    Bonsoir Philippe,
    Vous avez parfaitement raison a propos de votre suggestion, seulement que dans mon cas si mon tableau ne se présente pas de la même manière et les données contenues sont transférés depuis un autre tableau a travers un formulaire. Donc l'utilisateur n'aura pas accès au classeur. Tous les calculs sont effectués lors du transfert des données. Merci

  14. #14
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 183
    Points : 5 515
    Points
    5 515
    Par défaut
    Je suis du même avis que Philippe, que je salue au passage, qu'il faudrait vraiment que les données soient "récupérées" d'une façon adaptée à Excel. Le code VBA n'est qu'emplâtre sur une jambe de bois. Nonobstant, pour avoir le grand total, une façon de faire est d'ajouter ces 2 lignes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    '...
        ws.Range("B" & l) = "TOTAL GENERAL"
        ws.Range("F" & l).Formula = "=SUMIF(D4:D" & k & ","">0"",F4:F" & k & ")"
    End Sub
    Cordialement.

  15. #15
    Membre à l'essai
    Homme Profil pro
    Ing Genie civil
    Inscrit en
    Février 2020
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Ing Genie civil

    Informations forums :
    Inscription : Février 2020
    Messages : 42
    Points : 19
    Points
    19
    Par défaut Re
    Citation Envoyé par EricDgn Voir le message
    Je suis du même avis que Philippe, que je salue au passage, qu'il faudrait vraiment que les données soient "récupérées" d'une façon adaptée à Excel. Le code VBA n'est qu'emplâtre sur une jambe de bois. Nonobstant, pour avoir le grand total, une façon de faire est d'ajouter ces 2 lignes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    '...
        ws.Range("B" & l) = "TOTAL GENERAL"
        ws.Range("F" & l).Formula = "=SUMIF(D4:D" & k & ","">0"",F4:F" & k & ")"
    End Sub
    Cordialement.
    Je viens de tester les deux lignes de code, mais malheureusement tous les mot recherché par la variable l sont tous remplacer par "TOTAL GÉNÉRAL", du coup le calcul n'est plus effectuer. Je me disais si on pouvait pas chercher la ligne contenant le texte "TOTAL GÉNÉRAL" et en faire une référence ? C'est juste une suggestion qui peut être bête aux yeux des experts comme vous.

  16. #16
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 183
    Points : 5 515
    Points
    5 515
    Par défaut
    Code complet:
    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
    Sub SOMME_PAR_INTERVALLE()
        Dim l As Long, k As Long, ws As Worksheet, lf As Long
        Dim sCell As String, k1 As Long, k2 As Long
        Set ws = Worksheets("Feuil1")                   '<<<
        lf = ws.Cells(Rows.Count, 2).End(xlUp).Row
        For l = 1 To lf
            sCell = UCase(ws.Cells(l, 2))
            If InStr(sCell, "ETAGER") > 0 Or InStr(sCell, "NIVEAU") > 0 Or InStr(sCell, "RDUC") > 0 Then
                k1 = ws.Cells(l, 2).Row + 1
                For k = k1 To lf
                    If InStr(ws.Cells(k, 2), sCell) > 0 Then
                        k2 = ws.Cells(k, 2).Row - 1
                        ws.Range("F" & k).FormulaLocal = "=SOMME(F" & k1 & ":F" & k2 & ")/2"
                        Exit For
                    End If
                Next k
                l = k
            End If
        Next l
        ws.Range("B" & l) = "TOTAL GENERAL"
        ws.Range("F" & l).Formula = "=SUMIF(D4:D" & k & ","">0"",F4:F" & k & ")"
    End Sub
    Cordialement.

  17. #17
    Membre à l'essai
    Homme Profil pro
    Ing Genie civil
    Inscrit en
    Février 2020
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Ing Genie civil

    Informations forums :
    Inscription : Février 2020
    Messages : 42
    Points : 19
    Points
    19
    Par défaut Re
    Citation Envoyé par EricDgn Voir le message
    Code complet:
    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
    Sub SOMME_PAR_INTERVALLE()
        Dim l As Long, k As Long, ws As Worksheet, lf As Long
        Dim sCell As String, k1 As Long, k2 As Long
        Set ws = Worksheets("Feuil1")                   '<<<
        lf = ws.Cells(Rows.Count, 2).End(xlUp).Row
        For l = 1 To lf
            sCell = UCase(ws.Cells(l, 2))
            If InStr(sCell, "ETAGER") > 0 Or InStr(sCell, "NIVEAU") > 0 Or InStr(sCell, "RDUC") > 0 Then
                k1 = ws.Cells(l, 2).Row + 1
                For k = k1 To lf
                    If InStr(ws.Cells(k, 2), sCell) > 0 Then
                        k2 = ws.Cells(k, 2).Row - 1
                        ws.Range("F" & k).FormulaLocal = "=SOMME(F" & k1 & ":F" & k2 & ")/2"
                        Exit For
                    End If
                Next k
                l = k
            End If
        Next l
        ws.Range("B" & l) = "TOTAL GENERAL"
        ws.Range("F" & l).Formula = "=SUMIF(D4:D" & k & ","">0"",F4:F" & k & ")"
    End Sub
    Cordialement.
    Vraiment grand Merci à vous Éric. Grâce à vous je peux dormir paisiblement cette nuit. Mon problème est résolu a 100%. Je marque RÉSOLU pour tout ceux qui seront dans le besoin la prochaine fois

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 29/06/2018, 16h58
  2. Comment effectuer une rotation de matrice à deux dimensions ?
    Par MrghURss dans le forum Général Java
    Réponses: 13
    Dernier message: 30/12/2015, 23h15
  3. Réponses: 4
    Dernier message: 27/08/2010, 04h57
  4. Réponses: 1
    Dernier message: 11/06/2009, 23h39
  5. Comment compter les jours par mois entre deux dates
    Par Doo89 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 10/01/2008, 21h21

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