Recherche multicritères en VBA à partir de plage nommée

seb26000

XLDnaute Occasionnel
Bonjour

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, 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.

-----------------------------------------------------------------------------------------
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 » mais il reste toujours à 0 quelque soit les valeurs….

Qui peut m’aider car là je ne comprends plus rien  !!

Vu que je ne suis pas arrivé à faire le test, je n’ai pas encore réalisé le test qui permet de renvoyer le message ou non à l’utilisateur

Merci d’avance !!!

Ci joint le fichier
 

Pièces jointes

  • Test.xls
    143 KB · Affichages: 62
  • Test.xls
    143 KB · Affichages: 74
  • Test.xls
    143 KB · Affichages: 70
Dernière édition:

Odesta

XLDnaute Impliqué
Re : Recherche multicritères en VBA à partir de plage nommée

Bonjour

Lors de la mise en formule, les " ne sont pas mis autour des variables lues (elles deviennent donc des variables pour Excel, qui ne les connait pas) !

Il manque donc à chaque variable SE, NUM et bi :
SYSTEME_ELEMENTAIRE=""" & SE & """)

Je n'ai pas creuser plus, mais c'est déjà une piste de résolution.

Cdt

Olivier
 

seb26000

XLDnaute Occasionnel
Re : Recherche multicritères en VBA à partir de plage nommée

Merci Odesta,

Je viens de tester ce code et ca ne marche toujours pas... Snifff

Par contre, je viens de m'apercevoir que le probleme vient certainement du format des cellules. Comment forcer en VBA les plages nommées au format texte ainsi que les variables (SE, TR, NUM et bi) ??

Merci encore
 

Odesta

XLDnaute Impliqué
Re : Recherche multicritères en VBA à partir de plage nommée

En rajoutant les double ", j'obtien bien 7 :

Code:
Resul = Evaluate("=sum((TRANCHE=" & TR & ")*(SYSTEME_ELEMENTAIRE=""" & SE & """)*(NUMERO=""" & NUM & """)*(BIGRAMME=""" & bi & """)*(DATE_POSE=""""))")
 

Discussions similaires

Statistiques des forums

Discussions
312 195
Messages
2 086 078
Membres
103 112
dernier inscrit
cuq-laet