Modification de la valeur d'une cellule si termes absents d'une autre

Bonjour à tous,

Encore une fois je compte sur votre bienveillance et expertise pour m'aider à résoudre mon problème :

J'ai dans chaque cellule de la première colonne du feuillet Feuil1 un terme unique

Dans Feuil2, je souhaiterais vérifier que chaque terme de la première colonne de Feuill1 n'est pas présent dans la celulle (A,i), et le cas échéant écrire MAIS CEST GÉNIAL!!! dans (B,i). En revanche si au moins un de ces termes est trouvé, alors (B,i) reste inchangé.

J'ai d'abord essayé avec des imbrications de CHERCHE avec ma liste de termes, mais échec retentissant...

Ensuite j'ai essayé de bricoler quelque chose comme ça :

Dim Cel As Range
Dim J As Long

NbLig = Range("A" & Rows.Count).End(xlUp).Row

For i = ActiveSheet.UsedRange.Rows.Count To 1 Step -1

  For J = 1 To Sheets("Feuil1").Range("A" & Rows.Count).End(xlUp).Row

    Set Cel = Columns("G").Find(what:=Sheets("Feuil1").Range("A" & J), LookIn:=xlValues, lookat:=xlPart)

    If Cel Is Nothing Then
        Cells(i, 2).Value = Cells(i, 2).Value & "MAIS CEST GÉNIAL!!!"

    Else: Cells(i, 2).Value = Cells(i, 2).Value

    End If
  Next J
Next i

Je vois bien que c'est completement bancal, mais je ne trouve pas le moyen d'arranger ça.

Merci pour votre disponibilité et votre aide.

Seb

Bonjour Scarwild,

Un essai par formule:

