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

Résolu
kga -  
eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   -
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. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    Bonjour,

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

    eric
    0
  2. kga
     
    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
  3. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    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
  4. kga
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    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. kga
       
      ( La preuve que si... )

      Nickel, ça marche.
      Merci encore pour l'aide, les explications et ta réacitivité.
      0
    2. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      La preuve que si...
      ??? où ça ?
      0