Bonjour à tous,
J’ai créé en VBA en module 2, un test qui consiste de vérifier si les valeurs saisies dans l’onglet « DEMANDE » : TR & S.E. & Num & Bi, existent déjà dans l’onglet « DONNEES » et si tel est le cas, on contrôle la présence d’une valeur ou non dans la colonne « DATE DE POSE ». Si une valeur est présente alors on autorise la validation de la saisie, sinon un message est renvoyé à l’utilisateur indiquant que la demande existe déjà en précisant sa date (issue de DATE_DEMANDE) et le numéro de cette demande (NUMERO_DEMANDE) et la macro s’arrête.
J’ai un problème pour réaliser une recherche multicritères en VBA à partir de plages nommées (equivalent à sommeprod en excel)
Voici le fonctionnement souhaité :
- Dans l’onglet « DEMANDE », l’utilisateur remplit différents champs notamment « TR », « S.E. », « Num » et « Bi ».
- Dans l’onglet « DONNEES », sont stockées les valeurs issues de l’onglet « DEMANDE » après validation.
J’ai nommée différentes plages de données, notamment :
-TRANCHE : Colonne A où sont stockées les valeurs « TR » issues de l’onglet « DEMANDE »
- SYSTEME_ELEMENTAIRE : Colonne B où sont stockées les valeurs « S.E. » issues de l’onglet « DEMANDE »
- NUMERO : Colonne C où sont stockées les valeurs « Num » issues de l’onglet « DEMANDE »
- BIGRAMME : Colonne D où sont stockées les valeurs « Bi » issues de l’onglet « DEMANDE »
- DATE_DEMANDE : Colonne I où sont stockées les dates des différentes demandes en moment de leur validation dans l’onglet « DEMANDE »
- DATE_POSE : Colonne S qui permettra de faire un test pour enregistrer ou non une nouvelle demande (j’expliquerai plus bas le fonctionnement de ce test)
- NUMERO_DEMANDE : Colonne J qui permettra éventuellement de renvoyer une valeur à l’issue d’un test (j’expliquerai plus bas le fonctionnement de ce test)
Voici le problème : je ne sais pas comment faire pour arrêt la macro et envoyer le message à l'utilisateur
-----------------------------------------------------------------------------------------
Sub controle_presence()
Dim TR As String
Dim SE As String
Dim NUM As String
Dim bi As String
Sheets("DEMANDE").Select
TR = Range("J5")
SE = Range("M5")
NUM = Range("Q5")
bi = Range("V5")
Resul = Evaluate("=sum((TRANCHE=" & TR & ")*(SYSTEME_ELEMENTAIRE=""" & SE & """)*(NUMERO=""" & NUM & """)*(BIGRAMME=""" & bi & """)*(DATE_POSE=""""))")
Range("A2") = Resul
End Sub
-----------------------------------------------------------------------------------------
Pour vérifier le test, j’ai fait apparaître le résultat du code en « A2 ».
Merci d’avance !!!
Ci joint le fichier
J’ai créé en VBA en module 2, un test qui consiste de vérifier si les valeurs saisies dans l’onglet « DEMANDE » : TR & S.E. & Num & Bi, existent déjà dans l’onglet « DONNEES » et si tel est le cas, on contrôle la présence d’une valeur ou non dans la colonne « DATE DE POSE ». Si une valeur est présente alors on autorise la validation de la saisie, sinon un message est renvoyé à l’utilisateur indiquant que la demande existe déjà en précisant sa date (issue de DATE_DEMANDE) et le numéro de cette demande (NUMERO_DEMANDE) et la macro s’arrête.
J’ai un problème pour réaliser une recherche multicritères en VBA à partir de plages nommées (equivalent à sommeprod en excel)
Voici le fonctionnement souhaité :
- Dans l’onglet « DEMANDE », l’utilisateur remplit différents champs notamment « TR », « S.E. », « Num » et « Bi ».
- Dans l’onglet « DONNEES », sont stockées les valeurs issues de l’onglet « DEMANDE » après validation.
J’ai nommée différentes plages de données, notamment :
-TRANCHE : Colonne A où sont stockées les valeurs « TR » issues de l’onglet « DEMANDE »
- SYSTEME_ELEMENTAIRE : Colonne B où sont stockées les valeurs « S.E. » issues de l’onglet « DEMANDE »
- NUMERO : Colonne C où sont stockées les valeurs « Num » issues de l’onglet « DEMANDE »
- BIGRAMME : Colonne D où sont stockées les valeurs « Bi » issues de l’onglet « DEMANDE »
- DATE_DEMANDE : Colonne I où sont stockées les dates des différentes demandes en moment de leur validation dans l’onglet « DEMANDE »
- DATE_POSE : Colonne S qui permettra de faire un test pour enregistrer ou non une nouvelle demande (j’expliquerai plus bas le fonctionnement de ce test)
- NUMERO_DEMANDE : Colonne J qui permettra éventuellement de renvoyer une valeur à l’issue d’un test (j’expliquerai plus bas le fonctionnement de ce test)
Voici le problème : je ne sais pas comment faire pour arrêt la macro et envoyer le message à l'utilisateur
-----------------------------------------------------------------------------------------
Sub controle_presence()
Dim TR As String
Dim SE As String
Dim NUM As String
Dim bi As String
Sheets("DEMANDE").Select
TR = Range("J5")
SE = Range("M5")
NUM = Range("Q5")
bi = Range("V5")
Resul = Evaluate("=sum((TRANCHE=" & TR & ")*(SYSTEME_ELEMENTAIRE=""" & SE & """)*(NUMERO=""" & NUM & """)*(BIGRAMME=""" & bi & """)*(DATE_POSE=""""))")
Range("A2") = Resul
End Sub
-----------------------------------------------------------------------------------------
Pour vérifier le test, j’ai fait apparaître le résultat du code en « A2 ».
Merci d’avance !!!
Ci joint le fichier