Remplir cellule en fonction de TROUVE

Bonjour à toutes et à tous,

Je souhaite qu'une cellule se remplisse en fonction de ce qu'elle trouve dans une autre.

Par exemple, si ça trouve le mot "VMC", je souhaite que ça marque "Privilégier une Ventilation Mécanique Répartie dans les pièces humides : salles de bain, sanitaires (surtout lorsqu'ils sont aveugles) et cuisine". Si ça trouve le mot "Porte", je souhaite que ça marque "Pour assurer un renouvellement d’air optimum, les fenêtres des pièces principales doivent impérativement être équipées d’entrée d’air (hygro de préférence), sauf s’il existe déjà des entrées d’air en façade". Et ainsi de suite (il y a beaucoup plus de cas, mais c'est pour comprendre la manière dont je dois procéder pour que ça puisse fonctionner).

Je souhaite m'affranchir du système de menu déroulant. L'idée est vraiment que ça se remplisse tout seul (sachant que j'ai une autre colonne qui se remplira automatiquement aussi en fonction de ce que ça trouvera dans telle ou telle cellule).

Je vous joins le fichier pour plus de clarté.

Merci à toutes et à tous pour votre aide.

Belle journée.

19fichier-test.xlsx (29.32 Ko)

bonjour

un essai

50freewor.xlsx (11.24 Ko)

cordialement

Super,

Merci beaucoup pour votre rapidité ! Je ne connaissais pas cette formule.

Bien à vous,

Bonjour Freewor, Tulipe, bonjour le forum,

Une proposition VBA. j'ai supprimé la fusion des cellules (pas vraiment amie de VBA) et rajouté un onglet contenant les résultats (en ligne). Il te faudra compléter, dans le code, le tableau des mots clé TM et le tableau des résultats TR (en mettant l'adresse de la cellule du résultat).

Tape dans une cellule de la colonne A un texte contenant un mot clé...

Le code :

Option Base 1

Private Sub Worksheet_Change(ByVal Target As Range)
Dim TM() As Variant 'déclare la variable TM (Tableau des mots)
Dim TR() As Variant 'déclare la variable TR (Tableau des Résultats)

If Target.Column <> 1 Then Exit Sub 'si le changement a lieu ailleurs que dans la colonne 1 (=A), sort de la procédure
If Target.Value = "" Then Target.Offset(0, 1).Value = "": Exit Sub 'si la cellule est effacée, efface la cellule de la colonne B et sort de la procédure
TM = Array("vmc", "porte") 'définit le tableau des mots (ici tu diot rentrer la liste des mots clé)
TR = Array("A6", "A1") 'définit le tableau des résultats (ici la liste des adresse respectives des résultats)
For I = 1 To UBound(TM) 'boucle sur tous les mots clé
    If InStr(1, Target.Value, TM(I), vbTextCompare) <> 0 Then 'si la cellule édité contient un mot clé
        'renvoie dans la cellule de la colonne B le texte de la cellule dont l'adresse correspond à l'index I du tableau TR
        Target.Offset(0, 1).Value = Worksheets("Feuil2").Range(TR(I)).Value
        Target.Offset(0, 1).WrapText = True 'renvoie à la ligne dans la cellule colonne B
        Exit For 'sort de la boucle
    End If 'fin de la condition
Next I 'prochain mot clé de la boucle
End Sub
20freewor-v01.xlsm (18.89 Ko)

re

complement d'info

TROUVE oblige d'etre precis (majuscule..........)

CHERCHE est plus generaliste

ESTNUM c'est pour escamoter les #valeur# en cas d'infructuosité

cordialement

Rechercher des sujets similaires à "remplir fonction trouve"