VBA - Recherche le texte contenu dans une cellule dans une autre cellule

Bonjour à tous,

Je suis en train de faire une macro qui se base sur un tableau dynamique, et qui met en rouge les erreurs. Parmi les erreurs à détecter, j'aimerai que ma macro cherche le texte de chaque cellule d'une colonne nommée "CPY Doc Reference 3rd part" et vérifie que ce texte est contenu dans le texte de chaque cellule d'une colonne nommée "CPY Doc Reference 3rd part JSM-0241".

Par exemple :

J'ai dans ma cellule M2 le texte "J02", et dans ma cellule N2 le texte "J02J03". J'aimerais que ma macro puisse détecter que le texte "J02" est bien contenu dans "J02J03" et ne surligne pas la cellule M2 comme une erreur. J'ai regardé la fonction InStr(), mais je n'arrive pas à trouver de cas où au lieu de mentionner directement le texte, on mentionne la cellule directement, car le texte va varier d'une cellule à l'autre, et de fait ne peut être fixe.

Pour le moment, j'en suis là :

'Checking if the third part of the Company Document Reference in the column M (CPY Doc Reference 3rd part) match with the corresponding part in the JSM-0241

Dim zp As Long, ap As Integer, bp As Integer

ap = Sheets("VendorDocument").ListObjects("Table1").ListColumns("CPY Doc Reference 3rd part").Index

bp = Sheets("VendorDocument").ListObjects("Table1").ListColumns("CPY Doc Reference 3rd part JSM-0241").Index

dl = Cells(Rows.Count, ap).End(xlUp).Row

For zp = 1 To dl

If ActiveSheet.ListObjects("Table1").DataBodyRange(zp, ap).Value Like ActiveSheet.ListObjects("Table1").DataBodyRange(zp, bp) Then

Else

'Applying a red color to the cells in column M (CPY Doc Reference 3rd part) when the value in the column N (CPY Doc Reference 3rd part JSM-0241) is incorrect

ActiveSheet.ListObjects("Table1").DataBodyRange(zp, ap).Interior.Color = vbRed

End If

Next zp

Mais ça ne marche pas, la cellule est quand même surlignée en rouge lorsque son texte est contenu dans l'autre cellule.

Auriez-vous des idées ou un peu d'aider à m'apporter ?

Merci d'avance, très bonne journée à vous !

Bonjour,

un essai:

.../...
If ActiveSheet.ListObjects("Table1").DataBodyRange(zp, ap).Value Not Like "*" & ActiveSheet.ListObjects("Table1").DataBodyRange(zp, bp) & "*" Then

'Applying a red color to the cells in column M (CPY Doc Reference 3rd part) when the value in the column N (CPY Doc Reference 3rd part JSM-0241) is incorrect
ActiveSheet.ListObjects("Table1").DataBodyRange(zp, ap).Interior.Color = vbRed
End If
.../...

A+

Bonjour,

un essai:

.../...
If ActiveSheet.ListObjects("Table1").DataBodyRange(zp, ap).Value Not Like "*" & ActiveSheet.ListObjects("Table1").DataBodyRange(zp, bp) & "*" Then

'Applying a red color to the cells in column M (CPY Doc Reference 3rd part) when the value in the column N (CPY Doc Reference 3rd part JSM-0241) is incorrect
ActiveSheet.ListObjects("Table1").DataBodyRange(zp, ap).Interior.Color = vbRed
End If
.../...

A+

Merci pour ton retour !

Malheureusement, VBA n'accepte pas cette formule, ça me met "Compile error : Expected: expression" et ça surligne le "Like".

Bah ! oui; écrit trop vite et sans test!!.

plutôt :

If Not ActiveSheet.ListObjects("Table1").DataBodyRange(zp, ap).Value  Like "*" & ActiveSheet.ListObjects("Table1").DataBodyRange(zp, bp) & "*" Then

A+

Bah ! oui; écrit trop vite et sans test!!.

plutôt :

If Not ActiveSheet.ListObjects("Table1").DataBodyRange(zp, ap).Value  Like "*" & ActiveSheet.ListObjects("Table1").DataBodyRange(zp, bp) & "*" Then

A+

Merci ! La formule est valide, mais ça met toujours en rouge si dans M2 il y a écrit "J02" et que dans N2 il y a "J02J03", malheureusement !

Malheureusement, sans classeur pour tester, je ne pourrai être d'aucun secours.

A+

Malheureusement, sans classeur pour tester, je ne pourrai être d'aucun secours.

A+

Bonjour,

Voici un extrait de mon classeur, avec les colonnes qui posent problème telles qu'elles sont après avoir lancé la macro dans son état actuelle, ainsi que l'extrait de la macro correspondant.

Encore merci de votre aide et bonne journée !

Pourquoi fournir le code de la macro d'un coté et le classeur de l'autre . Il n'existait pas un classeur contenant la macro ??

Terminé pour moi .

Bonne suite

Le classeur est généré depuis une base de données, alors il faut importer la macro dedans quand on fait l'extrait dans tous les cas, c'est pourquoi la macro ne lui est pas jointe.

Quand vous dîtes terminé, c'est que vous n'avez pas de solution ?

Dans tous les cas, merci beaucoup d'avoir pris le temps de vous pencher sur mon problème.

Rechercher des sujets similaires à "vba recherche texte contenu"