Chercher le contenue d'une cellule dans une autre chaîne de car
Résolu
0548
Messages postés
73
Date d'inscription
Statut
Membre
Dernière intervention
-
0548 Messages postés 73 Date d'inscription Statut Membre Dernière intervention -
0548 Messages postés 73 Date d'inscription Statut Membre Dernière intervention -
Bonsoir,
Lorsque je veux chercher la valeur d'une cellule dans une autre colonnes ou plus ; j'utilise tout simplement la méthode VLOOKUP ;
soit par exemple :
=VLOOKUP(A2;B:B;1;FALSE) c'est à dire que je fais une recherche verticale du contenu de la cellule A2 ; dans les données trouvé dans la colonne et j'affiche le resulat trouvé dans la cellule issue de la colonne B ; en se basant sur une correspondance exact .
mais maintenant , j'ai un problème où le contenue de la cellule A2 n'est qu'une parti d'une autre cellule trouvé dans la colonne B ;
Que dois je faire ?
Lorsque je veux chercher la valeur d'une cellule dans une autre colonnes ou plus ; j'utilise tout simplement la méthode VLOOKUP ;
soit par exemple :
=VLOOKUP(A2;B:B;1;FALSE) c'est à dire que je fais une recherche verticale du contenu de la cellule A2 ; dans les données trouvé dans la colonne et j'affiche le resulat trouvé dans la cellule issue de la colonne B ; en se basant sur une correspondance exact .
mais maintenant , j'ai un problème où le contenue de la cellule A2 n'est qu'une parti d'une autre cellule trouvé dans la colonne B ;
Que dois je faire ?
A voir également:
- Chercher le contenue d'une cellule dans une autre chaîne de car
- Aller à la ligne dans une cellule excel - Guide
- Chaine tnt gratuite sur mobile - Guide
- Bloquer une cellule excel - Guide
- Excel cellule couleur si condition texte - Guide
- Plus de chaine tv - Guide
3 réponses
bonjour,
mais maintenant , j'ai un problème où le contenue de la cellule A2 n'est qu'une parti d'une autre cellule trouvé dans la colonne B ;
Et en fin de compte vous cherchez quoi ?????
mais maintenant , j'ai un problème où le contenue de la cellule A2 n'est qu'une parti d'une autre cellule trouvé dans la colonne B ;
Et en fin de compte vous cherchez quoi ?????
Bonjour
Tu peux utiliser une fonction personnalisée composée avec une macro
Exemple, à adapter à ton fichier :
http://www.cjoint.com/c/EFelMsVsgbh
Cdlmnt
Via
Tu peux utiliser une fonction personnalisée composée avec une macro
Exemple, à adapter à ton fichier :
http://www.cjoint.com/c/EFelMsVsgbh
Cdlmnt
Via
Pas besoin de correspondance cherchermot n'existe pas dans les fonctions prédéfiniées, c' est le nom que j'ai donné à ma fonction personnalisée, c'est le nom de la macro (tu n'a pas fais ALT+F11 comme suggéré pour voir la macro ?)
Quant à la macro elle est en langage VBA donc en anglais et lisible par tout Excel
Quant à la macro elle est en langage VBA donc en anglais et lisible par tout Excel
Rebonsoir,
via55
Dans votre cas , vous avez fait une recherche dans une seule colonne, mais moi dans mon exemple je veux faire une recherche dans plusieurs colonnes ,
alors j'ai voulu remplacer la ligne de votre code:
- chaine = Range("D" & n).Value par chaine = Range("B:AE" & n).Value.
anisi que : If Tableau(i) = mot Then rep = Range("D" & n).Value par If Tableau(i) = mot Then rep = Range("B:AE" & n).Value.
et ça n'a pas marché par ce que ça l'aire faux , pour cela j'ai besoin une autre fois de votre aide .
Merci encore une fois .
via55
Dans votre cas , vous avez fait une recherche dans une seule colonne, mais moi dans mon exemple je veux faire une recherche dans plusieurs colonnes ,
alors j'ai voulu remplacer la ligne de votre code:
- chaine = Range("D" & n).Value par chaine = Range("B:AE" & n).Value.
anisi que : If Tableau(i) = mot Then rep = Range("D" & n).Value par If Tableau(i) = mot Then rep = Range("B:AE" & n).Value.
et ça n'a pas marché par ce que ça l'aire faux , pour cela j'ai besoin une autre fois de votre aide .
Merci encore une fois .
Re,
Macro à transformer ainsi (il faut faire une boucle sur toutes les colonnes)
Cdlmnt
Via
Macro à transformer ainsi (il faut faire une boucle sur toutes les colonnes)
Function cherchemot(mot As String) Dim Tableau() As String trouve = 0 rep = "Non trouvé" ' boucle sur les colonnes 2 à 31 For y = 2 To 31 ' boucle sur les 10 lignes de la colonne y - augmenter le nombre si nécessaire For n = 1 To 10 ' extrait la chaine et découpe la chaine en fonction des espaces " " 'le résultat de la fonction Split est stocké dans un tableau chaine = Cells(n, y).Value Tableau = Split(chaine, " ") 'boucle sur le tableau For i = 0 To UBound(Tableau) 'si mot est trouvé dans le tableau la variable rep prend la valeur de la ligne If Tableau(i) = mot Then rep = Cells(n, y).Value Next i Next n Next y ' on renvoie le resultat cherchemot = rep End Function
Cdlmnt
Via
Merci infiniment,
juste une dernière question , comment faire pour créer une méthode?
moi , avant je clique sur (vieux , macro , record j'écris le nom , puis je clique sur view , edit et j'aurai l'interface dédié au développeur ) j'ai utilisé votre méthode et j'ai fait ctr+s . ==> j'ai eu le résultat que j'ai voulu , quand j'ai mis =cherchemot(A1).
Mais , quand j'ai voulu que cette méthode marche pour les autre ligne . j'ai cliqué sur la fin de la case et j'ai eu le même résultat qui est affiché dans la première ligne ;
Donc je me ss dis que forcement , il y'a une autre façon de le faire .
Merci
juste une dernière question , comment faire pour créer une méthode?
moi , avant je clique sur (vieux , macro , record j'écris le nom , puis je clique sur view , edit et j'aurai l'interface dédié au développeur ) j'ai utilisé votre méthode et j'ai fait ctr+s . ==> j'ai eu le résultat que j'ai voulu , quand j'ai mis =cherchemot(A1).
Mais , quand j'ai voulu que cette méthode marche pour les autre ligne . j'ai cliqué sur la fin de la case et j'ai eu le même résultat qui est affiché dans la première ligne ;
Donc je me ss dis que forcement , il y'a une autre façon de le faire .
Merci
Re
Je ne comprends pas trop ce que tu me dis
Une fois la macro Function mise dans un module de l'éditeur VBA tu utilises la fonction comme toute autre fonction,
soit si tu recherches par exemple le mot livre, dans une cellule tu mets =cherchemot("livre")
soit tu recherches le mot qui est en A1 et en B1 par exemple tu mets =cherchemot(A1)
si tu as plusieurs mots en A1, A2 etc tu étires la formule de B1 en B2 etc
Cdlmnt
Via
Je ne comprends pas trop ce que tu me dis
Une fois la macro Function mise dans un module de l'éditeur VBA tu utilises la fonction comme toute autre fonction,
soit si tu recherches par exemple le mot livre, dans une cellule tu mets =cherchemot("livre")
soit tu recherches le mot qui est en A1 et en B1 par exemple tu mets =cherchemot(A1)
si tu as plusieurs mots en A1, A2 etc tu étires la formule de B1 en B2 etc
Cdlmnt
Via
Re ,
je suis désolé pour le retard , mon ordinateur s'est planté , lorsque j'ai voulu exécuter votre code pour 100425 lignes et dans ceulle il y'a un texte ecrit de ce genre :
- #index 942885/#n Mark Gershon/#a Temple Univ., Philadelphia, PA/#pc 1/#cn 0/#hi 0/#pi 0.0000/#upi 0.0000/#t multiobjective dynamic programming;regional natural resource management .
et moi je veux chercher seulement l'index : exemple #index 942885.
j'ai mis la macro Function dans un module de l'éditeur VBA et j'ai utilisé la fonction en tapant "=cherchemot(A2)" ; j'ai eu le résultat d'une manière très vite.
Mais , quand j'ai voulu excuter la meme fonction 'cherchermot() pour les autres lignes . ça fait 2 jours que le programe tourne ; et il n'a exécuté que 6% du fichier .
y'a t'il une autre facon de le faire ?
Ps: j'ai voulu mettre le fichier à l'aide du site Cjoint.com mais la taille de mon fichier est grande.
Merci D'avance.
je suis désolé pour le retard , mon ordinateur s'est planté , lorsque j'ai voulu exécuter votre code pour 100425 lignes et dans ceulle il y'a un texte ecrit de ce genre :
- #index 942885/#n Mark Gershon/#a Temple Univ., Philadelphia, PA/#pc 1/#cn 0/#hi 0/#pi 0.0000/#upi 0.0000/#t multiobjective dynamic programming;regional natural resource management .
et moi je veux chercher seulement l'index : exemple #index 942885.
j'ai mis la macro Function dans un module de l'éditeur VBA et j'ai utilisé la fonction en tapant "=cherchemot(A2)" ; j'ai eu le résultat d'une manière très vite.
Mais , quand j'ai voulu excuter la meme fonction 'cherchermot() pour les autres lignes . ça fait 2 jours que le programe tourne ; et il n'a exécuté que 6% du fichier .
y'a t'il une autre facon de le faire ?
Ps: j'ai voulu mettre le fichier à l'aide du site Cjoint.com mais la taille de mon fichier est grande.
Merci D'avance.
Bonjour
100 000 lignes et des longues chaines , pas étonnant que ça plante
Tu aurais pu donner toutes les précisions dès le départ , ça change tout, notamment le fait qu'il faut extraire qu'une partie du résultat trouvé
En procédant autrement, sans découpage des chaines mais avec une recherche par colonne, ce devrait être plus rapide. A la fin on extrait de la chaine les caractères à gauche du premier / trouvé (il faut que toutes les références dans les cellule soient présentées ainsi; sinon l'extraction n'est pas possible)
Un exemple, à adapter à tes besoins :
http://www.cjoint.com/c/EFhopJR4KrL
Cdlmnt
Via
100 000 lignes et des longues chaines , pas étonnant que ça plante
Tu aurais pu donner toutes les précisions dès le départ , ça change tout, notamment le fait qu'il faut extraire qu'une partie du résultat trouvé
En procédant autrement, sans découpage des chaines mais avec une recherche par colonne, ce devrait être plus rapide. A la fin on extrait de la chaine les caractères à gauche du premier / trouvé (il faut que toutes les références dans les cellule soient présentées ainsi; sinon l'extraction n'est pas possible)
Un exemple, à adapter à tes besoins :
http://www.cjoint.com/c/EFhopJR4KrL
Cdlmnt
Via