Recherche avec condition + concaténation des résultats

UTratturi

XLDnaute Nouveau
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.
 

Paf

XLDnaute Barbatruc
Re : Recherche avec condition + concaténation des résultats

Bonjour,

Vous appelez une sub en lui passant des Strings ("A2:C200") alors que la sub attend du Range => incompatibilité de type .

Préciser le range comme par exemple:
.Value = CONCAT_SI(Sheets("Lien-DU-DIU").Range("G2:Y200"), Me.motcle, Sheets("Lien-DU-DIU").Range("G2:G200"))

Bonne suite
 

Discussions similaires

Statistiques des forums

Discussions
312 083
Messages
2 085 189
Membres
102 809
dernier inscrit
Sandrine83