Remplir tableau avec articles en rupture de stock Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
k
khaoulaMsk
Nouveau venu
Nouveau venu
Messages : 6
Inscrit le : 13 mars 2017
Version d'Excel : 2013

Message par khaoulaMsk » 13 mars 2017, 16:05

Bonjour tous le monde,

Je travaille sur un fichier de suivi des alertes de stock, en se basant sur un tableau (dans le fichier ci-joint) qui contient le code de l'article, le stock final, le stock mini, alerte (=0 s'il ya une rupture) et la quantité à commander.

Mon objectif est de remplir un tableau dans une autre feuille par les articles qui sont en rupture de stock, le tableau va contenir le code, le stock final, le stock mi et la qté à commander.

J'ai essayé avec ce code, il m'affiche une erreur 1004.

Private Sub Workbook_Open()

Dim alertestock As Range



For Each alertestock In Sheets("Feuil1").Range("Alerte")



If alertestock = 0 Then

Alertes.Cells(alertestock.Row, 1) = Feuil1.Cells(alertestock.Row, 1)
Alertes.Cells(alertestock.Row, 2) = Feuil1.Cells(alertestock.Row, 3)
Alertes.Cells(alertestock.Row, 3) = Feuil1.Cells(alertestock.Row, 4)
Alertes.Cells(alertestock.Row, 4) = Feuil1.Cells(alertestock.Row, 6)




End If

Next alertestock
 
End Sub

Merci d'avance pour votre aide.
alerte Stock.xlsm
(67.99 Kio) Téléchargé 42 fois
k
khaoulaMsk
Nouveau venu
Nouveau venu
Messages : 6
Inscrit le : 13 mars 2017
Version d'Excel : 2013

Message par khaoulaMsk » 13 mars 2017, 18:55

Bonjour,
J'ai arrivé avec le code ci-dessous à copier une seule ligne, le problème c'est que le code balaye les articles mais n'enregistre que le dernier article en rupture dans le stock.
Sub test()

Dim alertestock As Range

For i = 2 To 10
For Each alertestock In Feuil1.Range("E2:E399")


If alertestock = 0 Then


With Sheets("Feuil1")
    .Range(.Cells(alertestock.Row, 1), .Cells(alertestock.Row, 6)).Copy _
    Sheets("Feuil2").Range("A" & i)
    
End With



End If



Next alertestock
Next
Worksheets("Feuil2").Activate



End Sub
M
MFerrand
Fanatique d'Excel
Fanatique d'Excel
Messages : 17'203
Appréciations reçues : 445
Inscrit le : 20 juillet 2015
Version d'Excel : 2010 FR

Message par MFerrand » 14 mars 2017, 01:15

Bonjour,

Il n'ya pas de plage nommé Alerte, d'où erreur... !
M
MFerrand
Fanatique d'Excel
Fanatique d'Excel
Messages : 17'203
Appréciations reçues : 445
Inscrit le : 20 juillet 2015
Version d'Excel : 2010 FR

Message par MFerrand » 14 mars 2017, 01:39

Essaie ainsi:
Sub RecenserAlertes()
    Dim Alt(), n%, i%, j%, k%
    With Worksheets("Feuil1")
        n = .Cells(.Rows.Count, 5).End(xlUp).Row
        For i = 2 To n
            If .Cells(i, 5) = 0 Then
                ReDim Preserve Alt(3, k)
                Alt(0, k) = .Cells(i, 1): Alt(1, k) = .Cells(i, 3)
                Alt(2, k) = .Cells(i, 4): Alt(3, k) = .Cells(i, 6)
                k = k + 1
            End If
        Next i
    End With
    With Worksheets("Alertes")
        .Range("A1").CurrentRegion.Offset(1).ClearContents
        .Range("A2").Resize(k, 4).Value = WorksheetFunction.Transpose(Alt)
        .Activate
    End With
End Sub
Cordialement.
khaoulamsk_alerte Stock.xlsm
(74.89 Kio) Téléchargé 31 fois
k
khaoulaMsk
Nouveau venu
Nouveau venu
Messages : 6
Inscrit le : 13 mars 2017
Version d'Excel : 2013

Message par khaoulaMsk » 14 mars 2017, 09:48

Bonjour,

Merci énormément Ferrand pour ta réponse, ça marche très bien :D

Cordialement,



MFerrand a écrit :Essaie ainsi:
Sub RecenserAlertes()
    Dim Alt(), n%, i%, j%, k%
    With Worksheets("Feuil1")
        n = .Cells(.Rows.Count, 5).End(xlUp).Row
        For i = 2 To n
            If .Cells(i, 5) = 0 Then
                ReDim Preserve Alt(3, k)
                Alt(0, k) = .Cells(i, 1): Alt(1, k) = .Cells(i, 3)
                Alt(2, k) = .Cells(i, 4): Alt(3, k) = .Cells(i, 6)
                k = k + 1
            End If
        Next i
    End With
    With Worksheets("Alertes")
        .Range("A1").CurrentRegion.Offset(1).ClearContents
        .Range("A2").Resize(k, 4).Value = WorksheetFunction.Transpose(Alt)
        .Activate
    End With
End Sub
Cordialement.
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message