XL 2013 Réorganiser les numeros de bundle selon la quantité

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

lestoiles1

XLDnaute Occasionnel
Bonjour à tous,

J'aimerais avoir un macro disant que lorsque je modifie la quantité d'un tailles , le numero de bundle change automatiquement.
Notant que la quantité par defaut d'un bundle est 20 mais lorsqu'il y a un reste , ca doit etre dans la derniere bundle. si plus de 10 creer un autre bundle, si moint, inclure dans le dernier bundle.
Merci
Lestoiles
 

Pièces jointes

Bonjour à tous,
Un essai par formules en partant du fichier de JHA, avec :
VB:
=MIN(20;20*(B$1-SOMME(B$5:B5))/20)

Bonjour à tous,
Un essai par formules en partant du fichier de JHA, avec :
VB:
=MIN(20;20*(B$1-SOMME(B$5:B5))/20)
Bonjour et Merci Sylvanu, il y notre amie qui a trouvé le présque solution, mais le numero de bundle ne suit pas. Je ne sais pas si tu pouvais aider. Lestoiles
 

Pièces jointes

Private Sub Worksheet_Change(ByVal Target As Range)
Dim col As Integer, nbBundle As Integer, LastCol As Integer
Dim i As Integer, lastBundle As Integer, prevLastBundle As Integer
Dim ws As Worksheet
Set ws = Me

' Vérifier si la modification concerne la ligne 1
If Intersect(Target, Rows(1)) Is Nothing Then Exit Sub

Application.EnableEvents = False ' Désactiver les événements pour éviter les boucles

col = Target.Column ' Récupérer la colonne modifiée
nbBundle = Int(Target / 20) ' Nombre de paquets de 20
LastCol = ws.Cells(ws.Rows.Count, col).End(xlUp).Row ' Dernière ligne remplie dans la colonne

' Nettoyer les anciennes valeurs
ws.Cells(5, col).Resize(LastCol).ClearContents
ws.Cells(5, col - 1).Resize(LastCol).ClearContents

' Trouver le dernier numéro de bundle utilisé dans la colonne précédente
If col > 2 Then
prevLastBundle = Application.WorksheetFunction.Max(ws.Cells(5, col - 1).Resize(LastCol))
If IsError(prevLastBundle) Then prevLastBundle = 0
Else
prevLastBundle = 0
End If

' Initialiser le premier bundle pour cette colonne à la suite du dernier utilisé
lastBundle = prevLastBundle

' Remplir les cellules avec 20 et numéro de bundle
For i = 1 To nbBundle
ws.Cells(4 + i, col) = 20
ws.Cells(4 + i, col - 1) = lastBundle + 1
lastBundle = lastBundle + 1
Next i

' Ajouter le reste s'il y en a un
If nbBundle * 20 <> Target Then
ws.Cells(4 + i, col) = Target - nbBundle * 20
ws.Cells(4 + i, col - 1) = lastBundle + 1
lastBundle = lastBundle + 1
End If

Application.EnableEvents = True ' Réactiver les événements
End Sub

J'ai trouver un vba via ai , mais mon seul probleme ce que le num bundle de la taille suivante doit etre le suivant de la taille precedente.
 

Pièces jointes

Re,
il y notre amie qui a trouvé le présque solution, mais le numero de bundle ne suit pas. Je ne sais pas si tu pouvais aider
La PJ en post#4 marche . Les N° de Bundle sont donnés par une formule :
VB:
Colonne Bundle:
=SI(B5>0;NBVAL(B$5:B5);"")
Colonne Quantité :
1ere cellule : =SI(B$1<20;B$1;20)
Ensuite      : =MIN(20;20*(B$1-SOMME(B$5:B5))/20)
Tout le tableau en format personnalisé : "0;;" pour ne pas afficher les zéros.
 

Pièces jointes

Re,

La PJ en post#4 marche . Les N° de Bundle sont donnés par une formule :
VB:
Colonne Bundle:
=SI(B5>0;NBVAL(B$5:B5);"")
Colonne Quantité :
1ere cellule : =SI(B$1<20;B$1;20)
Ensuite      : =MIN(20;20*(B$1-SOMME(B$5:B5))/20)
Tout le tableau en format personnalisé : "0;;" pour ne pas afficher les zéros.
Merci, derniere chose, j'aimerai que lorsque c'est moins de 10 la quantité, ça doit etre inclu dans le numero precedent, exmple 29 , 28 , 27 ...
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour