XL 2016 Bloquer la saise dans un textbox quand une cellule est égale à 0

admin59

XLDnaute Nouveau
Bonjour à tous,

J'ai dans un classeur un Userform qui me permet de d'incrémenter ou de décrémenter les stocks de produits.
Je souhaiterais bloquer la saisie en "sortie" lorsque que le stock d'un produit est à 0 afin d'éviter les stocks négatifs.
J'ai un MsgBox qui m'avertit que le stock est à 0, mais je souhaiterais que ce dernier n'apparaisse pas lorsque je réapprovisionne le stock.

Je vous joins le fichier

Je vous remercie par avance si vous avez une petite idée à me soumettre; cette dernière sera la bienvenue,

Cordialement

Emmanuel
 

Pièces jointes

  • 1.xlsm
    53.2 KB · Affichages: 19

Phil69970

XLDnaute Barbatruc
Bonjour @admin59, le forum

Remplace cette partie de ton code de ton "UserForm1" par celle ci :
VB:
Private Sub CommandButton1_Click()

'Mise à jour du stock et archivage du mouvement
i = CLng(TextBox1.Value)
j = CLng(TextBox3.Value)
r = LIBELLE(i)
S = ROWREF(i)

If Sortie Then
x = Worksheets("Bon de pret").Range("A65536").End(xlUp).Row + 1
Worksheets("Bon de pret").Cells(x, 1) = i

Worksheets("Bon de pret").Cells(x, 2) = r
Worksheets("Bon de pret").Cells(x, 4) = TextBox4.Value
Worksheets("Bon de pret").Cells(x, 5) = TextBox5.Value
Worksheets("Bon de pret").Cells(x, 3) = j

Worksheets("Bon de pret").Cells(x, 3) = j
Worksheets("BD produits").Cells(S, 3) = Worksheets("BD produits").Cells(S, 3) - j

End If

If Réappro = False Then
    If Worksheets("BD produits").Cells(S, 3) <= 0 Then
        UserForm1.SpinButton1.Enabled = False
        MsgBox "Stock insuffisant, voulez vous forcer la saisie"
    End If
End If

If Réappro Then
x = Worksheets("Réappro").Range("A65536").End(xlUp).Row + 1
Worksheets("Réappro").Cells(x, 1) = i

Worksheets("Réappro").Cells(x, 2) = r
Worksheets("Réappro").Cells(x, 4) = ComboBox1.Value
Worksheets("Réappro").Cells(x, 7) = TextBox4.Value
Worksheets("Réappro").Cells(x, 6) = TextBox5.Value
Worksheets("Réappro").Cells(x, 5) = Date

Worksheets("Réappro").Cells(x, 3) = j

Worksheets("Réappro").Cells(x, 3) = j
Worksheets("BD produits").Cells(S, 3) = Worksheets("BD produits").Cells(S, 3) + j

If Worksheets("BD produits").Cells(S, 3) <= 0 Then
    MsgBox "Stock négatif, Attention le stock est toujours négatif", vbCritical, "Gestion du stock"
End If

End If
Unload Me
End Sub

Merci de ton retour

@Phil69970
 

admin59

XLDnaute Nouveau
Bonjour et merci encore de ta réponse.
J'ai remplacé mon code par le tien et cela ne change rien :

Quantité toujours décrémentée en sortie de stock lorsque ce dernier est à 0
Le Msg apparait seulement lors du réappro alors que je souhaite qu'il apparaisse seulement avec l'option sortie de stock et non pour le réappro.

De plus, j'aimerai remplacer les ID produits ( 1,2,3) par SM001, SM002 ect...., mais format pas pris en compte dans le textbox ID produits.

Je te remercie encore pour ton aide

Cordialement

Emmanuel
 

admin59

XLDnaute Nouveau
Bonjour et merci encore de ta réponse.
J'ai remplacé mon code par le tien et cela ne change rien :

Quantité toujours décrémentée en sortie de stock lorsque ce dernier est à 0
Le Msg apparait seulement lors du réappro alors que je souhaite qu'il apparaisse seulement avec l'option sortie de stock et non pour le réappro.

De plus, j'aimerai remplacer les ID produits ( 1,2,3) par SM001, SM002 ect...., mais format pas pris en compte dans le textbox ID produits.

Je te remercie encore pour ton aide

Cordialement

Emmanuel
 

Phil69970

XLDnaute Barbatruc
Bonjour Emmanuel, le forum

Quantité toujours décrémentée en sortie de stock lorsque ce dernier est à 0
Dans cette version toute saisie est impossible si le stock descend en dessous de 0

VB:
Private Sub CommandButton1_Click()

'Mise à jour du stock et archivage du mouvement
i = CLng(TextBox1.Value)
j = CLng(TextBox3.Value)
r = LIBELLE(i)
S = ROWREF(i)

If Sortie Then
    'Ici on teste si le reste en stock est positif
   If Worksheets("BD produits").Cells(S, 3) - j < 0 Then
        MsgBox "Stock insuffisant, sortie stock imppossible" & Chr(13) & Chr(10) & _
        "Vous devez d'abord réapprovionner le stock.", vbCritical, "Rupture de stock !"
        Exit Sub
    Else
        With Worksheets("Bon de pret")
            x = .Range("A65536").End(xlUp).Row + 1
            .Cells(x, 1) = i
            .Cells(x, 2) = r
            .Cells(x, 4) = TextBox4.Value
            .Cells(x, 5) = TextBox5.Value
            .Cells(x, 3) = j
            .Cells(x, 3) = j
        End With
            Worksheets("BD produits").Cells(S, 3) = Worksheets("BD produits").Cells(S, 3) - j
    End If
