Macro if range

Résolu
tactac2 -  
 tactac2 -


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. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    bonjour,

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


    :-x
    2
  2. Gord21 Messages postés 928 Statut Membre 289
     
    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
  3. chossette9 Messages postés 6855 Date d'inscription   Statut Contributeur Dernière intervention   1 313
     
    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
  4. tactac2
     
    merci à tous ceux qui m'ont apporté leur aide
    0