Bonjour Steph,
J'ai rectifié le code (...pb avec les index du tableau local 'array') :
Sub RechRuptures()
Dim oRangeFrom As Range, oCell As Range, oRangeTo As Range, oSheetTo As Worksheet
Dim aArticlesRuptures() As String
Dim lNb As Long, i As Long
On Error Resume Next
'On tente d'affecter la feuille "Commandes"
Set oSheetTo = ThisWorkbook.Worksheets("Commandes")
On Error GoTo 0
'Si la feuille n'existe pas, on la créée comme première feuille du classeur
If oSheetTo Is Nothing Then
Set oSheetTo = ThisWorkbook.Worksheets.Add()
oSheetTo.Name = "Commandes"
Else
'Si elle existe, on efface son contenu
oSheetTo.Cells.Clear
End If
'On parcourt la feuille tableau "Inventaire"
Set oRangeFrom = ThisWorkbook.Names("Inventaire").RefersToRange
For Each oCell In oRangeFrom.Columns(3).Cells
'Si le seuil est atteint alors on indique stocke l'article dans le tableau local
If Not IsEmpty(oCell.Offset(, 2).Value) And Not IsEmpty(oCell.Value) Then
If oCell.Value <= IIf(IsNull(oCell.Offset(, 1).Value), 0, oCell.Offset(, 1).Value) Then
ReDim Preserve aArticlesRuptures(1, lNb) 'Rectif GVS du 03/11/2021
aArticlesRuptures(0, lNb) = oCell.Offset(, 2).Value 'Rectif GVS du 03/11/2021
aArticlesRuptures(1, lNb) = oCell.Offset(, -3).Value 'Rectif GVS du 03/11/2021
lNb = lNb + 1
End If
End If
Next
'On recopie le tableau local dans la feuille
oSheetTo.Range("A1").Value = "Articles à commander au " & Format(CDate(Now()), "dd/mm/yyyy")
For i = 0 To UBound(aArticlesRuptures(), 2) 'Rectif GVS du 03/11/2021
Set oRangeTo = oSheetTo.Range("A" & CStr(i + 2))
oRangeTo.Value = aArticlesRuptures(0, i)
Set oRangeTo = oSheetTo.Range("B" & CStr(i + 2))
oRangeTo.Value = aArticlesRuptures(1, i)
Next
'On fait le ménage
Set oCell = Nothing
Set oRangeTo = Nothing
Set oRangeFrom = Nothing
Set oSheetTo = Nothing
End Sub
Je joins le classeur qui m'a servi pour les tests.