Problème de macros mais avec condition .

Fermé
Eric_3280 Messages postés 22 Date d'inscription jeudi 11 avril 2019 Statut Membre Dernière intervention 15 février 2022 - Modifié le 12 avril 2019 à 13:42
Eric_3280 Messages postés 22 Date d'inscription jeudi 11 avril 2019 Statut Membre Dernière intervention 15 février 2022 - 12 avril 2019 à 13:39
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

2 réponses

ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 160
11 avril 2019 à 15:05
Bonjour Éric, bonjour le forum,

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

0
Eric_3280 Messages postés 22 Date d'inscription jeudi 11 avril 2019 Statut Membre Dernière intervention 15 février 2022
Modifié le 12 avril 2019 à 13:43
BONJOUR THAUTHEME. BONJOUR FORUM

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 Sub


EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.
0
ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 160
12 avril 2019 à 10:12
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 :

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

0
Eric_3280 Messages postés 22 Date d'inscription jeudi 11 avril 2019 Statut Membre Dernière intervention 15 février 2022
12 avril 2019 à 13:39
Merci pour le code. Mais jusque là il ne marche pas encore. Et moi, je ne sais comment vous envoyer mon fichier. Pouvez-vous me donner votre adresse e-mail ou votre numéro WhatsApp? Si Oui j'envoie immédiatement. Car j'ai vraiment besoin de ce code. Merci pour tes efforts jusque-là.
Cordialement.
0