Equiv vba

Résolu
JSCH19 Messages postés 128 Date d'inscription   Statut Membre Dernière intervention   -  
JSCH19 Messages postés 128 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
j'ai un petit soucis a implementer une formule Equiv a double critere en vba,
Public Sub Match()
Dim r As String

Dim ws As Worksheet
Set ws = Worksheets("Droit")

Dim cell As Range
Set cell = ws.Range("Code_droit")


Dim cell1  As Range
Set cell1 = ws.Range("Droit")


r = Application.WorksheetFunction.Match(1, (cell = Profil_de_vendeurs.Txt_profil) * (cell1 = Profil_de_vendeurs.txt_statut), 0)
Profil_de_vendeurs.Txt_profil_miroir = r
end sub

j'ai beau cherche a trouver une solution mais rien jusqu'a present,un peu d'aide serait la bienvenue.Merci!!

Configuration: Windows / Chrome 90.0.4430.212
A voir également:

1 réponse

yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
bonjour,
je ne vois aucune "formule Equiv" dans ton code.
penses-tu vraiment qu'un code qui ne fonctionne pas te permet de ne pas expliquer le résultat que tu essaies d'obtenir?
0
JSCH19 Messages postés 128 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour, @yb_be je code en anglais c'est la raison pour laquelle que tu ne remarques pas d'equiv dans mon code mais plutot "MATCH" puis desole si je n'ai pas explique le resultat que je voulais obtenir. Je cherche a retourner le numero de la ligne du tableau si les deux critere sont verifies mais a l'execution de la macro il y a une erreur qui apparait: "Type mismatch".
exemple:C7="SERVEUSE";D7="Ouvrir la caisse
={MATCH(1;(Table61[Code]=C7)*(Table61[Libelle]=D8);0)}

voila le code qui fonctionne tres bien sur une feuille que j'essayais d'implementer en vba.
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > JSCH19 Messages postés 128 Date d'inscription   Statut Membre Dernière intervention  
 
Tu ne précises pas sur quelle ligne tu obtiens l'erreur. Je suppose que c'est sur la ligne 15.
Dans ce cas-là, il est utile de décomposer l'instruction pour découvrir quelle partie pose problème.

Je ne l'ai pas fait, car je vois de multiples erreurs dans ton code. Je pense aussi que tu n'as pas compris comment utiliser la fonction Match() en VBA.

Par ailleurs, je suis surpris par ta formule: je pense qu'il est plus clair d'utiliser AND() plutôt qu'une multiplication. Surtout si tu t'inspires de la formule pour programmer en VBA.
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention  
 
Je vois aussi qu'il ne s'agit pas d'une formule, mais d'une formule matricielle, ce qui introduit une complexité que tu négliges de prendre en compte.

Tu n'expliques pas pourquoi tu fais ce code en VBA, à quoi il sert.
Acceptons qu'il soit utile.

C'est, en général, une mauvaise pratique, au moment de concevoir du code VBA sous Excel, de réfléchir en terme de formule ou de commande Excel. Il est préférable de bien comprendre le résultat recherché, et de programmer pour l'obtenir.

Tu écris que tu cherches a retourner le numero de la ligne du tableau si les deux critere sont verifies
Le plus logique, si c'est utile à faire en VBA, c'est de programmer une boucle et de vérifier les valeurs.
0
JSCH19 Messages postés 128 Date d'inscription   Statut Membre Dernière intervention   > yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention  
 
Bonjour,
Voila,en gros je vais essayer d'expliquer ce que j'aimerais que la formule fasse:
j'ai un userform compose de comboboxes, sachant que le userform contient deux comboboxes qui tiennent leur source "Rowsource" d'un tableau. J'aimerais que lorsque je selectionne des valeurs dans les deux comboboxes et appuie sur un commandbutton que celui ci renvoie dans un textboxe sur quelle ligne du tableau que ces valeurs sont inscrits.
je pense avoir ete explicit dans mon explication.Merci
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > JSCH19 Messages postés 128 Date d'inscription   Statut Membre Dernière intervention  
 
Le plus logique est alors programmer une boucle et de vérifier les valeurs.
0