Problème de macros mais avec condition .
Eric_3280
Messages postés
24
Statut
Membre
-
Eric_3280 Messages postés 24 Statut Membre -
Eric_3280 Messages postés 24 Statut Membre -
BONJOUR
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 » stock : de la cellule « j10 :j19 » de la feuille « facture »
CI-JOINT MON CLASSEUR
MERCI
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 » stock : de la cellule « j10 :j19 » de la feuille « facture »
CI-JOINT MON CLASSEUR
MERCI
A voir également:
- Problème de macros mais avec condition .
- Excel cellule couleur si condition texte - Guide
- Excel condition ou - Guide
- Nbval avec condition - Forum Excel
- Excel colorer une cellule sous condition d'une autre cellule ✓ - Forum Excel
- NBVAL avec conditions - Forum Excel
2 réponses
Bonjour Éric, bonjour le forum,
Visiblement tu as oublié le lien vers le classeur... Mais ça devrait donner un code du style :
Visiblement tu as oublié le lien vers le classeur... Mais ça devrait donner un code du style :
Sub Macro1()
If Range("I10:I19").Value > Range("J10:J19").Value Then
MsgBox "Dépassement du Stock ! Opération annulée."
Exit Sub
Else
'ton code
End If
End Sub
Re,
La règle d'or en VBA s'est d'éviter autant que tu le peux les Select et autres Activate. Ça ne fait que ralentir le code et c'est souvent source de plantage.
Tu n'as toujours pas daigné mettre ton fichier ce qui rend la compréhension beaucoup plus difficile.
Ton code corrigé mais que tu devras vérifier :
La règle d'or en VBA s'est d'éviter autant que tu le peux les Select et autres Activate. Ça ne fait que ralentir le code et c'est souvent source de plantage.
Tu n'as toujours pas daigné mettre ton fichier ce qui rend la compréhension beaucoup plus difficile.
Ton code corrigé mais que tu devras vérifier :
Private Sub SAUVEGARDER_MONTANT_Click()
Dim HF As Worksheet
Dim F As Worksheet
Set HF = Worksheets("historique factures")
Set F = Worksheets("facture")
If F.Range("I10:I19").Value > F.Range("J10:J19").Value Then
MsgBox "Dépassement du Stock ! Opération annulée."
Exit Sub
Else
HF.Unprotect Password:="54628"
HF.Rows("2:2").Insert Shift:=xlDown
HF.Rows("2:2").ClearFormats
F.Unprotect Password:="54628"
F.Range("F4:G4").Copy
HF.Range("B2").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
F.Range("D1:G1").Copy
HF.Range("C2").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
HF.Range("C2:F2").NumberFormat = "m/d/yyyy"
F.Range("G23").Copy
HF.Range("D2").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
HF.Range("D2").NumberFormat = "#,##0.00 $"
HF.Range("U1").Copy
HF.Range("A2").Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
HF.Protect Password:="54628", Contents:=True, Scenarios:=True
'************** partie à revoir
'là j'ai rien compris à ton code. Tu copies puis tu effaces ?!....
F.Range("C7").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'**************
HF.Protect Password:="54628", Contents:=True, Scenarios:=True
F.Protect Password:="54628", Contents:=True, Scenarios:=True
End If
End Sub
Merci pour ta réponse. mais le code que vous m'avez envoyer doit faire allusion à la feuille "facture" (le classeur c "apk kkr facture"), moi je ne sais pas comment faire pour que le code fasse allusion à la feuille facture. POUVEZ-VOUS M'AIDER SVP? ou encore, comment faire pour vous envoyer mon classeur? j'ai envoyé quand même le code.
Private Sub SAUVEGARDER_MONTANT_Click() Range("I8").Select Sheets("historique factures").Select ActiveSheet.Unprotect Password:="54628" Rows("2:2").Select Selection.Insert Shift:=xlDown Selection.ClearFormats Range("A3").Select Sheets("facture").Select ActiveSheet.Unprotect Password:="54628" Range("F4:G4").Select Selection.Copy Sheets("historique factures").Select Range("B2").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Sheets("facture").Select Range("D1:G1").Select Application.CutCopyMode = False Selection.Copy Sheets("historique factures").Select Range("C2").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Application.CutCopyMode = False Selection.NumberFormat = "m/d/yyyy" Sheets("facture").Select ActiveWindow.SmallScroll Down:=42 Range("G23").Select Selection.Copy Sheets("historique factures").Select Range("D2").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Application.CutCopyMode = False Selection.NumberFormat = "#,##0.00 $" Range("E1").Select ActiveWindow.ScrollColumn = 2 ActiveWindow.ScrollColumn = 3 ActiveWindow.ScrollColumn = 4 Range("U1").Select Selection.Copy ActiveWindow.ScrollColumn = 3 ActiveWindow.ScrollColumn = 2 ActiveWindow.ScrollColumn = 1 Range("A2").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Sheets("facture").Select ActiveWindow.SmallScroll Down:=-54 Range("C7").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Range("C7").Select Application.CutCopyMode = False Selection.ClearContents Sheets("historique factures").Select ActiveSheet.Protect Password:="54628", Contents:=True, Scenarios:=True Selection.Copy Sheets("facture").Select Range("C7").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Range("A1:C1").Select ActiveSheet.Protect Password:="54628", Contents:=True, Scenarios:=True End SubExplications disponibles ici : ICI
Merci d'y penser dans tes prochains messages.