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

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

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

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…