Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Compteur et pas variable

anber

XLDnaute Occasionnel
Bonsoir le Forum,

Je bloque sur un code pour incrémenter un compteur en fonction d'un pas variable suivant le nombre de valeurs identiques dans la colonne D et critère maxi.
Ci-joint un fichier exemple avec des explications (j'espère avoir été clair)

Merci

Bonne soirée
 

Pièces jointes

  • test1.xls
    168 KB · Affichages: 40
  • test1.xls
    168 KB · Affichages: 43
  • test1.xls
    168 KB · Affichages: 42
Dernière édition:

Gurgeh

XLDnaute Occasionnel
Re : Compteur et pas variable

Salut anber,

Bon, je dois avouer que j'ai pas tout compris...

On prend chaque quantité que l'on divise par 200, on prend l'entité supérieur du résultat, ce qui devient notre pas
De quelle quantité parles tu ? Celle qui est en colonne D, ou bien une autre ?

Gurgeh
 

Gurgeh

XLDnaute Occasionnel
Re : Compteur et pas variable

Ah, OKOKOKOK.

Bon, maintenant que j'ai compris, je te propose la formule suivante, à tirer vers le bas

Code:
=SI(MOD(NB.SI($D$1:D1;D1)-1;ENT(NB.SI(D:D;D1)/200)+1)=0;1+(NB.SI($D$1:D1;D1)-1)/(ENT(NB.SI(D:D;D1)/200)+1);"")

Je te laisse regarder comment elle est construite, et je suis à ta disposition pour t'aider à comprendre comment ça marche si besoin.

D'ailleurs, elle doit être optimisable, j'ai peut être pas faite au plus simple...

Gurgej
 

anber

XLDnaute Occasionnel
Re : Compteur et pas variable

Bonjour Gurgeh,
Merci pour ta réponse, mais il me fallait du vba
après avoir chercher un peu plus voici comment j'ai fait
For Each cel In .Range("D1" & .Range("D65536").End(xlUp).Row)
Set deb = cel
Set fin = cel

1 If deb.Row = 1 Then GoTo 2
Set deb = deb.Offset(-1)
If deb <> cel Then Set deb = deb.Offset(1) Else GoTo 1

2 If fin.Row = Rows.Count Then GoTo 3
Set fin = fin.Offset(1)
If fin <> cel Then Set fin = fin.Offset(-1) Else GoTo 2

3 NBLARG = fin.Row - deb.Row + 1

pas1 = NBLARG / 200
pas = Int(pas1) + 1 'entier superieur

lin = 1
For lig = deb.Row To fin.Row Step pas
If lin <= 200 Then .Cells(lig, 21) = lin
lin = lin + 1
Next
Next
 

Discussions similaires

Réponses
7
Affichages
452
Réponses
7
Affichages
370
Réponses
6
Affichages
304
  • Résolu(e)
Microsoft 365 Code de tri
Réponses
22
Affichages
464
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…