Equiv vba

Résolu/Fermé
JSCH19 Messages postés 129 Date d'inscription mercredi 30 octobre 2019 Statut Membre Dernière intervention 22 juin 2023 - Modifié le 20 mai 2021 à 22:06
JSCH19 Messages postés 129 Date d'inscription mercredi 30 octobre 2019 Statut Membre Dernière intervention 22 juin 2023 - 21 mai 2021 à 17:26
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

1 réponse

yg_be Messages postés 23408 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 décembre 2024 Ambassadeur 1 557
20 mai 2021 à 22:30
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 129 Date d'inscription mercredi 30 octobre 2019 Statut Membre Dernière intervention 22 juin 2023
Modifié le 21 mai 2021 à 05:19
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 23408 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 décembre 2024 1 557 > JSCH19 Messages postés 129 Date d'inscription mercredi 30 octobre 2019 Statut Membre Dernière intervention 22 juin 2023
21 mai 2021 à 10:30
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 23408 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 décembre 2024 1 557 > yg_be Messages postés 23408 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 décembre 2024
21 mai 2021 à 10:45
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 129 Date d'inscription mercredi 30 octobre 2019 Statut Membre Dernière intervention 22 juin 2023 > yg_be Messages postés 23408 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 décembre 2024
21 mai 2021 à 16:35
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 23408 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 décembre 2024 1 557 > JSCH19 Messages postés 129 Date d'inscription mercredi 30 octobre 2019 Statut Membre Dernière intervention 22 juin 2023
21 mai 2021 à 16:37
Le plus logique est alors programmer une boucle et de vérifier les valeurs.
0