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

michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 315
 
bonjour,

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


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