Bonjour tous le monde,
je sollicite votre aide car je me casse les dents depuis quelques jours sur un probleme dont l'enonce peut paraitre simple, mais qui est pour moi, complique. Le voici :
Il s'agit de l'etude de mouvements de stock.
Pour chaque article colonne A :
Pour chaque code mouvement (Movement Type --> colonne E) :
Faire la somme des Quantites (Qty in Un. of Entry --> colonne L)
A la condition suivante (c'est ici que je bloque) :
Si la date du dernier mouvements 901 > date du dernier mouvements 101 Alors
Ce mouvement doit etre considere comme un mouvement 902
J'espere que je suis assez clair.
Merci par avance a toutes les personnes qui prendront de leurs temps pour m'aider.
Ps : vous trouverez le fichier en PJ
Bien cordialement.
Vincent
je sollicite votre aide car je me casse les dents depuis quelques jours sur un probleme dont l'enonce peut paraitre simple, mais qui est pour moi, complique. Le voici :
Il s'agit de l'etude de mouvements de stock.
Pour chaque article colonne A :
Pour chaque code mouvement (Movement Type --> colonne E) :
Faire la somme des Quantites (Qty in Un. of Entry --> colonne L)
A la condition suivante (c'est ici que je bloque) :
Si la date du dernier mouvements 901 > date du dernier mouvements 101 Alors
Ce mouvement doit etre considere comme un mouvement 902
Code:
Sub creationTableAjujustement()
'on initialise la feuille source
'on initialise la table source
Set f = ThisWorkbook.Sheets("DataBase")
TblBD = f.Range("a2:s" & f.[s200000].End(xlUp).Row).Value
colCrit1 = 1: colCrit2 = 5: colOper = 12
'on initialise la feuille resultat
Set Result = ThisWorkbook.Worksheets("Adjustments").Range("a2")
'on cree les dictionnaires index pour rapidité
Set d1 = CreateObject("Scripting.Dictionary")
Set d2 = CreateObject("Scripting.Dictionary")
'on cree les tableaux
Dim TblTot(): ReDim TblTot(1 To UBound(TblBD), 1 To 3)
Dim TblTotLig(): ReDim TblTotLig(1 To UBound(TblBD))
Dim TblTotCol(): ReDim TblTotCol(1 To 3)
'on fait les calculs pour chaque item
For i = LBound(TblBD) To UBound(TblBD)
'definition des clefs d'entres
clé1 = TblBD(i, colCrit1): If d1.exists(clé1) Then lig = d1(clé1) Else d1(clé1) = d1.Count + 1: lig = d1.Count
clé2 = TblBD(i, colCrit2): If d2.exists(clé2) Then col = d2(clé2) Else d2(clé2) = d2.Count + 1: col = d2.Count
'Sommes
TblTot(lig, col) = TblTot(lig, col) + TblBD(i, colOper)
TblTotCol(col) = TblTotCol(col) + TblBD(i, colOper)
Next i
'on affiche les resultats
Result.Offset(1).Resize(d1.Count, 1) = Application.Transpose(d1.keys) ' titre lignes
Result.Offset(, 1).Resize(1, d2.Count) = d2.keys ' titres colonnes
Result.Offset(1, 1).Resize(d1.Count, d2.Count) = TblTot ' stat 2D
Result.Offset(-1, 1).Resize(, d2.Count) = TblTotCol ' somme pour chaque colonne
End Sub
J'espere que je suis assez clair.
Merci par avance a toutes les personnes qui prendront de leurs temps pour m'aider.
Ps : vous trouverez le fichier en PJ
Bien cordialement.
Vincent