Incrémenter 1 cellule sous condition d'une quantité cumulée
Résolu/Fermé
kga
-
Modifié par kga le 7/10/2012 à 18:35
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 - 9 oct. 2012 à 14:09
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 - 9 oct. 2012 à 14:09
A voir également:
- Incrémenter 1 cellule sous condition d'une quantité cumulée
- Excel cellule couleur si condition texte - Guide
- Aller à la ligne dans une cellule excel - Guide
- Verrouiller cellule excel - Guide
- Diviser une cellule excel en deux horizontalement ✓ - Forum Excel
- Excel renvoyer la valeur d'une cellule en fonction d'une autre - Forum Logiciels
5 réponses
eriiic
Messages postés
24570
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
23 avril 2024
7 214
7 oct. 2012 à 20:37
7 oct. 2012 à 20:37
Bonjour,
un fichier exemple avec le résultat attendu aiderait à comprendre ta demande.
cjoint.com et coller ici le lien fourni.
eric
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.
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.
eriiic
Messages postés
24570
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
23 avril 2024
7 214
8 oct. 2012 à 11:05
8 oct. 2012 à 11:05
Bonjour,
Je démarre en ligne 3 et le nombre initial (1233) doit être saisi en C2.
eric
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?
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
eriiic
Messages postés
24570
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
23 avril 2024
7 214
9 oct. 2012 à 12:14
9 oct. 2012 à 12:14
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 :
eric
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
eriiic
Messages postés
24570
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
23 avril 2024
7 214
9 oct. 2012 à 14:09
9 oct. 2012 à 14:09
La preuve que si...
??? où ça ?
??? où ça ?