End If
If Réappro Then
    With Worksheets("Réappro")
        x = .Range("A65536").End(xlUp).Row + 1
        .Cells(x, 1) = i
        .Cells(x, 2) = r
        .Cells(x, 4) = ComboBox1.Value
        .Cells(x, 7) = TextBox4.Value
        .Cells(x, 6) = TextBox5.Value
        .Cells(x, 5) = Date
        .Cells(x, 3) = j
        .Cells(x, 3) = j
    End With
        Worksheets("BD produits").Cells(S, 3) = Worksheets("BD produits").Cells(S, 3) + j
End If
Unload Me
End Sub

Pour ceci, il sera plus logique que cela fasse parti d'une autre question distincte.
Car le principe sur le forum est une question de départ correspond à une ou des solutions puis une autre question dans un autre fil etc.... ceci pour la bonne compréhension des réponses pour les autres personnes qui pourrait avoir une question similaire.
De plus signaler quelle solution ou mixte de solution que tu as retenu et qui correspond pour toi à la réponse à ta question.
De plus, j'aimerai remplacer les ID produits ( 1,2,3) par SM001, SM002 ect...., mais format pas pris en compte dans le textbox ID produits.

@Phil69970
 

admin59

XLDnaute Nouveau
Bonjour Emmanuel, le forum


Dans cette version toute saisie est impossible si le stock descend en dessous de 0

VB:
Private Sub CommandButton1_Click()

'Mise à jour du stock et archivage du mouvement
i = CLng(TextBox1.Value)
j = CLng(TextBox3.Value)
r = LIBELLE(i)
S = ROWREF(i)

If Sortie Then
    'Ici on teste si le reste en stock est positif
   If Worksheets("BD produits").Cells(S, 3) - j < 0 Then
        MsgBox "Stock insuffisant, sortie stock imppossible" & Chr(13) & Chr(10) & _
        "Vous devez d'abord réapprovionner le stock.", vbCritical, "Rupture de stock !"
        Exit Sub
    Else
        With Worksheets("Bon de pret")
            x = .Range("A65536").End(xlUp).Row + 1
            .Cells(x, 1) = i
            .Cells(x, 2) = r
            .Cells(x, 4) = TextBox4.Value
            .Cells(x, 5) = TextBox5.Value
            .Cells(x, 3) = j
            .Cells(x, 3) = j
        End With
            Worksheets("BD produits").Cells(S, 3) = Worksheets("BD produits").Cells(S, 3) - j
    End If
End If
If Réappro Then
    With Worksheets("Réappro")
        x = .Range("A65536").End(xlUp).Row + 1
        .Cells(x, 1) = i
        .Cells(x, 2) = r
        .Cells(x, 4) = ComboBox1.Value
        .Cells(x, 7) = TextBox4.Value
        .Cells(x, 6) = TextBox5.Value
        .Cells(x, 5) = Date
        .Cells(x, 3) = j
        .Cells(x, 3) = j
    End With
        Worksheets("BD produits").Cells(S, 3) = Worksheets("BD produits").Cells(S, 3) + j
End If
Unload Me
End Sub

Pour ceci, il sera plus logique que cela fasse parti d'une autre question distincte.
Car le principe sur le forum est une question de départ correspond à une ou des solutions puis une autre question dans un autre fil etc.... ceci pour la bonne compréhension des réponses pour les autres personnes qui pourrait avoir une question similaire.
De plus signaler quelle solution ou mixte de solution que tu as retenu et qui correspond pour toi à la réponse à ta question.


@Phil69970
Bonjour

Un grand merci pour tout
Cela fonctionne

C'est exactement ce que je voulais

Cordialement
 

admin59

XLDnaute Nouveau
Bonjour

Je me permets de vous recontacter pour un nouvelle question

J'ai dans un Userform un TextBox dans lequel je saisis les ID produits ( dans mon fichier, ils se nomment 1,2,3 etc...

Je voudrais les remplacer par SM001, SM002 et ainsi de suite.
Le souci est que mon TextBox n'accepte pas ce format
Auriez vous une solution pour ceci

D'avance merci

Cordialement
 

Phil69970

XLDnaute Barbatruc
@admin59

Ceci fonctionne mais tu risques d'avoir des pb sur ton "label7"
Code:
Private Sub TextBox1_Change()
Me.TextBox1 = Format(Me.TextBox1, """SM""000")
'*****C'est ici que tu dois déclarer Label7.Caption = ....
End Sub

et ici ton code est à repenser
Code:
Private Sub CommandButton1_Click()

'Mise à jour du stock et archivage du mouvement
i =......... '??? Pb de code à prévoir ici

@Phil69970
 

admin59

XLDnaute Nouveau
Bonjour,

Oui, le label 7 me pose un problème.....
Je pense avoir atteint mes limites car je ne comprends pas pourquoi un changement de format sur l'ID produit peut avoir une incidence sur le label 7 ( libellé produit) qui ne s'affiche plus

Cordialement

Emmanuel
 

Discussions similaires

Statistiques des forums

Discussions
312 207
Messages
2 086 246
Membres
103 163
dernier inscrit
Pelaez