Concatener avec condition

Bonjour à tous !

Je vais essayer d'expliquer mon problème clairement :

sadsad10

voici le code de ConcatSi, dont le résultat est affiché en F10 ( on voit bien les doublons ) :

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

Dim CL As Range

Dim CHN As String

For Each CL In R1

If CL.Value = Rech.Value Then

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

End If

Next

CONCAT_SI = Trim(CHN)

End Function

J'espère que j'ai été clair

Merci d'avance

32classeur-tri.zip (9.11 Ko)

Bonjour

A tester

Function CONCAT_SI(R1 As Range, Rech As Range, R2 As Range)
Dim CL As Range
Dim CHN As String
Dim Pris As String

  For Each CL In R1
    If CL.Value = Rech.Value 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

Rapide et efficace !!

Du vrai travail de pro, merci beaucoup !

Bonjour à tous et merci encore

Je sais que je vais pousser le bouchon un peu loin, mais serait - il possible de rendre le résultat de la fonction sous la forme d'une liste déroulante ?

afin de pouvoir utiliser l'ensemble des occurrences pour, par exemple, effectuer une recherche.

je joins un fichier un peu plus élaboré pour illustrer.

merci d'avance !

10classeur-tri.zip (11.37 Ko)

Bonjour

Dans l'état actuel de mes connaissances je ne crois pas possible qu'à partir d'une fonction on puisse générer une liste qui servira à une liste de validation

Quelqu'un le sait peut-être

Désolé

C'est déjà super sympa de chercher à m'aider !! Et vous m'avez déjà pas mal dépanné.

Merci à vous

Bonjour à tous,

une dernière demande et après j’arrête de vous embêter avec mes problèmes.

Pourriez vous m'aider à réaliser un petit formulaire, pour des raisons de présentation, qui permette :

- dans un premier temps : de saisir un mot clé qui alimenterai la case B16

- dans un deuxième temps : qui afficherait le résultat de la case D16 ( une formule qui utilise le contenu de B16 )

Merci beaucoup

9classeur-tri.zip (13.18 Ko)

Bonjour

Vérifies

C'est nickel, juste une modification à ajouter si possible.

Sur le clic, ce que je voudrais, c'est que le résultat de D16 s'affiche dans une textbox sur un autre formulaire ( textbox qu'on ne pourrait pas modifier )

J'ai essayé de voir ce que je pouvais faire à partir de ce que tu viens de m'envoyer, mais apparemment je suis une vrai buse en VB, va falloir que je m'y mette sérieusement.

En plus de ton aide, qu'est ce que tu me conseillerais pour commencer à m'initier au vb ?

Encore merci

Bonjour

Pas loin d'avoir trouvé

Il faut remplir la TextBox avant de l'afficher (dans ce cas)

Indiquer que le TextBox peut avoir plusieurs lignes

Remplaces ta macro par celle-ci

Private Sub CommandButton1_Click()
' rechercher les UD DIU correspondant
  If Trim(Me.TextBox1) = "" Then
    MsgBox "Inscrire une valeur"
    Exit Sub
  End If
  Range("B16") = Me.TextBox1
  Range("D16") = CONCAT_SI(Range("H3:I5"), Range("C16"), Range("B3:B5"))
  With UserForm2.TextBox1
    .MultiLine = True
    .Value = Range("D16")
  End With
  UserForm2.Show
End Sub

Impeccable !

Rechercher des sujets similaires à "concatener condition"