Recherche verticale pour base de données

EN VBA

Function Suite(CoRésul As Range, Coentrée As Range, Réfé As Variant)

'CoRésul sélectionner la plage de la colonne de résultat recherché

'CoEntrée sélectionner la plage de la colonne de valeur à comparer à la référence

'Réfé sélectionner une cellule de référence

With Application.WorksheetFunction

Suite = .Index(CoRésul, .Match(1, .Frequency(Réfé, Coentrée), 0), 1)

End With

End Function

En fonction de base

=INDEX(B1:B4;EQUIV(1;FREQUENCE(D1;A1:A4);0);1)

B1:B4 plage de collonne ou se trouvera le resultat recherche

D1 cellule de reference

A1:A4 plage de cellules dans une colonne ou on cherche a comparer avec la reference pour obtenir une valeur dans B1:B4

l'embettant dans ma fonction VBA c est que çà ne marque que avec des données numériques tandis que dans la fonction de base excell çà marche avec des données numériques ou textes

Comment dois je faire pour corriger ma fonction VBA pour que ça marche avec du texte

j'ai oublié de commencer mon post par bonjour, je suis étourdis.

Y aurait'il une personne qui aurait déja rencontré ce problème

Merci pour vos réponses

Bonjour

Je ne pense pas que la fonction de base excell ça marche avec des données numériques ou textes. Frequence n'utilisant que des données numériques.

Place un bout d'un fichier STP.

Fait un essai en définissant Réfé as Double

@+Jean-Marie

en fait erreur de ma part aucune marche avec du texte,

https://www.excel-pratique.com/~files/doc/jLFhhclasseur1.xls

je bloque

Bonjour

Jean Marie a raison, il faut utiliser INDEX EQUIV ou INDEX MATCH

et pourquoi pas dans ton Code, en adaptant les champs

ActiveCell.Formula = "=INDEX($u$30:$U$38,MATCH(C9,$S$30:$S$38,0))"

De toute façon, avec ton fichier, Jean Marie te feras ça "aux petits oignons"

Cordialement,

Amadéus

Re bonjour,

J'ai redéfinis Réfé as double çà ne marche pas.

En relisant votre formule je vois une différence avec la mienne sur la fin, je trouve qu'il manque des termes?

Car quand je l'ecris comme vous j'ai un message d erreur.

ActiveCell.Formula = "=INDEX($u$30:$U$38,MATCH(C9,$S$30:$S$38,0))"

Si j'ecris pas la fin comme ceci:

Suite = .Index(CoRésul, .Match(1, .Frequency(Réfé, Coentrée), 0), 1)

La formule ecris comme ceci marche en melangeant du texte et des chiffres, mais j'aimerai la retranscrire en vba , ceci pour que çà devienne plus simple pour définir le tableau

=INDEX(B5:B56;EQUIV(A58;A5:A56;0);1)

J'ai trouvé la faille, c'est une histoire de parenthèse au mauvais endroit.

Donc la version définitive

A) formule de base

=INDEX(B5:B56;EQUIV(A58;A5:A56;0);1)

B)Programmation VBA

Function RechVal(CoRésul As Range, Coentrée As Range, Réfé As Variant)

With Application.WorksheetFunction

RechVal = .Index(CoRésul, .Match(Réfé, Coentrée, 0), 1)

End With

End Function

Merci en tout cas pour votre aide

Je sais pas si l'administrateur peux mettre résolu

Rechercher des sujets similaires à "recherche verticale base donnees"