VBA : Rechercher une chaine de caractères dans une autre

laurene13

XLDnaute Nouveau
Bonjour,

Je voudrais à l'aide de VBA rechercher une chaîne de caractères dans une cellule, sachant que la cellule ne contient pas que la chaîne de caractères recherchée.

J'utilise la fonction find de la façon suivante :

Code:
With Worksheets("Extract BAAN").Range(Cells(1, 1), Cells(derniere_ligne_extract, 5))

Set cel = .Find(entite, LookIn:=xlValues)

End With

Sachant que la variable entite contient une chaîne du type "LOG CMN" et que la cellule qu'il doit trouver est de ce type (tous ces caractères de cette façon dans la cellule, avec des espaces au milieu):

Date : 18/09/08 [18:01] LOG CMN Reporting Département LOG CMN Page : 6

La fonction Find n'a pas l'air de trouver étant donné que cel est vide.

Avez-vous une idée ?

Merci de votre aide,

Laurene13
 

pierrejean

XLDnaute Barbatruc
Re : VBA : Rechercher une chaine de caractères dans une autre

bonjour laurene13

Et bienvenue sur XLD

Teste

Code:
Set cel = .Find(entite, LookIn:=xlValues[COLOR=blue],lookat:=xlPart[/COLOR])

Nb: Il est bon de toujours definir LookIn et LookAt sinon Excel reprend les dernieres valeurs existantes
 

laurene13

XLDnaute Nouveau
Re : VBA : Rechercher une chaine de caractères dans une autre

Merci !!

J'ai regardé l'aide de VBA, je vois ce que tu veux dire, mais ca ne marche pas.

Le problème vient peut être alors d'autre chose.

L'entité est reconnue comme "LOG CMN", donc peut-être qu'il cherche dans la chaîne les double côtes avec ? Qu'en penses-tu ?

Merci
 

Staple1600

XLDnaute Barbatruc
Re : VBA : Rechercher une chaine de caractères dans une autre

Bonjour laurene13, pierrejean


EDITION:
Code:
Sub test_II()
With Range("A1:A" & [A65536].End(xlUp).Row).SpecialCells(xlCellTypeConstants)
    For i = 1 To .Rows.Count
        If .Cells(i, 1) Like "*LOG CMN*" Then
        .Cells(i, 2) = "X"
        End If
    Next
End With
End Sub


Ici colonne A traitée
Code:
Sub test_i()
For i = 1 To [a65536].End(xlUp).Row
If Cells(i, 1) Like "*LOG CMN *" Then
Cells(i, 2) = "chaine trouvée"
End If
Next

End Sub
 
Dernière édition:

laurene13

XLDnaute Nouveau
Re : VBA : Rechercher une chaine de caractères dans une autre

Pierrejean,

La variable entite contient des chaînes de texte, je l'ai déclarée en string. Ce sont des noms d'entité, du type XXX XX (X étant des lettres).

La cellule contient une chaîne de texte assez longue en général avec des espaces entre les mots. En gros c'est un extract d'une application interne vers Excel, donc c pas du tout génial en termes de présentation.

Staple1600, mon entité ("LOG CMN" dans mon exemple) est variable, donc je ne sais pas si je peux faire ce que tu me dis. Si ?

Merci beaucoup.
 

CelluleVide

XLDnaute Occasionnel
Re : VBA : Rechercher une chaine de caractères dans une autre

Bonjour laurene13, pierrejean, Stapple1600

Le code de Stapple1600 modifié et commenté pour utiliser les terme contenus dans une plage selectionnée:

Sub test_i()
For i = 1 To [a65536].End(xlUp).Row 'La recherche se fait sur les chaines de la colonne A
For Each cel In Selection
MonMot = cel.Value 'Prend la valeur dans la liste
If Cells(i, 1) Like "*" & MonMot & "*" Then 'Cherche la valeur dans la chaine
Cells(i, 9) = MonMot " renvoie en colonne G la valeur trouvée
End If
Next cel
Next
End Sub

A+
 

pierrejean

XLDnaute Barbatruc
Re : VBA : Rechercher une chaine de caractères dans une autre

Re

tant que nous n'aurons pas des exemples concrets , il nous sera impossible de t'aider
Je réitere
Peux-tu preciser le contenu de la variable entité (un exemple concret STP) ainsi que celui (exemple concret ) de la cellule ou le find est censé le trouver ?
 

laurene13

XLDnaute Nouveau
Re : VBA : Rechercher une chaine de caractères dans une autre

Pardon, je n'avais pas compris ca.

Voila un exemple de la feuille ou je dois reperer mes entites (en pj):

Et les entités de cet exemple sont INH et INR, ce sont les chaînes a trouver dans la cellule (i,1).(i étant la ligne que je voudrais identifier)

Merci,
Laurene13
 

Pièces jointes

  • Exemple.xls
    24.5 KB · Affichages: 508
  • Exemple.xls
    24.5 KB · Affichages: 543
  • Exemple.xls
    24.5 KB · Affichages: 549

Staple1600

XLDnaute Barbatruc
Re : VBA : Rechercher une chaine de caractères dans une autre

Re


Code:
Sub test_III()
For i = 1 To [A65536].End(xlUp).Row
    If Cells(i, 1) Like "*I??*" Then
    MsgBox Cells(i, 1)
    End If
    Next
End Sub

Code:
Sub test_IV()
Dim i As Long
Dim x As String
For i = 1 To [A65536].End(xlUp).Row
    If Cells(i, 1) Like "*I??*" Then
    x = Mid(Cells(i, 1).Text, InStr(1, Cells(i, 1).Text, ":") + 1, 10)
    MsgBox "Date trouvée : " & CDate(Application.Trim(x)) & _
    Chr(13) & "en: " & Cells(i, 1).Address(0, 0) _
    & "  (ligne " & Cells(i, 1).Row & ")"
    End If
    Next
End Sub
 
Dernière édition:

laurene13

XLDnaute Nouveau
Re : VBA : Rechercher une chaine de caractères dans une autre

J'ai adapté ton code à mon cas, et ca marche très bien. Maintenant, j'ai d'autres problèmes:)

Merci beaucoup de votre aide tous les trois,

Bonne soiree

Desolee pour le delai de reponse.....
 

laurene13

XLDnaute Nouveau
Re : VBA : Rechercher une chaine de caractères dans une autre

Laurene13,

Vois si le fichier te convient...

A+

Hello, j'ai donc essaye, mais le souci que j'ai et je n'ai pas trouve comment le contourner est le suivant :

J'ai deux entites qui s'appellent LOG et LOG CMN -> Ces deux entites sont confondues avec la fonction Like * ...

Tu as une idee ?

Peut etre du coup en utilisant la 2e soluce de staple 1600 ?

Merci encore.....
 

pierrejean

XLDnaute Barbatruc
Re : VBA : Rechercher une chaine de caractères dans une autre

Re

avec la methode Find (voir aide de findnext)

Code:
Sub test()
entité = "IN"
Set c = ActiveSheet.Columns(1).Find(entité, LookIn:=xlValues, lookat:=xlPart)
If Not c Is Nothing Then
  firstAddress = c.Address
      Do
        MsgBox (c.Address)
        Set c = ActiveSheet.Columns(1).FindNext(c)
      Loop While Not c Is Nothing And c.Address <> firstAddress
End If
End Sub
 

Pièces jointes

  • laurene_Exemple.zip
    6.5 KB · Affichages: 386

Discussions similaires

Réponses
12
Affichages
529

Statistiques des forums

Discussions
312 217
Messages
2 086 353
Membres
103 196
dernier inscrit
N-TR86