Partons sur une base claire pour que tout le monde se comprenne
Voici un exemple simplifié de 2 tableaux regroupés sur la même feuille.
Tableau Alpha = colonnes A et B
Tableau Beta = colonnes D et E
|A | B | C | D | E
1| xxx | code1 | | bla zzz | formule qui renvoie le code
2| yyy | code2 | | bla yyy bla| formule
3| zzz | code3 | | xxx bla | formule
4| | | |bla xxx bla | formule
5| | | |bla xxx | formule
6| | | | yyy bla | formule
Je souhaite que la formule ou le code vba se comporte comme la formule
recherchev, à savoir :
Je prend une valeur de la colonne D, je recherche dans la matrice composée
des colonnes A et B. Lorsque le sujet (colonne A) est contenu dans la valeur
de la colonne D, le code correspondant de la colonne B est renvoyé.
Mais ATTENTION ! La colonne D contient aussi autre chose que le code et
c'est bien à partir de la colonne D que l'on effectue les recherches (sinon
un recherchev + * suffirait...
"Daniel" a écrit : (et merci à lui encore une fois)
> En E1, à recopier vers le bas :
> =INDEX($B:$B;EQUIV("*"&A1&"*";$D:$D;0);)
> Daniel
il s'agit ici d'une bonne piste, néanmois, dès que la taille du tableau B
(colonnes D et E) dépasse celle du tableau A (les codes), le résultat devient
FAUX. Ce qui est problématique, n'est-ce pas ?
Il faudrait maintenant que la formule reste valable pour les cellules e4 et
e5 par exemple...
A vous de jouer. Je compte vraiment sur vous. Ayez pitié. Merci.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Olivier B
La réponse a été trouvée par JB !!!
Bonjour,
Function ChercheCode(champ, code, element) ChercheCode = "" For i = 1 To champ.Count If InStr(element, champ(i)) > 0 Then ChercheCode = code(i) Next i End Function
Partons sur une base claire pour que tout le monde se comprenne Voici un exemple simplifié de 2 tableaux regroupés sur la même feuille. Tableau Alpha = colonnes A et B Tableau Beta = colonnes D et E
|A | B | C | D | E 1| xxx | code1 | | bla zzz | formule qui renvoie le code 2| yyy | code2 | | bla yyy bla| formule 3| zzz | code3 | | xxx bla | formule 4| | | |bla xxx bla | formule 5| | | |bla xxx | formule 6| | | | yyy bla | formule
Je souhaite que la formule ou le code vba se comporte comme la formule recherchev, à savoir : Je prend une valeur de la colonne D, je recherche dans la matrice composée des colonnes A et B. Lorsque le sujet (colonne A) est contenu dans la valeur de la colonne D, le code correspondant de la colonne B est renvoyé.
Mais ATTENTION ! La colonne D contient aussi autre chose que le code et c'est bien à partir de la colonne D que l'on effectue les recherches (sinon un recherchev + * suffirait...
"Daniel" a écrit : (et merci à lui encore une fois)
En E1, à recopier vers le bas : =INDEX($B:$B;EQUIV("*"&A1&"*";$D:$D;0);) Daniel
il s'agit ici d'une bonne piste, néanmois, dès que la taille du tableau B (colonnes D et E) dépasse celle du tableau A (les codes), le résultat devient FAUX. Ce qui est problématique, n'est-ce pas ?
Il faudrait maintenant que la formule reste valable pour les cellules e4 et e5 par exemple...
A vous de jouer. Je compte vraiment sur vous. Ayez pitié. Merci.
Le challenge est lancé. -- olivier
La réponse a été trouvée par JB !!!
Bonjour,
Function ChercheCode(champ, code, element)
ChercheCode = ""
For i = 1 To champ.Count
If InStr(element, champ(i)) > 0 Then ChercheCode = code(i)
Next i
End Function
=cherchecode(A2:A6;B2:B6;D2)
http://cjoint.com/?eerbzFSsVU
JB
--
olivier
Bonjour à tous !!!
Partons sur une base claire pour que tout le monde se comprenne
Voici un exemple simplifié de 2 tableaux regroupés sur la même feuille.
Tableau Alpha = colonnes A et B
Tableau Beta = colonnes D et E
|A | B | C | D | E
1| xxx | code1 | | bla zzz | formule qui renvoie le code
2| yyy | code2 | | bla yyy bla| formule
3| zzz | code3 | | xxx bla | formule
4| | | |bla xxx bla | formule
5| | | |bla xxx | formule
6| | | | yyy bla | formule
Je souhaite que la formule ou le code vba se comporte comme la formule
recherchev, à savoir :
Je prend une valeur de la colonne D, je recherche dans la matrice composée
des colonnes A et B. Lorsque le sujet (colonne A) est contenu dans la valeur
de la colonne D, le code correspondant de la colonne B est renvoyé.
Mais ATTENTION ! La colonne D contient aussi autre chose que le code et
c'est bien à partir de la colonne D que l'on effectue les recherches (sinon
un recherchev + * suffirait...
"Daniel" a écrit : (et merci à lui encore une fois)
En E1, à recopier vers le bas :
=INDEX($B:$B;EQUIV("*"&A1&"*";$D:$D;0);)
Daniel
il s'agit ici d'une bonne piste, néanmois, dès que la taille du tableau B
(colonnes D et E) dépasse celle du tableau A (les codes), le résultat devient
FAUX. Ce qui est problématique, n'est-ce pas ?
Il faudrait maintenant que la formule reste valable pour les cellules e4 et
e5 par exemple...
A vous de jouer. Je compte vraiment sur vous. Ayez pitié. Merci.
Function ChercheCode(champ, code, element) ChercheCode = "" For i = 1 To champ.Count If InStr(element, champ(i)) > 0 Then ChercheCode = code(i) Next i End Function
Partons sur une base claire pour que tout le monde se comprenne Voici un exemple simplifié de 2 tableaux regroupés sur la même feuille. Tableau Alpha = colonnes A et B Tableau Beta = colonnes D et E
|A | B | C | D | E 1| xxx | code1 | | bla zzz | formule qui renvoie le code 2| yyy | code2 | | bla yyy bla| formule 3| zzz | code3 | | xxx bla | formule 4| | | |bla xxx bla | formule 5| | | |bla xxx | formule 6| | | | yyy bla | formule
Je souhaite que la formule ou le code vba se comporte comme la formule recherchev, à savoir : Je prend une valeur de la colonne D, je recherche dans la matrice composée des colonnes A et B. Lorsque le sujet (colonne A) est contenu dans la valeur de la colonne D, le code correspondant de la colonne B est renvoyé.
Mais ATTENTION ! La colonne D contient aussi autre chose que le code et c'est bien à partir de la colonne D que l'on effectue les recherches (sinon un recherchev + * suffirait...
"Daniel" a écrit : (et merci à lui encore une fois)
En E1, à recopier vers le bas : =INDEX($B:$B;EQUIV("*"&A1&"*";$D:$D;0);) Daniel
il s'agit ici d'une bonne piste, néanmois, dès que la taille du tableau B (colonnes D et E) dépasse celle du tableau A (les codes), le résultat devient FAUX. Ce qui est problématique, n'est-ce pas ?
Il faudrait maintenant que la formule reste valable pour les cellules e4 et e5 par exemple...
A vous de jouer. Je compte vraiment sur vous. Ayez pitié. Merci.