-Feuil1 : ta liste de termes uniques (sous forme de tableau en cas d'ajout de terme).

-Feuil2: colonne B (masquée) qui cherche si valeur présente dans feuil1, colonne C n'affiche rien si valeur présente.

9classeur1.xlsx (11.23 Ko)

EDIT: .....sans colonne intermédiaire

4classeur2.xlsx (11.09 Ko)

Cordialement,

Merci xorsankukai, vénérable défenseur des mauvais utilisateurs d'excel,

Ce que tu proposes est simple et clair, toutefois j'ai besoin de petites choses en plus :

Dans la colonne A de Feuil2, je peux avoir plusieurs termes (par exemple "a q z", "a b c " , "s t z"), et d'autre part, les cellules de la colonne B dans Feuil2 ne sont pas nécessairement vides.

Comment pourrais-je améliorer ta proposition?

Re,

Version VBA:

11classeur-3.xlsm (17.12 Ko)

Cordialement,

Wow,

Mais comment faites vous pour être si réactif? Vous avez un Excel-signal qui s'allume dans votre bureau quand les personnes desepéres comme moi appellent à l'aide?

En tout cas merci beaucoup, c'est absolument parfait!

Belle fin de journée, héros des années 70/80.

Re,

Ravi d'avoir pu t'aider....

Mais il reste un petit souci:

Dans la colonne A de Feuil2, je peux avoir plusieurs termes (par exemple "a q z", "a b c " , "s t z")

Attention, ça ne fonctionne pas correctement si tu as plusieurs lettres:

par exemple, "a q z" : bien que a soit présent dans la feuille 1, tu as le message "Mais c'est génial!"

@+

Bon, je me suis peut-être emballé trop vite, mais la solution est proche.

Quand je teste votre code avec "a z" dans (A,14) Feuil2, la macro fait que Génial apparait dans (B,14)alors que la présence de "a" devrait faire que (B,14) ne devrait pas se modifier.

Et je me rends compte que mes notifications ne sont pas au point et que vous avez identifié le problème avant moi...

vous avez identifié le problème avant moi..

Mais je ne suis pas sur de pouvoir t'aider.....ça complique la tâche,

Si un pro passe dans le coin.....

Cordialement,

Bonjour,

Vous n'êtes pas loin je pense, mais il faudrait d'abord décomposer le contenu de la cellule dans une variable tableau à l'aide de la fonction Split("a z", " "), et c'est chaque élément du tableau que l'on cherche ensuite. S'il n'y a pas d'espace, le tableau n'aura qu'un élément.

Appel aux Pros donc!

Pleaaaaaase... Help!

Bonjour Pedro22,

il faudrait d'abord décomposer le contenu de la cellule dans une variable tableau à l'aide de la fonction Split("a z", " ")

J'essayais de faire une boucle sur chaque lettre du mot pour voir si elle était présente en feuil1....mais je n'y parviens pas et mon esprit s'embrouille

Si tu as une solution avec split (que je ne maitrise pas du tout, ni les tableaux d'ailleurs ), je suis interessé

Cordialement,

Bonjour Pedro, et tout d'abord merci pour la piste,

Toutefois je suis vraiment un grand novice en vba, et mes notions de programmations datent d'il y a pas loin de 20 ans...

De plus si dans l'exemple fourni par xor... (désolé pour le raccourci), il n'y a que 3 lettres, mes cellules sont remplies de texte pouvant aller jusqu'à 500 mots, et il faut que je teste une vingtaine de termes.

Je souhaitais trouver quelque chose de plus "esthétique" et plus court que

If... and ... and... and... (...) and... Then ...

Car je suis amené à devoir refaire ce genre de trien de multiples occasions.

Merci!

@ Xorsenkukai

mais je n'y parviens pas et mon esprit s'embrouille

Hé bien ça me rassure presque^^, et me désole pour vous...

Je n'avais ouvert aucun fichier et j'ai lu un peu rapidement.

Si on re-pose le sujet, ce qui t'intéresse c'est de :

1. Savoir si (une cellule contenant) un mot est contenu dans (une cellule contenant) une phrase ?

2. Savoir si dans une cellule contenant plusieurs mots, tous sont contenus dans une phrase (sans mot intercalaire, c'est à dire s’enchaînant de la même manière) ?

3. Savoir si dans une cellule contenant plusieurs mots, au moins un est contenu dans une phrase ?

Exemples :

1. "Avion" --> "J'ai pris l'avion" (ça marche)

2. "Avion puis le bateau" --> "J'ai pris l'avion puis le bateau" (ça marche)

2. "Avion puis le bateau" --> "J'ai pris l'avion côté hublot puis le bateau" (ça ne marche pas)

3. "Avion bateau" --> "J'ai pris l'avion puis le bateau" (ça marche)

3. "Avion bateau" --> "J'ai pris l'avion côté hublot puis le bateau" (ça marche)

Pedro,

La réponse est 3!

et je complèterai avec :

"Avion Bateau" --> J'ai conduit la voiture puis pris le bateau (ça marche)

"Avion Bateau" --> J'ai conduit la voiture puis pris le train (ça marche pas)

Les termes "avion" et "bateau" sont chacun contenus dans une cellule différente de la colonne A d'un feuillet, les phrases à tester dans un autre feuillet.

Besoin de plus de précisions?

Si la réponse est n°3, il faudrait ajouter un code du genre :

MaTab = Split(f2.Range("A" & i), " ")
For n = 0 To UBound(MaTab)
       Set Resultat = f1.Range("A:A").Find(MaTab(n), lookat:=xlPart)
       If Not Resultat Is Nothing Then Exit For
Next n

Sinon le code actuel est valide, il faut juste changer une option dans "Find" --> "lookat:=xlWhole" devient "lookat:=xlPart"

Re,

Besoin de plus de précisions?

Il est vrai qu'un fichier représentatif avec en feuil1 les critères, en feuil2 les phrases en question et le résultat attendu, aurait été le bienvenu et aurait aidé à la compréhension du problème ,

Bravo Pedro pour avoir correctement posé le problème,

Slts,

Les termes "avion" et "bateau" sont chacun contenus dans une cellule différente de la colonne A d'un feuillet, les phrases à tester dans un autre feuillet.

2. Savoir si dans une cellule contenant plusieurs mots, tous sont contenus dans une phrase (sans mot intercalaire, c'est à dire s’enchaînant de la même manière) ?

3. Savoir si dans une cellule contenant plusieurs mots, au moins un est contenu dans une phrase ?

Il y a une différence entre chercher plusieurs mots, chacun contenu dans une cellule, et chercher plusieurs mots dont certains dans la même cellule (qu'il faut donc au préalable séparer). Au final, la solution proposée par @xorsankukai doit fonctionner si tu changes le paramètre que j'ai abordé précédemment.

Appel aux Pros donc!

On les attends toujours du coup !!!

Rechercher des sujets similaires à "modification valeur termes absents"