Recherche avec condition + concaténation

Re bonjour,

Cette fois ci je reviens vers vous avec un vrai problème :

J'explique la situation.

J'ai une feuille avec en colonne A une liste de diplôme, colonne B leur programme et colonne C des mots clés correspondants.

J'ai déjà eu l'occasion de recevoir de l'aide pour concaténer la liste des diplomes concernés, en fonction d'une recherche qui alimentait une cellule en colonne D ( si le mot "rech" était trouvé en colonne A, B, ou C, une valeur s'affichait ).

Mai tenant, par souci de propreté dans le fichier, je souhaiterai que tout soit fait en VB, et à l'aide d'un formulaire pour que le fichier n'ait pas des colonnes supplémentaires qui entravent une lecture propre.

En gros dans une Msgbox s'affiche le résultat de la recherche : la liste des diplômes qui ont le mot clé quelque part ( nom, programme, mot clé )

le formulaire fonctionne sous plusieurs aspects, il ne me reste que la concaténation des noms de diplômes en fonction de la recherche d'un mot clé.

Voici le code que j'ai essayé de bricoler.

' rechercher les diplômes correspondants

Private Sub cmdbtrech_Click()

If Trim(Me.motcle) = "" Then

MsgBox "Veuillez saisir un mot clé"

Exit Sub

End If

With Me.listdiplome

.MultiLine = True

.Value = CONCAT_SI("A2:C200", Me.motcle, "A2:C200")

End With

End Sub

Function CONCAT_SI(R1 As Range, Rech As String, R2 As Range) As String

Dim CL As Range

Dim CHN As String

Dim Pris As String

For Each CL In R1

If InStr(CL, "me.motcle") <> 0 Then

If InStr(1, Pris, "," & Cells(CL.Row, R2.Column).Address) = 0 Then

CHN = CHN & vbLf & Cells(CL.Row, R2.Column).Value

Pris = Pris & "," & Cells(CL.Row, R2.Column).Address

End If

End If

Next

CONCAT_SI = Mid(CHN, 2) 'Trim(CHN)

End Function

il m'écrit qu'il y a une incompatibilité de type en me surlignant Private Sub cmdbtrech_Click().

si quelqu'un a une idée.

en vous remerciant.

Bonjour

Ton fichier aurait plus utile

Remplaces cette ligne

If InStr(CL, "me.motcle") <> 0 Then

par

If InStr(CL,Rech) <> 0 Then

Désolé

le voici avec des données test


sans titre pngss

Voici la méthode que j'utilisai jusqu’à présent pour la recherche

16recherche-copie.zip (19.63 Ko)

Bonjour

Pas tout compris

T'es vraiment une bête !

Merci beaucoup.

Si tu as pas tout compris c'est que le reste du code correspondait au fichier original qui est beaucoup plus gros.

Est ce que tu peux m'expliquer ce que tu as modifié stp. Que je me couche moins stupido.

Bonjour

J'ai modifié cette ligne

.Value = CONCAT_SI("G2:Y200", Me.motcle, "G2:G200")

par

.Value = CONCAT_SI(Range("A2:D6"), Me.motcle, Range("A2:A6"))

ensuite j'ai modifié cette ligne : j'y ai rajouté le mode de comparaison (pas de distinction entre minuscule et majuscule)

If InStr(1, CL, Rech, vbTextCompare) <> 0 Then

Je crois que c'est tout

Rechercher des sujets similaires à "recherche condition concatenation"