Excel - Power Query - Power Pivot - VBA

VBA09 | Alerte de stock

Énoncé

  • Thème : tableaux dynamiques | Durée : 20 min | Niveau : intermédiaire.
  • Macro à écrire : Alerte.

Travail demandé

  • Ranger dans un tableau dynamique produits() le nom des produits dont le stock (colonne B) est inférieur à 10.
  • Afficher chacun d'eux dans la fenêtre Exécution avec Debug.Print.
  • Écrire en D1 la liste séparée par une virgule et une espace (fonction Join), ou Aucun s'il n'y en a pas.

Corrigé

Sub Alerte()
    Dim produits() As String
    Dim nb As Long, i As Long
    i = 2
    Do While Cells(i, 1).Value <> ""
        If Cells(i, 2).Value < 10 Then
            nb = nb + 1
            ReDim Preserve produits(1 To nb)
            produits(nb) = Cells(i, 1).Value
        End If
        i = i + 1
    Loop
    If nb = 0 Then
        Range("D1").Value = "Aucun"
    Else
        For i = 1 To nb
            Debug.Print produits(i)
        Next i
        Range("D1").Value = Join(produits, ", ")
    End If
End Sub
  • Dim produits() As String déclare un tableau sans taille ; ReDim Preserve l'agrandit en gardant son contenu.
  • Avant le premier ReDim, le tableau n'a pas d'élément : UBound(produits) provoquerait l'erreur 9, d'où le compteur nb.

Pour aller plus loin