Comment associer 2 codes vba

0

Bonjour

J'ai 2 codes vba que je souhaiterais mettre sur chaque mois de mon exemple.

* Le 1er qui n'autorise pas plus de 12 CA par jour.

"Public Flag As Boolean
Dim nCA&, nCAJ&, nCAN&, n12h&
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect([C9:M46], Target) Is Nothing Then Exit Sub
nCA = Application.CountIf(Intersect([9:46], Target.EntireColumn), "CA")
nRPM = Application.CountIf(Intersect([9:46], Target.EntireColumn), "RPM")
nCAJ = Application.CountIf(Intersect([9:46], Target.EntireColumn), "CAJ*")
nCAN = Application.CountIf(Intersect([9:46], Target.EntireColumn), "*CAN")
If (nCA + nCAJ + nRPM) > 12 Or (nCA + nCAN + nRPM) > 12 Then
MsgBox "Le nombre maximal de 12 CA total est déjà atteint !", vbCritical, "Saisie CA"
Target.Interior.Color = RGB(255, 255, 255)
Application.EnableEvents = False
Target.ClearContents
Application.EnableEvents = True
End If
End Sub"

* Et le 2ème qui n'autorise pas plus de 5 12h par jour

"Public Flag As Boolean
Dim n12h&
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect([C9:M46], Target) Is Nothing Then Exit Sub
n12h = Application.CountIf(Intersect([9:46], Target.EntireColumn), "12h")
If n12h > 5 Then
MsgBox "Le nombre maximal de 12h pour ce jour est déjà atteint !", vbCritical, "Saisie 12h"
Target.Interior.Color = RGB(255, 255, 255)
Application.EnableEvents = False
Target.ClearContents
Application.EnableEvents = True
End If
End Sub"

Dans mon exemple je ne l'ai essayé que sur le mois de décembre mais je ne sais pas comment les associer.
Un code seul sur la page fonctionne mais comment dois-je m'y prendre pour associer les 2 codes afin qu'ils fonctionnent comme ci-dessus?

Merci par avance

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

    Posté le 29 février 2020, 18:51
    par manjul
    Répondre
    0
    -1

    Bonjour,

    J'ai regardé ton exemple et je t'avoue qu'au niveau de la saisie, je n'ai pas bien compris comment on utilise ta feuille.

    En revanche, j'ai remarqué une chose, c'est que tu écris ta commande sur chaque feuille et dans le mois de décembre, il y a même deux macros qui ont le même nom.

    Alors prends mon conseil avec des pincettes parce que je ne suis pas sûr de la question mais il me semble qu'il serait plus judicieux de créer un module (Menu Insertion > Module) et d'écrire tes procédures dedans.

    Par exemple 

    Private Sub VerifieCA()

    et

    Private Sub Verifie12h()

    Ensuite, dans tes procédures d'événements de feuilles, que ce soit Worksheet_Change ou autre, tu appelles tes deux procédures l'une après l'autre.

    Tout le code n'est qu'à un seul endroit, il est plus facile à maintenir.

    En revanche, il faut lui préciser sur quel onglet lire ou écrire. Ça veut dire nommer plus explicitement les feuilles dans le code.

    En espérant ne pas avoir été trop loin de la question, j'espère que cette piste t'aidera. 

    Bon courage.

    MicXL Posté le 1 mars 2020, 04:48
    par MicXL
    0

    Merci

    manjul Posté le 1 mars 2020, 11:58
    par manjul

    Si vous n'êtes pas inscrit sur le site, vous pouvez poster librement (en tant qu'invité).
    Pour cela, indiquez un pseudonyme (nom d'utilisateur) et une adresse email :