Excel : Recherche et extraction d'un mot dans une colonne [Résolu]

Messages postés
12
Date d'inscription
mardi 17 avril 2012
Statut
Membre
Dernière intervention
3 mai 2012
- - Dernière réponse : JeanMichMich69
Messages postés
12
Date d'inscription
mardi 17 avril 2012
Statut
Membre
Dernière intervention
3 mai 2012
- 24 avril 2012 à 11:54
Bonjour,

J'ai un petit probleme dans excel que je n'arrive pas à résoudre.

Rechercher un mot specifique dans une colonne pour l'extraire vers une autre colonne.

Par exemple si dans une ligne il y a marqué "4 rue du general leclerc BP100" je veux extraire le BP100 pour qu'il apparaisse dans une colonne nommée BP pour la ligne associée.

Merci d'avance pour votre aide,
Cordialement
Afficher la suite 

17 réponses

Meilleure réponse
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
215
3
Merci
Regarde ce que fais ceci (exemple) :
toto = "JJEJEJE BP 5000 JIII"
If toto Like "*BP*" Then
  titi = "BP" & Val(Mid(toto, InStr(toto, "BP") + 2))
  MsgBox titi
End If

Voilà .



________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 201 internautes nous ont dit merci ce mois-ci

Commenter la réponse de ucfoutu
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
215
0
Merci
Bonjour,
Problème simple : ===>> 2 solutions entre d'autres ===>>
1) parcourir la colonne (Boucle For ... to ...) et déterminer si occurrence, à l'aide de la fonction Instr (à lire dans ton aide)
2) plus adroit : utiliser la méthode Find (à lire dans ton aide VBA, ainsi que son exemple)

Dans les deux cas : lorsque occurrence ===>> copier (méthode copy à lire dans ton aide) vers la destination que tu veux.
Reviens avec ton code d'essai si encore en difficulté malgré ces lectures.


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Commenter la réponse de ucfoutu
Messages postés
59
Date d'inscription
mardi 4 décembre 2007
Statut
Membre
Dernière intervention
28 juin 2012
0
Merci
Saut Jean-Michel,

Connais tu les mots à chercher et peux tu les lister dans une feuille.
L'idée est de prendre les mots à chercher les uns après les autres (si plusieurs) et le mettre dans la colonne désiré.

As tu déjà réalisé un code ?

Lezeps ;-))
Commenter la réponse de ZEPS256
Messages postés
12
Date d'inscription
mardi 17 avril 2012
Statut
Membre
Dernière intervention
3 mai 2012
0
Merci
Rebonjour et merci de votre réponse.

Je suis en train d'essayer d'écrire le code mais j'ai des difficultés a mettre en oeuvre la méthode find. En effet j'ai beau chercher sur internet je ne trouve pas de réponse cohérente. Pourriez-vous m'indiquer le chemin pour réussir (aide vba) et je les mettrai en oeuvre.

Merci

@ZEPS256 : Je ne peux pas utiliser cette méthode car je ne connais pas les variables après BP.

Cdt.
Commenter la réponse de JeanMichMich69
Messages postés
59
Date d'inscription
mardi 4 décembre 2007
Statut
Membre
Dernière intervention
28 juin 2012
0
Merci
Jean-Michel,

Ucfoutu a raison, et nettement meilleur que moi !!!...c'est lui qui m'aide.
Néanmoins, aider me fait progresser.

1°) maitrises tu la boucle for..to... avec peut être une variable (nb de ligne ou de colonne dans lesquelles chercher).

2°) Find => avant de chercher sur le net, tu fais F1 dans VBA et tu tapes "Find"
Et là tu auras les explications.
Je trouve que c'est mieux.
Et si tu faits F2 tu as l'explorateur d'objets qui te donne les propriétés (et tu peux repasser ds l'aide F1 directement à partir du poit interrogation d'aide)

A toi !...

Lezeps ;-))
Commenter la réponse de ZEPS256
Messages postés
12
Date d'inscription
mardi 17 avril 2012
Statut
Membre
Dernière intervention
3 mai 2012
0
Merci
Merci lezeps

Je regardais dans l'xplorateur d'objet mais je ne comprenais pas tout. Ta méthode est très bien c'est juste que je n'avai pas téléchargé les aides. Je tient au courant
Commenter la réponse de JeanMichMich69
0
Merci
Bonjour,

c'est juste que je n'avai pas téléchargé les aides


Juste un mot : sacrilège.

Programmer sans utiliser les fichiers d'aide en premier, c'est comme utiliser des béquilles en paille.
Commenter la réponse de Utilisateur anonyme
Messages postés
12
Date d'inscription
mardi 17 avril 2012
Statut
Membre
Dernière intervention
3 mai 2012
0
Merci
Bonjour,

Après une semaine de galère la meilleur chose que je suis arrivé a faire est :

Sub test_II()


With Range("A1:A" & [A65536].End(xlUp).Row).SpecialCells(xlCellTypeConstants)
For i = 1 To .Rows.Count
v = .Cells(i, 1).Value
w = InStr(1, "BP")
If .Cells(i, 1) Like "*BP*" Then
Valeu = Mid(v, 1, 6)
.Cells(i, 3).Value = Valeu
End If
Next
End With

End Sub

Mais j'ai un probleme pour ou j'ai bien mettre w à la place de 1 afin de copier a partir de BP

PS: J'ai abandonné la fonction find car je ne trouvai pas comment faire un copier coller ou meme d'afficher les valeurs trouvé

