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

  • Votes
  • Date
  • Date décroissante
  1. Contributeur
    bonjour,

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


    :-x
    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.
      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.