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 -
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.
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
-
Bonjour,
un fichier exemple avec le résultat attendu aiderait à comprendre ta demande.
cjoint.com et coller ici le lien fourni.
eric
-
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. -
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
-
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? -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
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