Macro if range
Résolu
tactac2
-
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
-
bonjour,
sans bouclerIf Application.Min(Range("D2:D4")) < 5 Then ThisWorkbook.ActiveSheet.PrintOut 1 Application.Goto Reference:="Macro2" end if
:-x -
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.
-
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. -