XL 2010 Comment garder ma feuille ma feuille verouillée malgré une erreur de code

Eric kankonde

XLDnaute Nouveau
Bonjour tout le monde.
J'ai programmé une facture qui met a jour mon stock automatiquement. Mais avant ça je sélectionne d'abord la référence et la quantité. si j'appuie sur le bouton "mise a jour stock & print " de la feuille "facture", le nombre d'articles concernés dans la feuille "stock" diminuent automatiquement.
Voici ma difficultés : pour la mise a jour du stock, j'ai mis un mot de passe (54628) au début de mon code pour déverrouillage et à la fin pour le verrouillage. Mais si le code n'arrive pas à la fin ma feuille reste déverrouillée (donc quelqu'un peut la modifier à mon absence). Par exemple, si je met la référence sans la quantité, et je valide, le code n'arrive pas à la fin et il déverrouille. Aidez moi svp. Je ne veux pas que ma feuille se déverrouille même si j'oublie la quantité.
Je veux aussi que mon code ne fonctionne pas si seule la quantité est saisie sans référence.
Cordialement.
Mon classeur en pièce jointe.
 

Pièces jointes

  • APK KKR FACTURE.xlsm
    91.7 KB · Affichages: 6

Calvus

XLDnaute Barbatruc
Bonjour et bienvenue sur le forum,

J'ai ajouté une petite macro qui permet de protéger la feuille avant de sortir quand le code n'arrive pas au bout.

On appelle la macro par la procédure : Call

A tester à fond pour voir si je n'ai rien oublié. (normalement non..)
VB:
Sub verification_stock()
ActiveSheet.Unprotect Password:="54628"
Dim cellule As Range: Dim test As Boolean

test = False

For Each cellule In Range("E10:E19")
    If (cellule.Value = "-") Then
        test = True
        Exit For
        End If
        Next cellule
    If (test = True) Then
    MsgBox ("Des articles hors stock figurent dans la facture kankoer, il n'est pas possible de continuer")

'ICI
Call Mon_MDP
    
    Exit Sub
    End If
    
    Dim ligne As Integer: ligne = 2
Dim valeur_stock As Integer: valeur_stock = 0
Dim valeur_demandee As Integer: valeur_demandee = 0
Dim ref_cat As String: Dim ref_facture As String
Dim choix_utilisateur As Byte

While (Workbooks("APK KKR FACTURE.xlsm").Worksheets("stock").Cells(ligne, 5).Value <> "")
       valeur_stock = Workbooks("APK KKR FACTURE.xlsm").Worksheets("stock").Cells(ligne, 5).Value
       ref_cat = Workbooks("APK KKR FACTURE.xlsm").Worksheets("stock").Cells(ligne, 1).Value
      
       For Each cellule In ThisWorkbook.Worksheets("facture").Range("a10:a19")
      
           If (cellule.Value = ref_cat) Then
           valeur_demandee = ThisWorkbook.Worksheets("facture").Cells(cellule.Row, 2)
           If (valeur_demandee > valeur_stock) Then
           MsgBox ("la reference" & cellule.Value & "kankoer ne possede pas assez de stock")
           test = True
        End If
    End If
        
     Next cellule
     ligne = ligne + 1
    Wend
    
        If (test = True) Then

'ICI
Call Mon_MDP
    
    Exit Sub
Else
    choix_utilisateur = MsgBox("la facture kankoer semble correcte. souhaitez-vous l'imprimer et mettre a jour le stock?", vbYesNo)
    If (choix_utilisateur = 6) Then
    For Each cellule In ThisWorkbook.Worksheets("facture").Range("a10:a19")
    ligne = 2
    While (Workbooks("APK KKR FACTURE.xlsm").Worksheets("stock").Cells(ligne, 5).Value <> "")
    If (cellule.Value = Workbooks("APK KKR FACTURE.xlsm").Worksheets("stock").Cells(ligne, 1).Value) Then
        Workbooks("APK KKR FACTURE.xlsm").Worksheets("stock").Cells(ligne, 5).Value = Workbooks("APK KKR FACTURE.xlsm").Worksheets("stock").Cells(ligne, 5).Value - ThisWorkbook.Worksheets("facture").Cells(cellule.Row, 2).Value
        End If
        ligne = ligne + 1
        Wend
        Next cellule
    Else

'ICI
Call Mon_MDP

Exit Sub
    
     End If
  End If
  ThisWorkbook.Worksheets("facture").PrintPreview

Sheets("facture").Protect Password:="54628", Contents:=True, Scenarios:=True
    
    
End Sub

Sub Mon_MDP()
Sheets("facture").Protect Password:="54628", Contents:=True, Scenarios:=True

End Sub

Fichier joint.

A+
 

Pièces jointes

  • APK KKR FACTURE.Calvus.xlsm
    85.8 KB · Affichages: 3

Paf

XLDnaute Barbatruc
Bonjour,


VB:
Private Sub Workbook_Open()
Worksheets("stock").Protect UserInterfaceOnly:=True 'protège l'onglet en laissant les macros agir
End Sub
La feuille est toujours verrouillée, mais les macro fonctionnent.

Les lignes
Code:
ActiveSheet.Unprotect Password:="54628"
Code:
Sheets("facture").Protect Password:="54628", Contents:=True, Scenarios:=True
peuvent être supprimées.

A+

Edit: Bonjour Calvus
 

Eric kankonde

XLDnaute Nouveau
Bonjour et bienvenue sur le forum,

J'ai ajouté une petite macro qui permet de protéger la feuille avant de sortir quand le code n'arrive pas au bout.

On appelle la macro par la procédure : Call

A tester à fond pour voir si je n'ai rien oublié. (normalement non..)
VB:
Sub verification_stock()
ActiveSheet.Unprotect Password:="54628"
Dim cellule As Range: Dim test As Boolean

test = False

For Each cellule In Range("E10:E19")
    If (cellule.Value = "-") Then
        test = True
        Exit For
        End If
        Next cellule
    If (test = True) Then
    MsgBox ("Des articles hors stock figurent dans la facture kankoer, il n'est pas possible de continuer")

'ICI
Call Mon_MDP
   
    Exit Sub
    End If
   
    Dim ligne As Integer: ligne = 2
Dim valeur_stock As Integer: valeur_stock = 0
Dim valeur_demandee As Integer: valeur_demandee = 0
Dim ref_cat As String: Dim ref_facture As String
Dim choix_utilisateur As Byte

While (Workbooks("APK KKR FACTURE.xlsm").Worksheets("stock").Cells(ligne, 5).Value <> "")
       valeur_stock = Workbooks("APK KKR FACTURE.xlsm").Worksheets("stock").Cells(ligne, 5).Value
       ref_cat = Workbooks("APK KKR FACTURE.xlsm").Worksheets("stock").Cells(ligne, 1).Value
     
       For Each cellule In ThisWorkbook.Worksheets("facture").Range("a10:a19")
     
           If (cellule.Value = ref_cat) Then
           valeur_demandee = ThisWorkbook.Worksheets("facture").Cells(cellule.Row, 2)
           If (valeur_demandee > valeur_stock) Then
           MsgBox ("la reference" & cellule.Value & "kankoer ne possede pas assez de stock")
           test = True
        End If
    End If
       
     Next cellule
     ligne = ligne + 1
    Wend
   
        If (test = True) Then

'ICI
Call Mon_MDP
   
    Exit Sub
Else
    choix_utilisateur = MsgBox("la facture kankoer semble correcte. souhaitez-vous l'imprimer et mettre a jour le stock?", vbYesNo)
    If (choix_utilisateur = 6) Then
    For Each cellule In ThisWorkbook.Worksheets("facture").Range("a10:a19")
    ligne = 2
    While (Workbooks("APK KKR FACTURE.xlsm").Worksheets("stock").Cells(ligne, 5).Value <> "")
    If (cellule.Value = Workbooks("APK KKR FACTURE.xlsm").Worksheets("stock").Cells(ligne, 1).Value) Then
        Workbooks("APK KKR FACTURE.xlsm").Worksheets("stock").Cells(ligne, 5).Value = Workbooks("APK KKR FACTURE.xlsm").Worksheets("stock").Cells(ligne, 5).Value - ThisWorkbook.Worksheets("facture").Cells(cellule.Row, 2).Value
        End If
        ligne = ligne + 1
        Wend
        Next cellule
    Else

'ICI
Call Mon_MDP

Exit Sub
   
     End If
  End If
  ThisWorkbook.Worksheets("facture").PrintPreview

Sheets("facture").Protect Password:="54628", Contents:=True, Scenarios:=True
   
   
End Sub

Sub Mon_MDP()
Sheets("facture").Protect Password:="54628", Contents:=True, Scenarios:=True

End Sub

Fichier joint.

A+
Merci et c'est très bon
 

Discussions similaires

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 084
Messages
2 085 194
Membres
102 810
dernier inscrit
mohammedaminelahbali