Incrémenter 1 cellule sous condition d'une quantité cumulée

Résolu
Bonjour,

J'ai à réaliser un fichier et je coince sur la réalisation d'une des macro.

J'ai une colonne A où j'ai mentionné des valeurs max (défnies par une quatrième colonne), à atteindre pour la colonne B. Dans cette colonne B j'ai dans chaque ligne une valeur chiffrée.

J'aimerais qu'en défilant de haut en bas, quand le cumul des valeurs chiffrées dans la colonne B est supérieur ou égal à la valeur de la colonne A la cellule qui suit dans la colonne C soit incrémenter de 1.
Soit si val B5>= val A5, C6=val C5+1.

Sachant qu'après l'action doit se répéter, recommencement du cumul à partir de 0.
Soit B6=val B6 et non val B5+ val B6.

Pouvez-vous m'y aider ?
Je vous en remercie d'avance.

5 réponses

  1. Contributeur
    Bonjour,

    un fichier exemple avec le résultat attendu aiderait à comprendre ta demande.
    cjoint.com et coller ici le lien fourni.

    eric
    0
    1. Ci-joint un fichier avec le résultat attendu : http://cjoint.com/?BJikbto9wCV

      Une petite erreur dans l'énoncé de mon sujet : ce n'est pas supérieur ou égal mais strictement supérieur, comme vous pouvez le voir dans le fichier pour le cas de la transition entre les semaines 1234 et 1235.
      0
      1. Contributeur
        Bonjour,

        Sub increment()
            Dim lig As Long, cpt As Long
            For lig = 3 To Cells(Rows.Count, 1).End(xlUp).Row
                cpt = cpt + Cells(lig, 2)
                If cpt > Cells(lig, 1) Then
                    Cells(lig, 3) = Cells(lig - 1, 3) + 1
                    cpt = 0
                Else
                    Cells(lig, 3) = Cells(lig - 1, 3)
                End If
            Next lig
        End Sub 

        Je démarre en ligne 3 et le nombre initial (1233) doit être saisi en C2.

        eric
        0
        1. Merci Eric, mais j'ai encore 2 points à te soumettre :

          1. La macro répond bien aux attentes pour les données mentionnées.
          Mais si j'en rajoute, elle n'est plus capable de réaliser une bonne analyse.
          ( Fichier montrant le problème: http://cjoint.com/?BJjlPdcLLRE )

          2. J'ai un peu de mal à comprendre le raisonnement, pourrais tu m'expliquer ta macro?
          0
          1. Contributeur
            Bonjour,

            Je crois surtout que tu as oublié de dire que le total n'est pas toujours atteint et qu'il faut incrémenter si colonne A change de valeur.

            Regarde si c'est ça que tu veux, j'ai ajouté des commentaires :
            Sub Incrementer_cell_sous_cond_qte_cumul()
            '
            ' Incrementer_cell_sous_cond_qte_cumul Macro
            ' Macro enregistrée le 09/10/2012 par gkuissi
            '
            
            '
                Dim lig As Long, cpt As Long
                For lig = 3 To Cells(Rows.Count, 1).End(xlUp).Row ' de la ligne 3 à la dernière ligne remplie colonne A
                    cpt = cpt + Cells(lig, 2) ' additionner B
                    If cpt > Cells(lig, 1) Or Cells(lig, 1) <> Cells(lig - 1, 1) Then ' si maxi atteint ou si A change
                        Cells(lig, 3) = Cells(lig - 1, 3) + 1 ' incrémenter la valeur précédente en C
                        cpt = 0 ' raz du compteur
                    Else
                        Cells(lig, 3) = Cells(lig - 1, 3) ' sinon recopier la valeur précédente en C
                    End If
                Next lig
            End Sub

            eric
            0
            1. ( La preuve que si... )

              Nickel, ça marche.
              Merci encore pour l'aide, les explications et ta réacitivité.
              0
            2. Contributeur
              La preuve que si...
              ??? où ça ?
              0