XL 2016 Boucle VBA approvsionnement

GV91

XLDnaute Junior
Bonjour à toutes et à tous,

Ci-joint un fichier que j'aimerai "automatisé"

Dans l'exemple je dispose d'un fournisseur de palettes qui ne me livre que par lot de 200, et un tableau récapitulant par mois mon besoin.

J'aimerai donc remplacer mes "-200" à l'affilés par une boucle VBA :

Avec un message demandant le mois désiré, et qui me calculerai automatiquement le nombre de commande passées jusqu'à ce que la quantité soit inférieur à la taille de lot.

J'aimerai donc aussi un message me disant par exemple " 13 commandes de 200 palettes possibles pour les 2514 palettes , reste 114 palettes"

D'avance merci
 

Pièces jointes

  • Gv2.xlsx
    17.7 KB · Affichages: 11

GV91

XLDnaute Junior
Bonjour GV,
Si votre besoin est de 2514 palettes, la commande doit être de =ARRONDI.SUP(E18/200;0) soit 13 lots, ce qui représente 2600 palettes.
Donc votre reste est de 56 palettes et non de 114 ? ( 2600-2514 )
Où me trompais je ?

Bonjour sylvanu

Je me suis trompé, je ne dois pas dépasser mes 2514 palettes, donc je passe 12 commandes (2400) et il me reste 114 palettes.
La formule est correcte mais je dois retranscrire ça sur VBA.

Je suis cependant assez rouillé j'aimerai quelque chose du genre mais fonctionnel

Sub répartition()

Dim i, j, k As Integer

MsgBox "Quel mois rechercher vous ?"
i = Cells(E11)
'2 514 palettes
j = Cells(D26)
'lot de 200
k = résultats
'nombre de commandes
r = reste
m = mois
Do
k = i - j
Loop Until k = i < j

MsgBox " k commandes de j palettes possibles pour les i palettes , reste r palettes"





End Sub
 

GV91

XLDnaute Junior
Quand on a choisit le mois, la variable Mois contient le nom du mois,
IndexMois donne la position de la colonne où est le mois.
Après on en fait ce qu'on veut.
... le plus dur est de construire la phrase de retour dans le msgbox ! :)

Salut sylvanu et bonjour le forum,

J'ai regardé ta VBA et l'applique pour le tableau à merveille !

Concernant ton tableau (que je remet dans le fichier), mon fichier ayant évolué je ne comprend pas comment tu utilise la formule pour le volume palettes avec les INDEX.

Mon tableau ayant désormais plusieurs types de supports (des fois pour des mêmes fournisseurs) avec des tailles de lots et coût différents. J'aurai donc voulu affiné la formule avec les différentes liste déroulante mais je coince.
 

Pièces jointes

  • Gv.xlsx
    15 KB · Affichages: 4

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour GV,
Comme vous aurez du VBA avec vos msgbox, je me suis dit que le plus simple pour trouver le volume de palettes était de passer par une fonction perso :
VB:
Function ChercheLigne(Site, FRS, TypePal)
Application.Volatile
Derlig = Application.WorksheetFunction.CountA(Range("A1:A10000"))
For i = 2 To Derlig
    If Cells(i, 1) = Site And Cells(i, 2) = FRS And Cells(i, 4) = TypePal Then
        L = 1
        Exit For
    End If
Next i
If i = Derlig + 1 Then
    ChercheLigne = "Erreur"
Else
        ChercheLigne = i
End If
End Function
Ça évite de longues formules si on veut tenir compte du Site, FRS et Type palettes.
Donc cette formule donne le No de ligne, un simple Equiv donne le No de colonne en fonction du mois, et un Index(Tableau;Ligne;Colonne) donne le volume.
Bien évidemment les deux cellules Ligne Colonne peuvent être supprimées et intégrées dans la formule Volume ( Tableau de gauche )
 

Pièces jointes

  • GvV2.xlsm
    24.6 KB · Affichages: 7

GV91

XLDnaute Junior
Bonjour GV,
Comme vous aurez du VBA avec vos msgbox, je me suis dit que le plus simple pour trouver le volume de palettes était de passer par une fonction perso :
VB:
Function ChercheLigne(Site, FRS, TypePal)
Application.Volatile
Derlig = Application.WorksheetFunction.CountA(Range("A1:A10000"))
For i = 2 To Derlig
    If Cells(i, 1) = Site And Cells(i, 2) = FRS And Cells(i, 4) = TypePal Then
        L = 1
        Exit For
    End If
Next i
If i = Derlig + 1 Then
    ChercheLigne = "Erreur"
Else
        ChercheLigne = i
End If
End Function
Ça évite de longues formules si on veut tenir compte du Site, FRS et Type palettes.
Donc cette formule donne le No de ligne, un simple Equiv donne le No de colonne en fonction du mois, et un Index(Tableau;Ligne;Colonne) donne le volume.
Bien évidemment les deux cellules Ligne Colonne peuvent être supprimées et intégrées dans la formule Volume ( Tableau de gauche )


Le tableau ne fonctionne pas totalement mais j'ai compris comment fonctionnait ta formule
Je te remercie pour ton retour !
 

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 206
Messages
2 086 210
Membres
103 158
dernier inscrit
laufin