Disponibilité Emplacement

Bonjour la communauté,

J'ai réussi à progresser et avancer dans excel grâce à ce forum depuis plusieurs mois mais là je n'ai rien trouvé alors j'espère que vous allez pouvoir m'aider sur ce coup là!!!

Dans mon boulot de gestion de stock j'ai besoin de faire des modifications régulièrement et plus le nombre de références augmente plus je galère forcément.

J'ai plusieurs étagères de même taille qui sont découpées en 6 niveaux avec la possibilité de mettre entre 1 et 12 références par niveau.En fonction des dimensions des produits j'ai considéré qu'il me fallait 5 tailles de casiers différents(Emballage ) pour m'organiser ( à savoir M1,M2,M3,M4,M5 )(onglet étagère du fichier joint).

Donc si je mets une référence de taille M5 sur une étagère en position 1 , les positions 2 à 12 du niveau ne sont pas dispo.

Mon système informatique me remonte que l'emplacement 1 est occupé mais les autres libres.

Chaque niveau ne peut avoir qu'un seul type d'emballage

Comme j'ai 45000 emplacements j'aimerais pouvoir connaitre mes emplacements réellement dispo plus facilement.

Si sur une étagère j'ai mis une référence M3 en position 1 en 4 et en 7 , j'aimerais avoir l'info que la position 10 est disponible.

Dans la colonne I j'ai indiqué le résultat que j'espère obtenir ..........

J'ai épuisé mes petites connaissances en excel et fait du coup appel à vous

Merci d'avance du temps que vous pourrez y consacrez!!!!!!

Excellement Vôtre!

30dispo.xlsx (652.59 Ko)

Bonjour,

si c'est le type d'emballage à l'indice 1 qui conditionne le type d'emballage du niveau, voici une solution possible via VBA.

Sub aargh()
    With Sheets("MG14")
        dl = .Cells(Rows.Count, 1).End(xlUp).Row
        For i = 2 To dl Step 12
            em = .Cells(i, "H")
            If Left(em, 1) = "M" Then
                taille = Mid(em, 2)
                Select Case taille
                Case 1, 2, 3
                    nc = Val(taille)
                Case 4
                    nc = 6
                Case 5
                    nc = 12
                End Select
                For j = 0 To 11 Step nc
                    If Left(.Cells(i + j, "H"), 1) = "M" Then
                        .Cells(i + j, "I") = "Occupé " & em
                    Else
                        .Cells(i + j, "I") = "Dispo " & em
                    End If
                    For k = 1 To nc - 1
                        .Cells(i + j + k, "I") = "Pas dispo"
                        .Cells(i + j + k, "H") = "Vide"
                    Next k
                Next j
            Else
                For j = 0 To 11
                    .Cells(i + j, "H") = "Vide"
                    .Cells(i + j, "I") = "Dispo"
                Next j
            End If
        Next i
    End With
End Sub

Bonjour à tous,

Si tu veux une formule matricielle de type doliprane et d'une lenteur abyssale, en voici une :

=SI(H2<>"Vide";"Occupé "&H2;SI(MOD(G2-MAX(SI((GAUCHE(Emplacement;12)=GAUCHE($A2;12))*(Emballage<>"vide");--Indice;0));RECHERCHEV(DECALER($H$1;MAX(SI((GAUCHE(Emplacement;12)=GAUCHE($A2;12))*(Emballage<>"vide");LIGNE(Emplacement);0))-1;0);Grille!$I$5:$J$9;2;FAUX))=0;"Dispo pour "&DECALER($H$1;MAX(SI((GAUCHE(Emplacement;12)=GAUCHE($A2;12))*(Emballage<>"vide");LIGNE(Emplacement);0))-1;0);"Pas dispo"))

Grille!$I$5:$J$9 est une table qui fait correspondre 1, 2, 3, 6, 12 à M1, M2, M3, M4, M5.

Ça correspond au Select Case taille de h2so4.

Cette formule ne tient pas compte du contenu de l'indice 1. Elle cherche un M* dans les indices de 1 à 12 de l'emplacement.

Le modulo fait le travail pour affecter les disponibilités selon l'indice.

Cordialement

Grâce à vous je me rapproche du but!!

Au vu du nombre de lignes totales de mon fichier l'aide de h2so4 est plus rapide en effet, mais la formule de jvdo est parfaite mais en effet d'une lenteur abyssale.....

Seul détail , si une solution est envisageable,c'est qu'il peut arriver que ce ne soit pas forcément " le type d'emballage à l'indice 1 qui conditionne le type d'emballage du niveau"

en plus de cela je me suis planté dans mon exemple.......

Si sur une étagère j'ai mis une référence M3 en position 1 en 4 et en 7 , j'aimerais avoir l'info que la position 10 est disponible

En fait les positions de M3 sont 1 , 5 et 9 .

Merci beaucoup !

Cloclo

Bonjour,

voici une adaptation, la première occurrence d'un emballage sur un niveau, détermine le type d'emballage pour le niveau. m3 occupe 4 indices.

! vérifie tes données, j'ai trouvé un emballage M5 sur un niveau contenant des M3 et un emballage de type O22

Sub aargh()
    With Sheets("MG14")
        dl = .Cells(Rows.Count, 1).End(xlUp).Row
        For i = 2 To dl Step 12
            em = ""
            nc = 1
            For j = 0 To 11
                em = .Cells(i + j, "H")
                If Left(em, 1) = "M" Then
                    taille = Mid(em, 2)
                    Select Case taille
                    Case 1, 2
                        nc = Val(taille)
                    Case 3
                        nc = 4
                    Case 4
                        nc = 6
                    Case 5
                        nc = 12
                    End Select
                    Exit For
                End If
            Next j
            For j = 0 To 11 Step nc
                If Left(.Cells(i + j, "H"), 1) = "M" Then
                    .Cells(i + j, "I") = "Occupé " & em
                Else
                    .Cells(i + j, "I") = "Dispo " & em
                End If
                For k = 1 To nc - 1
                    .Cells(i + j + k, "I") = "Pas dispo"
                    .Cells(i + j + k, "H") = "Vide"
                Next k
            Next j
        Next i
    End With
End Sub

Bonjour,

Merci beaucoup.

J'ai testé sur l'ensemble de mon fichier et j'ai en effet beaucoup d'erreurs, mais grâce à vous j'ai pu avancer.

Cloclo

Bonjour,

merci pour ton retour.

Rechercher des sujets similaires à "disponibilite emplacement"