Recherche dans tableau (for if and)

Bonjour tout le monde,

Je souhaite faire une recherche dans un tableau structuré à l'aide de plusieurs critères.

L'utilisateur choisi sur la feuille user :

– hauteur d'arroseurs

– type de canne

– simple ou double

– avec ou sans tirants

Le programme en fonction des choix cherches le texte de la case du tableau qui respecte ces 4 conditions.

J'ai écris quelque chose mais ca ne marche pas :

Sub choixmontage()

Dim choixmont As String

For i = 2 To 16

If Worksheets("User").Range("N9").Text = Worksheets("Datas").Cells(i, 10).Text And Worksheets("User").Range("N7").Text = Worksheets("Datas").Cells(i, 11).Text And Worksheets("User").Range("Q9").Text = Worksheets("Datas").Cells(i, 12).Text And Worksheets("User").Range("N11").Text = Worksheets("Datas").Cells(i, 13).Text Then choixmont = Worksheets("Datas").Cells(i, 14)

Exit For

Next i

MsgBox (choixmont)

End Sub

Aussi le fait d'avoir 4 And à la suite du If rend la lecture compliquée.

Merci de votre précieuse aide!

:)

ps : je vais devoir utiliser plusieurs fois cette procédure pour des tableaux plus grands.

Bonjour,

Un test sur votre base structurée renommée BDD et en retirant les espaces de fin de votre BDD (vous avez des espaces en fin de mots, notamment sur la colonne M). En lançant la macro depuis votre feuille User :

Sub choixmontage()
MsgBox Application.Evaluate("=INDEX(BDD[Appelation],MATCH(N7&N9&Q9&N11,BDD[Hauteur arroseur]&BDD[Type de canne]&BDD[[simple ou double ]]&BDD[Colonne1],0))")
End Sub

Cdlt,

Merci beaucoup,

Cette fonction semble magique. Je rencontre tout de même des difficultés à ne pas avoir de messages d'erreurs. J'ai corrigé les espaces et renommé ma base de donnée.

Sub choixmontage()
choixmont = Application.Evaluate("=INDEX(BDD[Appelation],MATCH(N7&N9&Q9&N11,BDD[Hauteur_arroseur]&BDD[Type_de_canne]&BDD[[Simple_ou_double]]&BDD[Tirants],0))")

MsgBox (choixmont)

End Sub

J'ai laissé choixmont puisque je souhaite avoir cette donnée sous forme de variable que je pourrais réutiliser dans la suite de mon code. Le MsgBox est pour me rendre compte du fonctionnement du code.

Bonjour,

Pour renommer une table ce n'est pas comme ça. Supprimez votre plage "BDD" et suivez la manipulation suivante :

image

A l'étape 3 vous avez normalement Tableau3, il vous suffit d'y inscrire BDD. C'est la méthode la plus simple pour renommer une table structurée.

Après ça le code devrait fonctionner.

Cdlt,

PS : Vous pouvez aussi inscrire :

MsgBox choixmont

Ceci me servira grandement par la suite! Merci beaucoup.

Néanmoins après la modification du nom du tableaux, les messages d'erreurs persistent, je ne comprends pas pourquoi.

J'ai "erreur d'exécution '13': Incompatibilité de type.

CA marche de votre côté?

Bonjour,

Chez moi oui, mais depuis la feuille User (cf précision plus haut) sinon il faut préciser le nom de la feuille si l'on veut que le code fonctionne quelque soit la feuille active :

Sub choixmontage()
Dim choixmont As String
choixmont = Application.Evaluate("=INDEX(BDD[Appelation],MATCH(User!N7&User!N9&User!Q9&User!N11,BDD[Hauteur_arroseur]&BDD[Type_de_canne]&BDD[[Simple_ou_double]]&BDD[Tirants],0))")
MsgBox choixmont
End Sub

Cdlt,

Oui j'ai bien suivi votre recommandation de le faire depuis la page User.

Et même en recopiant votre code j'ai toujours ce problème. J'ai la version 2016. Peut être est-ce dû à cela ?

Merci pour votre aide.

Bonjour,

Bien que mon profil indique le contraire j'ai bien EXCEL 2016 donc peut de chance que cela vienne du versionning.

Vous avez bien les mêmes valeurs que le fichier transmis en N7, N9, Q9, N11 ? C'est à dire 3, Souple, Simple, Avec tirants ? Dans ce cas le code fourni renvoie bien Souple_S_Tir_3.

Je vous joint le fichier qui chez moi ne pose aucun problème.

Cdlt,

Bonjour,

C'est absolument étrange :

J'ouvre votre fichier "chercher-valeur-dans-tableau-3.xlsm ", le code marche.

J'ouvre parallèlement mon fichier "chercher-valeur-dans-tableau.xlsm", relance le code sur "chercher-valeur-dans-tableau-3.xlsm" et ca ne marche plus.

Mon fichier doit être corrompu mais je n'ai aucune explication claire.

Dans tout les cas merci de votre réactivité et patience. Je n'ai pu vous répondre avant car absent de la toile.

Je clos le sujet.

Bonne fin de semaine.

Rechercher des sujets similaires à "recherche tableau"