Pourriez-vous m'aider ?

Cordialement
Commenter la réponse de JeanMichMich69
Messages postés
12
Date d'inscription
mardi 17 avril 2012
Statut
Membre
Dernière intervention
3 mai 2012
0
Merci
Desolé pour l'odmission de mot mon probleme se trouve au niveau de la fonction mid où j'aimerai bien mettre w à la place de 1 afin de copier a partir de BP
Commenter la réponse de JeanMichMich69
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
215
0
Merci
Bonjour,
Je pense que tu as maintenant installé l'aide, non ?
Si oui ;
je ne comprends pas ta question, qui consisterait à savoir comment remplacer 1 par w dans l'utilisation de Mid !


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Commenter la réponse de ucfoutu
Messages postés
59
Date d'inscription
mardi 4 décembre 2007
Statut
Membre
Dernière intervention
28 juin 2012
0
Merci
De mon côté, j'ai un peu le même besoin.
Je me suis créé la liste de mot (ils sont variables) que je dois trouver une autre feuille.
Sur une feuille en colonne B:B j'ai mes chaines de caractère

Ucfoutu me corrigera si besoin, mais ça tourne bien.
C'est juste un peu long à mon gout, si beaucoup de critères ( 100 mots pour 100 lignes par exemple => 3 ou 4 s )

Sub RechercheMot()
Dim f1 As Byte
Dim i1 As Byte
Dim x1 As Byte
Dim z1 As Byte
Dim montext1 As String
Dim RechercheMot As String

'Détermine le n° de lignes pour ramener la somme
x1 = Range("B250").End(xlUp).Row
For i1 = 2 To x1
montext1 = Cells(i1, 2).Value

'Récupère la liste des mots à chercher
z1 = Sheets("Critéres").Range("A50").End(xlUp).Row
For f1 = 2 To z1
RechercheMot = Sheets("Critéres").Cells(f1, 1).Value

Next
Next
End Sub

Lezeps ;-))
Commenter la réponse de ZEPS256
Messages postés
12
Date d'inscription
mardi 17 avril 2012
Statut
Membre
Dernière intervention
3 mai 2012
0
Merci
Rebonjour tout le monde

Tout d'abord merci de votre aide la deuxieme valeur de la fonction mid donne la Position du caractère dans l'argument qui est variable dans notre cas car le BP peut se trouver à n'importe quel position. Je voudrai donc que cette fonction marche a partir de "BP". Merci de votre aide
Commenter la réponse de JeanMichMich69
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
215
0
Merci
Oui ?
et alors ?
Puisque tu as extrait (dans ta variable w) la position de "BP" ===> utilise donc w comme deuxième argument de Mid !
Où est ton problème ?


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Commenter la réponse de ucfoutu
Messages postés
12
Date d'inscription
mardi 17 avril 2012
Statut
Membre
Dernière intervention
3 mai 2012
0
Merci
Le Probleme est que j'ai une erreur '5' Argument ou appel de procédure incorrect. Du a ce W
Commenter la réponse de JeanMichMich69
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
215
0
Merci
Et cela t'étonne ? vraiment ?
Regarde comment tu as déterminé w
w = InStr(1, "BP")

ouvre ton aide sur la fonction Instr.
dans ce que tu as écrit, w = 0 (forcément)
et comme Mid ne peut extraire qu'à partir d'une position >0, ma foi>> plantage !
Tu devrais te concentrer un peu sur les fonctions (de base) que tu utilises


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Commenter la réponse de ucfoutu
Messages postés
12
Date d'inscription
mardi 17 avril 2012
Statut
Membre
Dernière intervention
3 mai 2012
0
Merci
J'ai corrige le code et ça fonctionne enfin presque :


Sub test_II()


With Range("A1:A" & [A65536].End(xlUp).Row).SpecialCells(xlCellTypeConstants)
For i = 1 To .Rows.Count
SearchString = .Cells(i, 1).Value
SearchChar = "BP"
w = InStr(SearchString, SearchChar)
If .Cells(i, 1) Like "*BP*" Then
Valeu = Mid(SearchString, w, 6)
.Cells(i, 3).Value = Valeu
End If
Next
End With

End Sub

J'aimerais maintenant pouvoir prolonger ou réduire l'extraction en fonction du nombre de numéro après BP car la en effet c'est fixe il suffit par exemple que j'ai JJEJEJE BP 5000 JIII pour qu'il me donne BP 50 alors que je veux extraire le BP5000 aurait tu une solution ou une piste..

Merci d'avance pour ton aide précieuse :)
Commenter la réponse de JeanMichMich69
Messages postés
12
Date d'inscription
mardi 17 avril 2012
Statut
Membre
Dernière intervention
3 mai 2012
0
Merci
Sub test_II()


With Range("A1:A" & [A65536].End(xlUp).Row).SpecialCells(xlCellTypeConstants)
For i = 1 To .Rows.Count
SearchString = .Cells(i, 1).Value
SearchChar = "BP"
w = InStr(SearchString, SearchChar)
If .Cells(i, 1) Like "*BP*" Then
Valeu = "BP" & Val(Mid(SearchString, InStr(SearchString, "BP") + 2))
.Cells(i, 3).Value = Valeu
End If
Next
End With

End Sub


REPONSE ACCEPTEE
Merci grandement, il me restera plus qu'a porter ce boud de code sur toutes les colonnes mais ça ne va pas être bien long.


Je te remercie pour ton aide.
Commenter la réponse de JeanMichMich69