Macro if range

Résolu


Bonsoir je veux créer une feuille de calcul qui me permettrait de gérer un stock avec une colonne entrée , une colonne sortie et une colonne stock. Afin d'attirer l'attention j'ai créer une macro qui me lance une impression si un de mes articles en stock est inférieur à 5.
Mon soucis est que je n'arrive pas à faire ce test sur une plage complète de ma colonne "D" mais cellules par cellules ce qui risque d'être long à écrire. Quelqu'un peut il m'expliquer la marche à suivre
Merci d'avance

Private Sub Workbook_BeforeClose(Cancel As Boolean)

If Range("D2").Value < 5 Then
ActiveWindow.SelectedSheets.PrintOut Copies:=1
Application.Goto Reference:="Macro2"

End If

If Range("D3").Value < 5 Then
ActiveWindow.SelectedSheets.PrintOut Copies:=1
Application.Goto Reference:="Macro2"

End If

If Range("D4").Value < 5 Then
ActiveWindow.SelectedSheets.PrintOut Copies:=1
Application.Goto Reference:="Macro2"

End If
End Sub

4 réponses

  1. Contributeur
    bonjour,

    sans boucler
    If Application.Min(Range("D2:D4")) < 5 Then 
        ThisWorkbook.ActiveSheet.PrintOut 1
        Application.Goto Reference:="Macro2"
    end if 


    :-x
    2
    1. Bonjour,
      Tu peux écrire ton code sous la forme :

      Private Sub Workbook_BeforeClose(Cancel As Boolean) 
      Dim cellule As Range
      For Each cellule In Range("D2:D4")
         If cellule.Value < 5 Then 
            ActiveWindow.SelectedSheets.PrintOut Copies:=1 
            Application.Goto Reference:="Macro2" 
         End If 
      Next cellule
      End Sub

      Par contre, je pense qu'il faudra que tu règles les paramètres de PrintOut pour ne pas avoir trop de pages.
      0
      1. Contributeur
        Bonjour,

        en m'inspirant de ce que Gord121 a écrit, je ferais plutôt :

        Private Sub Workbook_BeforeClose(Cancel As Boolean)  
        Dim cellule As Range 
        Dim compte As String 
        compte = 0 
        For Each cellule In Range("D2:D4") 
           If cellule.Value < 5 Then  
              compte = compte +1 
           End If  
        Next cellule 
        If compte > 0 Then  
              ActiveWindow.SelectedSheets.PrintOut Copies:=1  
               Application.Goto Reference:="Macro2"  
        End If  
        End Sub


        Car il faut que ton impression se lance au moment ou tu as AU MOINS un stock inférieur à 5.
        Ce mec la n'était pas une lumière, car il était niais.
        0
        1. merci à tous ceux qui m'ont apporté leur aide
          0