Comme suite à ta demande en MP, que tu aurais pu mettre ici sans problèmeComment faire maintenant pour la colonne F (quantité sortie) car coller la macro à la suite de l'autre en remplaçant "G" par "F" ça ne suffit pas.
D'autre part, comment récupérer le format couleur rouge ou vert de la colonne L (mise en forme conditionnelle si stock > à .... affichage vert et < 0... affichage rouge. C'est un outil d'alerte pour la personne qui saisit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim LibArt As String, LigArt As Long, VStock As Single
If Left(Target.Address(0, 0), 1) = "F" Or Left(Target.Address(0, 0), 1) = "G" Then
Application.EnableEvents = False
LibArt = Range("D" & Target.Row)
LigArt = LigFind(LibArt)
If LigArt <> 0 Then
Me.TextBox1.Visible = True
Me.TextBox1.Top = Target.Top
Me.TextBox1.Text = "Quantité en stock : " & Range("L" & LigArt)
If Range("L" & LigArt).Value <= 5000 Then
' Texte en ROUGE
Me.TextBox1.ForeColor = CLng(&HFF&) ' "&H000000FF&"
Else
' Texte en VERT
Me.TextBox1.ForeColor = CLng(&HC000&) '"&H0000C000&"
End If
End If
Application.EnableEvents = True
End If
End Sub
Function LigFind(Quoi)
LigFind = 0
On Error Resume Next
With ActiveSheet
LigFind = Range("M:M").Find(What:=Quoi, LookIn:=xlValues, LookAt:=xlWhole, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False).Row
End With
On Error GoTo 0
End Function
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Left(Target.Address(0, 0), 1) <> "F" And Left(Target.Address(0, 0), 1) <> "G" Then
Me.TextBox1.Text = ""
Me.TextBox1.Visible = False
End If
End Sub
Désolé MR71, d'habitude je mets des annotations dan mon codeJe n'arrive pas à comprendre ce code, je me demande quelles sont les lignes de code qui permettent d'afficher le bon stock par rapport au papier sorti.
Mais si, c'est possibleeeeeeeEncore une question, l'affichage en rouge ou vert est supérieur à 100 000 pour le format A4 - 80g - Papier blanc uniquement et les autres c'est bien 5000. J'ai mis le chiffre dans la macro à 100000 car j'imagine qu'on ne peut pas traiter le stock mini différemment dans la macro
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim LibArt As String, LigArt As Long, QtStock As Single, VStock As Single
' Si la colonne de saisie est F ou G
If Left(Target.Address(0, 0), 1) = "F" Or Left(Target.Address(0, 0), 1) = "G" Then
' Empècher les évènements de se reproduire lors de la modification
Application.EnableEvents = False
' Récupérer le libellé de l'article de la ligne saisie
LibArt = Range("D" & Target.Row)
' Récupérer le numéro de la ligne en effectuant un recherche
LigArt = LigFind(LibArt)
' Si la ligne à été trouvée = différend de ZERO
If LigArt <> 0 Then
' Récupérer la quantité en stock de l'article
QtStock = Range("L" & LigArt)
' Affiche le TextBox
Me.TextBox1.Visible = True
' Le positionner aun bon endroit par rapport à la hauteur
Me.TextBox1.Top = Target.Top
' Inscrire le texte qui va bien, avec la quantité de la ligne
Me.TextBox1.Text = "Quantité en stock : " & QtStock
' Selon
If LibArt = "A4 - 80g - Papier blanc" And QtStock <= 100000 Then
Me.TextBox1.ForeColor = CLng(&HFF&) ' "&H000000FF&"
ElseIf LibArt = "A4 - 80g - Papier blanc" Then
Me.TextBox1.ForeColor = CLng(&HC000&) '"&H0000C000&"
ElseIf QtStock <= 5000 Then
Me.TextBox1.ForeColor = CLng(&HFF&) ' "&H000000FF&"
Else
Me.TextBox1.ForeColor = CLng(&HC000&) '"&H0000C000&"
End If
End If
Application.EnableEvents = True
End If
End Sub
Function LigFind(Quoi)
LigFind = 0
On Error Resume Next
' Avec la feuille active
With ActiveSheet
' Rechercher dans la colonne M, le type de papier entré ou sorti
LigFind = Range("M:M").Find(What:=Quoi, LookIn:=xlValues, LookAt:=xlWhole, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False).Row
End With
On Error GoTo 0
End Function
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
' Pour tout changement de cellule
' si la colonne est différente de F ou G
If Left(Target.Address(0, 0), 1) <> "F" And Left(Target.Address(0, 0), 1) <> "G" Then
' On efface le texte
Me.TextBox1.Text = ""
' et on masque le TxtBox
Me.TextBox1.Visible = False
End If
End Sub
Ca ne l'est pas malheureusementC'est votre métier peut-être ?