Recherche mots cellule

chop85

XLDnaute Nouveau
Bonjour,

Quels sont les fonctions vba que l'on peut utiliser dans une macro pour effectuer une recherche dans une cellule et en fonction du résultat insérer du texte prédéfini dans une autre cellule.

Ex. :
Recherche sur la colonne "D" la présence des mots 'test1' et 'test2' sur la même cellule et si présence de ces valeurs dans une cellule Dx, insérer du texte dans la cellule Hx (x sera le même numéro de ligne que pour la cellule Dx).

J'espère avoir été assez clair.

Merci pour votre aide.
 

Etienne2323

XLDnaute Impliqué
Re : Recherche mots cellule

Salut Chop85,
tout d'abord, bienvenue sur le forum ! En ce qui concerne votre problème, je suis loin d'être certain d'avoir compris l'explication. Sans fichier exemple, très difficile de pondre un exemple qui corresponde exactement à ce que vous recherchez.

Ceci dit, la méthode que j'utilise pour faire une recherche est la suivante :

Code:
Dim Cellule, Lig
Dim Ligne As Integer

Cellule = Range("A1").Value 'A adapter en fonction de la cellule de référence

Set Lig = Range("D1:D65536").Find(Cellule, LookIn:=xlValues, LookAt:=xlWhole)
If Not Lig Is Nothing Then Ligne = Lig.Row

Si vous souhaitez faire une recherche sur une partie seulement de la cellule, alors vous pouvez remplacer
Code:
LookAt:=xlWhole
par
Code:
LookAt:=xlPart

Également, si vous souhaitez faire une gestion de la possibilité que la recherche ne trouve pas la valeur souhaitée, alors vous pouvez remplacer les lignes suivantes :
Code:
Set Lig = Range("D1:D65536").Find(Cellule, LookIn:=xlValues, LookAt:=xlWhole)
If Not Lig Is Nothing Then Ligne = Lig.Row

par celles-ci
Code:
Set Lig = Range("D1:D65536").Find(Cellule, LookIn:=xlValues, LookAt:=xlWhole)
If Not Lig Is Nothing Then
    Ligne = Lig.Row
Else
    Exit Sub 'À remplacer par votre plan B
End If
Au plaisir de vous relire,

Cordialement,

Étienne
 
Dernière édition:

Etienne2323

XLDnaute Impliqué
Re : Recherche mots cellule

Rebonjour Chop85,
voici une ébauche qui pourrait peut-être vous convenir.

J'ai pris les hypothèses suivantes :
1) Vous mettez les possibilités de texte à rechercher dans la colonne A
2) La colonne de recherche pour les mots trouvés en colonne A est la colonne D
3) On écrit le résultat dans la colonne H

Voici donc le bout de code. Je l'ai commenté pour que vous puissiez vous y retrouver.


VB:
Sub test()

Dim Valeur, Cellule, Lig, Texte(1 To 100)
Dim i As Integer, DerniereLigne As Integer, Ligne As Integer

'On va inscrire le texte que vous souhaitez mettre dans la colonne H
Texte(1) = "Texte si on tombe sur Test1"
Texte(2) = "Texte si on tombe sur Test2"
Texte(3) = "Texte si on tombe sur Test3"
'Vous pourriez rajouter ici le nombre de variables que vous désirez


'Il s'agit de trouver la dernière ligne de la colonne A
DerniereLigne = Cells(65536, 1).End(xlUp).Row

'On va faire une boucle pour chacun des mots de recherche de la colonne A
For i = 1 To DerniereLigne
    Valeur = Cells(i, 1).Value
    With Range("D1:D65536") 'On va faire une recherche dans la colonne D
        Set Lig = .Find(Valeur, LookIn:=xlValues, LookAt:=xlWhole)
        If Not Lig Is Nothing Then
            PremierResultat = Lig.Address
            Do 'On va faire une grosse loop sur la colonne D pour trouver chacun des emplacements
            'ou se trouve le mot de recherche de la colonne A. À chaque fois, on mettera dans la
            'colonne A le texte correspondant
                Cells(Lig.Row, 8).Value = Texte(i)
                Set Lig = .FindNext(Lig) 'Cherche le prochain
            Loop While Not Lig Is Nothing And Lig.Address <> PremierResultat 'On continu à chercher
            'tant qu'on trouve le mot de la colonne A
        End If
    End With
Next i

End Sub

Bonne continuité,

Étienne
 
Dernière édition:

Discussions similaires

Réponses
2
Affichages
212

Statistiques des forums

Discussions
312 535
Messages
2 089 387
Membres
104 154
dernier inscrit
Patou