XL 2010 Executer le macro dans un classeur protegé

Eric kankonde

XLDnaute Nouveau
BONJOUR À TOUS. POUVEZ-VOUS M'AIDER SVP? J'AI UN PROBLÈME AVEC LES MACROS.
Ci-joint mon fichier Excel

Vous trouverez dans la feuille "facture" de mon classeur un bouton "sauvegarder". Ce bouton me sert à enregistrer le montant au bas de la facture (il enregistre dans la feuille "historique des factures"). Mais le problème est qu’il le fait même si la quantité saisie dépasse le stock. Quelqu’un peut-il m’aider ? J’aimerai sauvegarder le montant seulement si la quantité demandée est inférieure au stock. Sinon un message d’alerte s’affiche. (Quantité : de la cellule « I10 :I19 » de la feuille "facture".Stock : de la cellule « j10 :j19 » de la feuille « facture »
CI-JOINT MON CLASSEUR
MERCI
 

Pièces jointes

  • APK KKR FACTURE.xlsm
    66.6 KB · Affichages: 18

Dranreb

XLDnaute Barbatruc
Bonjour.
Essayez comme ça :
VB:
Sub SAVEFACTURE()
Dim TDF(), TH(1 To 1, 1 To 5), L&, LOt As ListObject
TDF = Sheet1.[A1:J23].Value
For L = 10 To Sheet1.[I21].End(xlUp).Row
   If TDF(L, 9) > TDF(L, 10) Then
      Application.Goto Sheet1.Cells(L, "I")
      MsgBox ActiveCell.Address & ": Qté " & TDF(L, 9) & " dépasse de " & TDF(L, 9) - TDF(L, 10) _
         & " stock " & TDF(L, 10), vbExclamation, "Sauvegarde"
      Exit Sub: End If: Next L
Set LOt = Sheet4.ListObjects(1)
TH(1, 1) = WorksheetFunction.Max(LOt.ListColumns("N° Facture").DataBodyRange) + 1
TH(1, 2) = TDF(1, 1)
TH(1, 3) = TDF(1, 4)
TH(1, 4) = TDF(23, 7)
TH(1,5)= ? ' pas compris ce que vous vouliez y mettre
LOt.ListRows.Add(1).Range.Value = TH
LOt.ListRows(1).Range.Interior.ColorIndex = xlNone
End Sub
Supprimez les ligne vide dans l'historique: elles ne servent à rien.
 

Eric kankonde

XLDnaute Nouveau
Merci
Bonjour.
Essayez comme ça :
VB:
Sub SAVEFACTURE()
Dim TDF(), TH(1 To 1, 1 To 5), L&, LOt As ListObject
TDF = Sheet1.[A1:J23].Value
For L = 10 To Sheet1.[I21].End(xlUp).Row
   If TDF(L, 9) > TDF(L, 10) Then
      Application.Goto Sheet1.Cells(L, "I")
      MsgBox ActiveCell.Address & ": Qté " & TDF(L, 9) & " dépasse de " & TDF(L, 9) - TDF(L, 10) _
         & " stock " & TDF(L, 10), vbExclamation, "Sauvegarde"
      Exit Sub: End If: Next L
Set LOt = Sheet4.ListObjects(1)
TH(1, 1) = WorksheetFunction.Max(LOt.ListColumns("N° Facture").DataBodyRange) + 1
TH(1, 2) = TDF(1, 1)
TH(1, 3) = TDF(1, 4)
TH(1, 4) = TDF(23, 7)
TH(1,5)= ? ' pas compris ce que vous vouliez y mettre
LOt.ListRows.Add(1).Range.Value = TH
LOt.ListRows(1).Range.Interior.ColorIndex = xlNone
End Sub
Supprimez les ligne vide dans l'historique: elles ne servent à rien.
Merci beaucoup ce a bien marché.
 

Eric kankonde

XLDnaute Nouveau
Merci

Merci beaucoup ce a bien marché.
Merci une autre question
Posez votre question Lien supprimé


Voici ci-joint mon fichier. Il a un bouton login et logout pour masquer et afficher des feuilles. Mais moi je veux protéger mon classeur puis, appuyer sur logout sans enlever la protection sans qu'il y ait erreur. J'ai essayé mais en vain. Quelqu'un peut-il m'aider ? (Nom d'utilisateur : "ERIC". Mot de passe: " 123") utilisez le même mot de passe pour protéger mon classeur.
Aidez-moi svp.

https://www.cjoint.com/c/IDtfnaL2g1r
 

Eric kankonde

XLDnaute Nouveau
Bonjour en attendant la réponse d'un pro en vba je t'ai bricolé une solution pour que tu puisses travailler si besoin
Bonjour
Posez votre question Lien supprimé


Voici ci-joint mon fichier. Il a un bouton login et logout pour masquer et afficher des feuilles. Mais moi je veux protéger mon classeur puis, appuyer sur logout sans enlever la protection sans qu'il y ait erreur. J'ai essayé mais en vain. Quelqu'un peut-il m'aider ? (Nom d'utilisateur : "ERIC". Mot de passe: " 123") utilisez le même mot de passe pour protéger mon classeur.
Aidez-moi svp.

https://www.cjoint.com/c/IDtfnaL2g1r
 

Discussions similaires

Réponses
2
Affichages
527

Statistiques des forums

Discussions
311 733
Messages
2 082 015
Membres
101 867
dernier inscrit
XFPRO